當安裝的Proxmox VE主機中僅有一張網路卡又需要直接接入外部連線的假設情境下,就無法在單一主機中使用多個虛擬化作業系統,在此情況下就需要啟用NAT(Network Address Translation)網路位址轉發功能,然而官方出廠預設尚無在Web管理介面中提供網路NAT轉發的功能的直覺性設定,此時便需要進入PVE底層系統進行調動。
STEP 1:增加PVE虛擬網路介面
注意: 雙模式(Bridge、NAT)可以共存在一台PVE中,但不可在同一台虛擬主機啟動雙模式網卡(單一、多張均不行)使用。
創建2個虛擬網路介面
- vmbr0-與外部溝通的網路介面
- vmbr3-NAT使用的內部網路介面
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尚未生效
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
- 將編輯好後的設定檔導出進行儲存跟啟用
# 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
STEP 6:遠端連線確認狀態
使用遠端連線至虛擬機內測試設定是否生效
連線的IP需要使用外部網路的IP以及轉發後的PORT
參考網站:
———