Monday, March 27, 2006

用兩張網卡在Linux系統架設NAT

因為工作的需要,有一台IAD必須要使用192.168.2.1的網段,因此為了要讓我的Desktop跟NB都能操作這台IAD,所以我必須要讓這三台機器都處在192.168.2.x的網段內。但是我又想讓我的Desktop跟NB都能夠對外連線上網,因此我打算用兩張網卡(N1, N2)架設一個NAT的環境。
我的Desktop的系統是Fedora 5,並且裝設了兩張網路卡,且我有一個固定的對外IP。NB是Windows系統。IAD是固定使用192.168.2.1的板子。首先,設定NB的IP為192.168.2.101,N1的IP設為192.168.2.100,再將NB、IAD、N1用網路線連到 Hub上,那麼這三台就屬於同一個網段,不用靠Gateway就可以互連。之後將對外的網路線連到N2並設定IP為我對外固定的IP,那麼Desktop就可以對外連線,且可連線到IAD但是NB還不行。此時要透過Linux的iptables來設定NAT。
iptables --flush                                              
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
# Set up IP FORWARDing and Masquerading
iptables --table nat
--append POSTROUTING
--out-interface eth0 -j MASQUERADE
iptables --append FORWARD
--in-interface eth1 -j ACCEPT

echo 1 > /proc/sys/net/ipv4/ip_forward
為了要讓下次開機能自動執行,要將 iptables存起來

iptables-save /etc/sysconfig/iptables

如此只要一開啟iptables的服務就會載入我們的設定值
但是光啟動 iptables而沒有啟動 ip_forward還是不能動作
所以要將
echo 1 > /proc/sys/net/ipv4/ip_forward
這行寫入
/etc/rc.d/rc.local
如此每次開機完都會自動執行。

No comments: