组建Linux家庭网络 天爪 2001年 17期 现在,有不少朋友家中都拥有了两台以上的电脑,也有不少人用Windows系统组建了自己的家庭网络。其实,用Linux系统也能组建家庭网络,而且它还具有很多Windows系统不具备的优越性。下面,笔者就把自己的经验写出来以供参考:   #1 一、基本的网络设定   假设我们的 Linux 系统已经做好上网设置并能上网浏览,就可以开始设定了。以下都是组建家庭网络会遇到的情况,了解这些基本的知识后,大家就可以动手组建家庭网络了!   1.对外的网络连接接口是DHCP的客户,它没有固定的IP。   2.对内的网络连接接口使用私有IP(class C private IP)。   假定你需要的网络数据如下:   eth0_IP:202.82.1.10   Network:255.255.255.0   Broadcast:202.82.1.255   Gateway:202.82.1.1   DNS:205.252.144.228   eth1_IP:192.168.0.1   Network:255.255.255.0   Broadcast:192.168.0.255   #1 二、在图形界面下设定网络   我们可以用 linuxconf进行设定(如果你用RedHat),这是个比较方便的工具。   1.以超级用户的身份登录,用linuxconf命令将工具调出来。选取“Config→Networking→Basic host information”,在上面分别填入eth0和eth1的资料。eth0是对外的连接接口,所以填入202.82.1.10 那一组数据;而eth1是对内联网的连接接口,所以填入192.168.01那一组数据。最好同时在Module(模块)字段填入对应ethernet 接口所需用的模块。再选取“Networking→client tasks→routing and gateways→set Defaults”,填入gateway(网关)的IP,记得在下方按下“Enable Routing”的按钮。   2.选取“Networking→Client tasks→Name Server Specification (DNS)”,填入你的DNS,这里可以填入两个以上的DNS服务器,填入ISP提供的DNS,所有的数据填好后按“确定”按钮。   3.如果你使用PPP,也可以在linuxconf中设定,在linuxconf中选择PPP/SLIP/PLIP,在PPP/SLIP/PLIP Configration上按Add按钮,随后再选PPP,按“确定”按钮,在其中填入数据,如电话号码、Modem 端口,再填入Login Name(登录名)及Password(口令)就完成了,计算机会自动给你的ppp编号为“0”(即ppp0)。   #1 三、加载需要的模块作为防火墙   ipchain除了是共享网络的一套实用工具外,也可以作为防火墙。使用ipchain需要在Kernel中建立ipmasquerading的模块。而因为要做网关,所以还要使用Routing和IPsharper。   注:要以超级用户的身份进入/user/src/linux的目录,用“make menuconfig”或“make xconfig”命令,在选择“完成”后请保存设定,再用“make dep”、“make clear”及“make bzImage”命令进行编译。因为有模块的改动,所以还要用“make modules”及“make modules_install”命令进行编译,你所编译的新模块将会放入/lib/modules/2.XX(XX与核心号码对应)的目录内。   #21.用insmod指令加载模块   由于今天有很多的Linux发行版已经预定使用者将它作为网关等服务器,所以这些模块多数已经为使用者编译好了。所以在编译之前可以试试将它们用“insmod”指令加载上看看。几个要用的模块分别是:ip_masq_user、ip_masq_raudio、ip_masq_ftp、ip_masq_irc、 ip_masq_vdoline(如果你要用vdoline)。这些模块全部会放在/lib/modules/2.2XX/ipv4目录之中。我们还需要加入必须参数使系统在启动时自动加载上述的模块。利用/etc/rc.d/rc.local是不错的办法,rc.local是系统中最后的一个启动程序,只要用文字编辑器加入下面的语句便可以:   /sbin/insmod ip_masq_user   /sbin/insmod ip_masq-raudio   /sbin/insmod ip_masq_ftp   /sbin/insmod ip_masq_irc   如果不想这样做,也可以用echo命令:$echo "/sbin/insmod ip_masq_ftp" >> rc.local。这样会将引号内的整句写入rc.local文件的最后一行,记着要用两个“>”号,如果只用一个会覆盖整个rc.local的内容,可以用上述方法重复将每一行加入rc.local。   #22.使用新编译的核心   如果你的发行版Linux并未预先编译模块,那么你就要按上述方法编译核心及安装模块。而新制作出来的压缩核心会放在/usr/src/linux/arch/i386/boot中。将这个bzImage连结,或移到 /boot 目录之中。将修改 /etc/lilo.conf 中的设定,加上新的一段指向核心,再用 "lilo -v -v -v" 灌入 Master Boot Record (MBR)。   #23.ipchain的设定   ipchain主要用于调节防火墙的防护功能,当然在家中使用的防火墙并不需要太复杂的设定,下面有两个基本的设定可供参考:   对PPPO使用:   #!/bih/sh echo 1 > /proc/sys/net/ipv4/ip_forward; /sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ   对Ethernet 使用:   #!/bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward; /sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ -i eth0   上述两个例子的头一句是一样的,echo "1" 到 "ip_forward" 是使得ip_forward 生效的,因为系统中的预设是"0",意即不使用 ip_forward。第二句只有最尾的一段不同,当中的 "A" 代表 ipchains 的规则会对后面的一段发生作用,而 "s" 代表 source 支配的 IP 地址或 SubMark。在例子中只用了192.168.0.0──192.168.0.24,具体视乎你的需要而定。   #24.运用Shell Script设定   对上述的ipchain脚本(shell script),以往我会把它存储为一个名为IP的文件,再用超级用户的身份将它变成一个可以执行的文件。但在今天已经有一个新的模块名为IP,那么最好将它改为其它的名称,避免混淆,如:homenet。   要使用homenet这个shell script,我们需要将它变成一个可以执行的文件:   $chmod +x homenet   我们将文件放在/sbin 目录之内(这处放置了一般网络有关的指令)。要令它顺利执行,一定要在上述ip_masquerade的模块加载之后执行。   我们可以将它写入/etc/rc.d/rc/local之内,具体如下:   /sbin/insmod ip_masq_user   /sbin/insmod ip_masq_user   /sbin/insmod ip_masq_randio   /sbin/insmod ip_masq_irc   /sbin/home-net   #25.储存数据   修改完毕后将它储存,那么在下次启动系统时便会按顺序启动。这个设定的功能不会因为对外连接接口的IP的变化而改变,无论是forward还是Routing。当然对外的接口失效,也没有办法送出任何的TCP/UDP包,那便要修改接口的数据,当修改完毕后,只要将 Network 的功能重新启动一次即可。   $/etc/rc.d/init.d/network restart. #redhat, mandrake user或$/etc/init.d/networking restart #debian user   也可以这样(但这只是暂时性的,在关机后修改便会失效):$ ifconfig eth0(IP 号码) $ route add default gw(gateway IP号码)。如果是使用"ppp-on"script的,请在上面"/sbin/insmod ip_masq_user"之前加:/etc/ppp/ppp-on。   至此,一切服务器方面的设定就完成了,下一步是设定Windows客户端的工作,笔者在这里就省略不谈了,让各位自行根据上述指定的数据来设定吧。