Virtualization

如何將 linux vm 配置為在兩個子網之間通信的路由器

  • November 12, 2016

我在 vmlayer 上安裝了 3 個虛擬機。我將其中兩個作為兩個不同網路的主機。Host1 ip=192.168.1.13 gateway=192.168.1.11Host2 ip=192.168.2.14gateway=192.168.2.12。現在我想要第三個虛擬機作為路由器,它可以將數據包從第一個虛擬機傳輸到第二個虛擬機,它有兩個適配器eth0 ip=192.168.1.11eth1 ip=192.168.2.12. Host1 連接到eth0Host2 連接到eth1。我應該如何配置路由器,以便兩台主機可以通信並NAT可以執行?請盡快回复。

你沒有說什麼作業系統,所以你必須處理假設 - 所以假設 Debian 衍生品

啟用轉發。在 /etc/sysctl.conf 中設置:net.ipv4.ip_forward=1

這就是 ping A -> B 所需的全部內容。

因為出於某種原因您還需要 NAT,所以在 /etc/rc.local - 添加您需要的模組 - 例如:

modprobe ipt_conntrack
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_irc
modprobe ip_nat_snmp_basic

同樣在 /etc/rc.local 添加:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.11
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.2.12

例如,如果您希望網關也可以訪問網際網路,那麼您可以為其提供第三個介面,例如 eth2,其 IP 地址位於您的 LAN 上,例如 10.0.0.200 然後添加:

iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 10.0.0.200

或者如果它有一個 DHCP 地址(即,它不是靜態地址),則改為執行此操作

iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

然後最後確保網關有指向您的 Internet LAN 網關、光纖線路或 DSL 調製解調器的預設路由。如果分配了 DHCP,這無論如何都會自動完成。

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