上个月,我和兄弟想在家里建一个小型网络,以便在一个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