上个月,我和兄弟想在家里建一个小型网络,以便在一个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也是自由软件,在网上可自由下载,主页在:
看了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文档: