组建Linux家庭网络

Author: 天爪 Date: 2001年 17期

?牐犗衷冢胁簧倥笥鸭抑卸加涤辛肆教ㄒ陨系牡缒裕灿胁簧偃擞肳indows系统组建了自己的家庭网络。其实,用Linux系统也能组建家庭网络,而且它还具有很多Windows系统不具备的优越性。下面,笔者就把自己的经验写出来以供参考:
  #1    一、基本的网络设定
  ?牐牸偕栉颐堑? Linux 系统已经做好上网设置并能上网浏览,就可以开始设定了。以下都是组建家庭网络会遇到的情况,了解这些基本的知识后,大家就可以动手组建家庭网络了!
  ?牐?1.对外的网络连接接口是DHCP的客户,它没有固定的IP。
  ?牐?2.对内的网络连接接口使用私有IP(class C private IP)。
  ?牐牸俣?你需要的网络数据如下:
  ?牐爀th0_IP:202.82.1.10
  ?牐燦etwork:255.255.255.0
  ?牐燘roadcast:202.82.1.255
  ?牐燝ateway:202.82.1.1
  ?牐燚NS:205.252.144.228
  ?牐爀th1_IP:192.168.0.1
  ?牐燦etwork:255.255.255.0
  ?牐燘roadcast: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    三、加载需要的模块作为防火墙
  ?牐爄pchain除了是共享网络的一套实用工具外,也可以作为防火墙。使用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指令加载模块
  ?牐犛捎诮裉煊泻芏嗟腖inux发行版已经预定使用者将它作为网关等服务器,所以这些模块多数已经为使用者编译好了。所以在编译之前可以试试将它们用“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
  ?牐犎绻幌胝庋觯部梢杂胑cho命令:$echo "/sbin/insmod ip_masq_ftp" >> rc.local。这样会将引号内的整句写入rc.local文件的最后一行,记着要用两个“>”号,如果只用一个会覆盖整个rc.local的内容,可以用上述方法重复将每一行加入rc.local。
  #2?牐?2.使用新编译的核心
  ?牐犎绻愕姆⑿邪鍸inux并未预先编译模块,那么你就要按上述方法编译核心及安装模块。而新制作出来的压缩核心会放在/usr/src/linux/arch/i386/boot中。将这个bzImage连结,或移到 /boot 目录之中。将修改 /etc/lilo.conf 中的设定,加上新的一段指向核心,再用 "lilo -v -v -v" 灌入 Master Boot Record (MBR)。
  #2?牐?3.ipchain的设定
  ?牐爄pchain主要用于调节防火墙的防护功能,当然在家中使用的防火墙并不需要太复杂的设定,下面有两个基本的设定可供参考:
  ?牐牰訮PPO使用:
  ?牐?#!/bih/sh echo 1 > /proc/sys/net/ipv4/ip_forward; /sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ
  ?牐牰訣thernet 使用:
  ?牐?#!/bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward; /sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ -i eth0
  ?牐犐鲜隽礁隼拥耐芬痪涫且谎模琫cho "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设定
  ?牐牰陨鲜龅膇pchain脚本(shell script),以往我会把它存储为一个名为IP的文件,再用超级用户的身份将它变成一个可以执行的文件。但在今天已经有一个新的模块名为IP,那么最好将它改为其它的名称,避免混淆,如:homenet。
  ?牐犚褂胔omenet这个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.储存数据
  ?牐犘薷耐瓯虾蠼⒋妫敲丛谙麓纹舳低呈北慊岚此承蚱舳U飧錾瓒ǖ墓δ懿换嵋蛭酝饬咏涌诘腎P的变化而改变,无论是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。
  ?牐犞链耍磺蟹衿鞣矫娴纳瓒ň屯瓿闪耍乱徊绞巧瓒╓indows客户端的工作,笔者在这里就省略不谈了,让各位自行根据上述指定的数据来设定吧。