在Linux上做个家用/办公室网络 李军胜 2001年 29期 #1一、基本的网络设置   假设我们的Linux系统已经做好了上网配置,同时亦能在充当服务器的电脑上浏览资料,这时就可以设置你家的网络了。以下是家庭网络要遇到的情况,了解这些基本知识后,才能真正动手组建家庭网络。   1.对外的网络联接界面是DHCP(动态主机配置协议)的客户,虽然它没有固定的IP,只有对外的Gateway(网关)、DNS(域名服务器)等,但不会影响网关的功能。   2.对外的网络联接界面有固定的IP(例如i-Cable)或者ISP(Internet服务提供者),能提供长期连线服务,它提供的IP会固定数天后才转换一次。   3.对内的网络联接界面使用的C类IP地址,即192.168.0.1。   假定你需要的网络资料如下表:(^29041101a^)   #1二、用图像界面设置网络   可以用“linuxconf”(如果用RedHat Linux)进行设置。   1.以superuser(超级用户)的身份输入“linuxconf”命令将工具调出。选取“Config”→“Networking”→“Basic host Information”,在上面分别填入表1中的eth0及eth1资料。同时在“Module”(模块)栏填入ethernet 界面所需的参数。在“Networking”→“Client Tasks”→“Routing and Gateways”→“Set Defaults”,填入网关的IP,在下方按“Enable Routing(允许路由)”键。   2.在“Networking”→“Client Tasks”→“Name Server Specification(DNS)”处填入ISP提供的DNS。   3.如果你用上述PPP 时,也可以在“linuxconf” 中设置,在“linuxconf”中选择“PPP/SLIP/PLIP”,然后在“Configration”上按“Add”键,随后再选“PPP” (端对端协议),在其中填入资料,如电话号码,Modem Port(端口数值),再填上Login Name 和Password就成了,电脑会自动给你的“PPP”编号为“0”(即“PPP0”)。   #1三、装入需要的模块作为防火墙   ipchain模块除了可作防火墙外,也是分享网络的一套实用工具。使用ipchain是在Kernel中建立ipmasquerading的模块。而因为要做网关,所以关于Routing(路由)、IPsharper亦需使用。   【注】要用superuser的身份进入/user/src/linux的目录,用“make menuconfig”或“make xconfig”,在选择完成后请存储设置:“make dep”,“make clear”及“make bzImage”。因为有模块的改动,所以同时要做“make modules”及“make modules_install”。你所编译的新模块将会放入/lib/modules/2.XX(与核心号码对应)的目录内。   #1四、用insmod指令载入模块   由于今天有很多分布式系统己经默认用户将它作为网关等服务器,所以这些模块多数己经预先为用户编译好了。所以在编译前可以尝试将它们用指令“insmod”装上看看。几个要用的模块分别是:①ip_masq_user②ip_masq_raudio③ip_masq_ftp④ip_masq_irc⑤ip_masq_vdoline。这些模块全放在你的/lib/modules/2.2XX/ipv4目录中。   #1五、加入必需的参数   让系统在启动时挂上上述的模块。请用/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的内容。   #1六、使用新编译的核心   如果你的系统并未为你预先编译模块,那么你就要如四中所述的那样编译核心并安装模块。而新作出的压缩核心会放在/usr/src/linux/arch/i386/boot 中。将这个bzImage链接或移到/boot 目录中。将修改/etc/lilo.conf 中的设置,加上新的一段指向核心再用“lilo -v -v -v”装入Master Boot Record (MBR,主引导记录)。   #1七、ipchain的设置   ipchain主要调节防火墙的防护功能,分别对进口及转传部加以调节。当然在家里用的防火墙并不需要太复杂的设置,下面有两个基本的设置可供参考   给PPP0 用的:“#!/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,当然你改成192.168.0.0/5 也可,视你的需要而定。   #1八、用Shell Script设置   使用上述ipchain 脚本(shell script),过去我会把它存入一个名为IP 的文件,再用superuser 的身份将它变成一个可以执行的文件。但在今天已经有一个新的模块名为IP,那么最好将之改为其他的名称,避免混淆,可改为homenet。   要使用homenet,我们需要将这个shell script改为一个可以执行的文件:   “$chmod +x homenet”   我们将文件放在/sbin 目录内(这里多放些与网络有关的指令)。要让它能顺利执行,一定要在上述ip_masquerade 的模块 装入后执行。   我们可以将它写入/etc/rc.d/rc/local 内,但一定要在上述ip_masquerade后写入,具体为:   “/sbin/insmod ip_masq_user /sbin/insmod ip_masq_user /sbin/insmod ip_masq_randio /sbin/insmod ip_masq_irc /sbin/home-net”   #1九、最后保存资料   修改完毕后将其保存,那么在下次启动时系统就能顺利启动。这个设置的功能不随对外联接界面的IP 而改变(无论是forward 还是routing)。当然,对外界面失效,也没法送出任何的TCP/UDP packet(包),那就要修改界面的资料,修改完后,只要将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 (网关 IP号码)”;如果是用“ppp-on”script,请在上“/sbin/insmod ip_masq_user”之前加上“/etc/ppp/ppp-on”。   至此,一切服务器方面的设置都已完成,设置Windows客户端的工作,各位可以自行根据上述指定的资料来设置。