上個月,我和兄弟想在家裡建一個小型網絡,以便在一個modem一條電話線的情況下讓更多的計算機能聯上互聯網。我的機子聯著modem,運行Linux,用作服務器;兄弟的機子運行Win95作客戶機。我在網上到處查找關於這種小型網絡的資料文檔,最後決定使用IP偽裝的技術來達到目的。
IP偽裝技術是通過指派內部網的IP地址(在本例中我的機子IP為 10.0.0.1 客戶機IP為10.0.0.2)使其他的客戶機在沒有外部IP地址時共享服務器的互聯網連接。我看了許多有關的文檔,的確弄懂了ipchains的原理和配置過程,但就是不能正常地運行在我的機子上。於是我就進入了在Undernet.org的#Linux IRC頻道,並得到了一個自稱Mongoose的同好的幫助。
他給了我一個他寫的"用ipchains來實現IP偽裝"的快速教程的網頁地址。
*Ipchains是一個用來設置防火牆和IP偽裝的軟件,隨RedHat 6.0 捆綁發行。(譯注:ipchains也是自由軟件,在網上可自由下載,主頁在:
http://www.adelaide.net.au/~rustcorp/linux/ipchains
看了Mongoose的快速教程後,我用不到十分鐘就搞定了我的網絡。這也是我繼續與他聯系, 並得到他同意在Linux公報上發表他的教程的原因。
下面就是他的教程:
----------------------------------------
注意:
----------------------------------------
以下IP地址的含義為:
0.0.0.0 互聯網的網關.
10.0.0.1 作網關機子的網卡捆綁IP地址.
10.0.0.2 作客戶機 client0 的網卡IP地址.
10.0.0.3 作客戶機 client1 的網卡IP地址.
網絡網關設置
----------------------------------------
1.載入網卡模塊(如果需要的話)
/sbin/modprobe ne2k-pci
(不同網卡的模塊名也不同)
2.激活網卡並配置路由
(在/etc/rc.d/rc.local中加入以下腳本)
/sbin/ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
/sbin/route add -net 10.0.0.0 netmask 255.255.255.0 eth0
/sbin/route add default gw 0.0.0.0 eth0
3.允許客戶機使用你的網絡。
A. 在 /etc/hosts.allow 的尾部加入以下腳本:
ALL:10.0.0.2
ALL:10.0.0.3
B. 在其他需要配置的地方加入所需配置:
i. 因為速度的原因我建議使用squid作FTP/http的proxy.
網絡客戶機設置 ( 10.0.0.2 client0 )
----------------------------------------
1.載入網卡模塊(如果需要的話)
/sbin/modprobe ne2k-pci
2.激活網卡並配置路由
(在/etc/rc.d/rc.local中加入以下腳本)
/sbin/ifconfig eth0 10.0.0.2 netmask 255.255.255.0 up
/sbin/route add -net 10.0.0.0 netmask 255.255.255.0 eth0
/sbin/route add default gw 10.0.0.1 eth0
網絡測試
----------------------------------------
1. 從客戶機 ping 10.0.0.1 ,並反向測試。
2. 使用 /sbin/ifconfig 來觀察包傳輸情況。
3. 此時你應該能從客戶機使用服務器的telnet/ftp服務。
A. 如果你在客戶機上不能telnet到服務器,請檢查 hosts.allow文件.
IP MASQ GATEWAY IP MASQ SETUP
IP偽裝網關設置
----------------------------------------
1. IP轉發設置(IP forwarding setup).
A. 為IP偽裝網關加載IP轉發。
echo "1" > proc/sys/net/ipv4/ip_forward
B.在每次機子啟動時加載IP轉發:
i.在RedHat中如下修改 /etc/sysconfig/network
FORWARD_IPV4=true
ii.在其他版本中在 /etc/rc.d/rc.local 的結尾加入:
echo "1" > proc/sys/net/ipv4/ip_forward
C.確保你的rc.local文件中沒有如下內容:
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
2.現在設置路由。 把以下內容加入到 rc.local中,讓機子啟動時自動裝載。
A.在默認狀況下拒絕所有 ip 轉發。
/sbin/ipchains -P forward DENY
B. 允許你的子網計算機 (10.0.0.2 和 10.0.0.3)使用ip轉發。
/sbin/ipchains -A forward -s 10.0.0.2/24 -j MASQ
/sbin/ipchains -A forward -s 10.0.0.3/24 -j MASQ
C.增加你需要的偽裝模塊。
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_raudio
...
--------------------------------------------------------------------------------
只要按以上步驟,網絡應該能配置好。我遇到的一個問題是設置好了我的IP偽裝後,客戶機只能通過IP地址訪問互聯網,此時你應該在/etc/resolv.conf中設置好你的DNS,並且讓named守護程序運行,問題就解決。
好了,現在你的網絡就弄好了。如你想了解更多有關IP偽裝和防火牆的知識,參見HOWTO文檔:
http://metalab.unc.edu/linux/HOWTO/HOWTO-INDEX-3.Html#ss3.1
...
--------------------------------------------------------------------------------
只要按以上步驟,網絡應該能配置好。我遇到的一個問題是設置好了我的IP偽裝後,客戶機只能通過IP地址訪問互聯網,此時你應該在/etc/resolv.conf中設置好你的DNS,並且讓named守護程序運行,問題就解決。
好了,現在你的網絡就弄好了。如你想了解更多有關IP偽裝和防火牆的知識,參見HOWTO文檔:
http://metalab.unc.edu/linux/HOWTO/HOWTO-INDEX-3.html#ss3.1