Iptables

需要 Nat 配置的基本幫助

  • June 13, 2012

我有一個 IP 為 1.0.0.5/24 的伺服器。這是伺服器的主 IP 地址,現在我還有另外兩個伺服器 IP 地址,它們是 1.0.2.30/24 和 1.0.2.31/24。我想讓一個執行另一個作業系統的 VirtualBox 可以通過 Internet 訪問,並且只允許指定的 IP 訪問虛擬盒子。

我是 iptables 的新手,因此我需要一些基本幫助和有關此的入門資訊。

託管服務提供商不允許超過每個交換機埠的 MAC 地址,這意味著據我所知,我無法建立網橋。

此外,我希望主機拒絕額外的 IP,因此它只有在額外的 IPS 上接受請求的 VirtualBox / 虛擬機。

我沒有測試過這個,但這是我會嘗試的。

  1. 在主機上創建一個新網橋brctl
brctl addbr br0
  1. 使用連接到此網橋的橋接網路配置 VM
  2. 為網橋分配一個私有子網並在其上為主機分配一個 IP
ip addr add 192.168.1.1/24 dev br0
ip route add 192.168.1.0/24 dev br0
  1. 要麼用這個範圍內的 IP 靜態配置 VM(例如 192.168.1.2),要麼在主機上設置 DHCP 伺服器(例如dnsmasq或 VirtualBox 的dhcpserver)。
  2. 檢查主機是否可以在私有 IP 上訪問虛擬機,反之亦然
  3. 將靜態 IP 附加到主機上的 eth0
ip addr add 1.0.2.30/24 dev eth0
  1. 檢查您是否可以從外部連接到附加 IP 上的主機
  2. 在主機上啟用 IP 轉發
echo 1 > /proc/sys/net/ipv4/ip_forward
  1. 將 iptables 配置為對來自 VM 的 SNAT 傳出數據包
iptables --table nat --append POSTROUTING --source 192.168.1.0/24 --jump SNAT --to 1.0.2.30
iptables --append FORWARD --source 192.168.1.0/24 --jump ACCEPT
  1. 檢查 VM 是否已連接到 Internet
  2. 將 iptables 配置為 DNAT 數據包到 VM 的附加 IP
iptables --table nat --append PREROUTING --destination 1.0.2.30 --to-destination 192.168.1.2
iptables --append FORWARD --destination 192.168.1.2 --jump ACCEPT
  1. 檢查您是否可以從外部連接到附加 IP 上的 VM

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