PVE Host 兩張網卡設定 NAT 作法

  • 環境 : PVE Host 有兩張網卡
    • vmbr0(可與 Internt 連接)
    • vmbr1(不直接暴露到 Internet) IP: 10.90.90.0/24
  • 目標 : 不對外提供服務的 VM (使用 vmbr1) 要能夠連出去 Internet
  • Exp. pve-76 (vmbr0:61.67.100.123, vmbr1:10.90.90.76) 當 Gateway
  1. 啟用 IP 轉發

     vi /etc/sysctl.conf

    :
    net.ipv4.ip_forward=1
    :
  2. 立即生效

    sysctl -p

  3. 安裝 iptables-persistent

    apt update
    apt install iptables-persistent

  4. 持久化配置

    vi /etc/systemd/system/pve-nat.service

    [Unit]
    Description=PVE NAT Configuration
    After=network.target
    
    [Service]
    Type=oneshot
    ExecStart=/bin/bash -c 'iptables -A FORWARD -i vmbr1 -o vmbr0 -j ACCEPT; iptables -A FORWARD -i vmbr0 -o vmbr1 -m state --state RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.90.90.0/24 -o vmbr0 -j MASQUERADE'
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
  5. 啟用服務:

    systemctl enable pve-nat.service
    systemctl start pve-nat.service

  • netplan
  1. 編輯 netplan 設定檔 Exp.

    sudo vi /etc/netplan/50-cloud-init.yaml

    network:
      version: 2
      ethernets:
        ens18:
          addresses:
          - "10.90.90.29/24"
          nameservers:
            addresses:
            - 1.1.1.1
            - 8.8.8.8
            search: [ichiayi.com]
          routes:
          - to: "default"
            via: "10.90.90.76" 
  2. 讓設定檔生效

    sudo netplan apply

  3. 查看網路配置

    sudo ip route show

    default via 10.90.90.76 dev ens18 proto static
    10.90.90.0/24 dev ens18 proto kernel scope link 10.90.90.29
    :
    :
  • claude.ai (Sonnet 4)
  • tech/pve_network.txt
  • 上一次變更: 2025/06/09 19:20
  • jonathan