Networking

VM 主機和髮夾 NAT 上的橋接網路

  • November 29, 2016

我有一台執行 Proxmox VE 的主機。

我設置了 3 個虛擬網橋vmbr[0-2]來處理我的網路需求:vmbr0直接在具有公共 IP 的 VM 的主界面上執行,vmbr1允許經過 NAT 的 VM,並且vmbr2是僅主機網路。假設我的主要公共 IP 是 12.34.56.78。

為了讓 NAT 正常工作,我設置了以下iptables規則集:

-A PREROUTING -d 12.34.56.78 -i vmbr0 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 192.168.1.101
# and other rules like this one for different ports to different local IPs

-A POSTROUTING -s 192.168.10.0/24 -o vmbr0 -j SNAT --to-source 12.34.56.78

現在假設我有一個vmbr1IP 為 192.168.1.102 的虛擬機。

這台機器無法使用公共 IP 12.34.56.78 訪問位於 192.168.1.101 的網路伺服器。

我最初認為POSTROUTING上面的指令足以讓髮夾式 NAT 工作。

在閱讀了從本地網路轉發公共 IP 地址的規範環回 - 髮夾 NAT和同一變體上的多個其他答案後,我嘗試了:

  • 在主機上臨時設置-P [INPUT|FORWARD|OUTPUT] ACCEPT以檢查是否可能由某些過濾規則引起
  • 添加到規則集,在目前規則-A POSTROUTING -d 192.168.1.101 -p tcp --dport 80 -j MASQUERADE之前和之後嘗試POSTROUTING

但是,它仍然不起作用。

想法?

謝謝。

要執行髮夾式 NAT 方法,您需要輸入以下命令。

iptables -t nat -A PREROUTING -d 12.34.56.78 -i vmbr1 -p tcp -m multiport --dports 80,443 -j DNAT \
   --to-destination 192.168.1.101   
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o vmbr1 -d 192.168.1.254 -p tcp \
   --dport 80 -j SNAT --to-source 192.168.1.101

引用自:https://serverfault.com/questions/757289