我們在内網的環境中,如果隻有一台機器能夠能外網,那麼我們把這台機器做成一個網關gateway,從而實現其他機器的聯網。如下圖所示:
網關上面有兩個網卡,其中eth0(192.168.0.1)連接内網網段,eth1(198.51.100.1)連接公網。
原理非常簡單: 通過網關iptables的SNAT,将内網流量的源IP地址統一修改成網關對外IP地址(eth1的IP)。具體操作如下:
網關配置首先需要配置我們的網關,确保内網流量都走eth0網絡
ip route add 192.168.0.0/16 dev eth0
然後開啟網絡轉發并通過SNAT将IP改成對外IP。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING ! -d 192.168.0.0/16 -o eth1 -j MASQUERADE
注意上面,我并沒有直接使用SANT,而是采用MASQUERADE。MASQUERADE可以理解成動态的SNAT,如果eth1網卡地址發生變化後,會動态更新源地址。如果使用SNAT,當然在本例中也是可以跑通的,如下所示
iptables -t nat -A POSTROUTING ! -d 192.168.0.0/16 -o eth1 -j SNAT --to-source 198.51.100.1
但如果修改了eth1的地址後,就需要重新設置。
其他内網節點配置最後将内網中其他機器的網關指定到網關節點即可
ip route add default via 192.168.0.1 dev eth0
這樣就完成了一個網關的配置。這個原理非常簡單,但如果熟悉OpenStack的用戶就會發現,OpenStack裡面的網關的原理就是利用這種方式實現。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!