當安裝的Proxmox VE主機中僅有一張網路卡又需要直接接入外部連線的假設情境下,就無法在單一主機中使用多個虛擬化作業系統,在此情況下就需要啟用NAT(Network Address Translation)網路位址轉發功能,然而官方出廠預設尚無在Web管理介面中提供網路NAT轉發的功能的直覺性設定,此時便需要進入PVE底層系統進行調動。

STEP 1:增加PVE虛擬網路介面

注意: 雙模式(Bridge、NAT)可以共存在一台PVE中,但不可在同一台虛擬主機啟動雙模式網卡(單一、多張均不行)使用。

創建2個虛擬網路介面

  1. vmbr0-與外部溝通的網路介面
  2. vmbr3-NAT使用的內部網路介面

pve-nat-01

 

STEP 2:修改PVE網路參數

# nano /etc/network/interface

iface vmbr0 inet static
address xxx.xxx.xxx.xxx(外部網路IP)/24(掩碼不一定是24)
gateway xxx.xxx.xxx.xxx (外部網路閘道,需要向ISP索取,如果是PPPoE需要安裝PPPoE套件)

bridge-ports enp3s0 (PVE使用的實體網路卡代號)
bridge-stp off
bridge-fd 0

auto vmbr3
iface vmbr3 inet static
address 192.168.90.254/24 (內部網路網段,自由定義)
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
(開啟網路IPv4轉發功能;亦可以直接修改 echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf && sysctl -p)

post-up iptables -t nat -A POSTROUTING -s '192.168.90.0/24' -o vmbr0 -j MASQUERADE
(啟動介面時同時將虛擬網卡的NAT功能防火牆規則啟用)

post-down iptables -t nat -D POSTROUTING -s '192.168.90.0/24' -o vmbr0 -j MASQUERADE

 

設定完後回到PVE的Web管理介面會看到多一張網路卡,此時NAT尚未生效

pve-nat-02

 

STEP 3:建立NAT防火牆規則

  • 安裝 iptables 永久化套件
    # apt-get install iptables-persistent

 

  • 建立 iptables For IPv4 規則設定檔
    # touch/etc/iptables/rules.v4

 

  • 將現有的防火牆規則導入設定檔進行儲存
    # iptables-save > /etc/iptables/rules.v4

 

  • 編輯設定檔加入NAT進出規則,加入圖下紅框2行
    # nano /etc/iptables/rules.v4
    pve-nat-03

 

  • 將編輯好後的設定檔導出進行儲存跟啟用
    # iptables-restore < /etc/iptables/rules.v4

 

STEP 4:設定開機啟用NAT防火牆規則

# touch /etc/network/if-pre-up.d/iptables
# chmod +x /etc/network/if-pre-up.d/iptables
# nano /etc/network/if-pre-up.d/iptables

(加入下面參數)
#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4

# reboot

 

STEP 5:建立虛擬機進行測試

虛擬機設定NAT後的IP

pve-nat-04

 

STEP 6:遠端連線確認狀態

使用遠端連線至虛擬機內測試設定是否生效
連線的IP需要使用外部網路的IP以及轉發後的PORT

pve-nat-05

 

參考網站:
———