今天,碰到一個問題:區域網路內有5台機器,只有一個公網IP。現在的需求是5台機器都要能夠訪問外網。這可怎麼辦呢。當然是使用SNAT了。話雖這麼說,可是,在配置的時候,竟然折騰了半天。下面好好總結一下:
情景介紹:區域網路內的5台機器的IP地址分別是
192.168.180.121-node1
192.168.180.122-node2
192.168.180.123-node3
192.168.180.124-node4
192.168.180.125-node5
每台機器都有2塊網卡(eth0和eth1),我們上面給出的5個內網IP都是配置在每一台機器的eth0這塊網卡上面。
另外,我們將node1這個機器上的eth1網卡配置一個外網IP(119.75.218.76)。
開啟node1這台機器的ipv4轉寄功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
(就是因為這個忘記了,折騰了好久。)
還有,這個修改在機器重啟的時候仍然會失效。要想永久有效,還要把/etc/sysctl.conf檔案裡邊的net.ipv4.ip_forward的值改為1。
修改其他機器的預設閘道:
因為要讓 node1 這台機器幫我們轉寄流量,所以,將其他機器的預設閘道設定成 node1 的內網IP(也就是192.168.180.121) 在node1 機器上使用iptables 命令進行設定,將其他機器的流量通過這個可以訪問外網的機器轉寄出去:
iptables -F
iptables -X
iptables -Z
這三條命令將防火牆規則清空。
之後,使用下面的命令進行流量轉寄:
iptables -t nat -A POSTROUTING -s 192.168.180.0/24 -o eth1 -j SNAT –to-source 119.75.218.76
(因為這條規則沒有儲存,所以重啟後失效;怎樣儲存防火牆規則,請參考其他教程)
本文只是簡單介紹了大致的操作,原理性的知識以及詳細介紹請參考其他教程。