在Linux上做个家用(或办公室)网络_信息技术论文
在linux上做个家用(或办公室)网络
李军胜
cpe.ljs@cpe-hb.com
北京西客站100055信箱1009分箱(邮政编码:100055)
一.基本的网络设置
如果linux 系统已经做好了上网配置,同时亦能在充当服务器的电脑上浏览资料,这时就可以设置你家的网络了。以下是家庭网络要遇到的情况,了解这些基本知识后,才能真正动手组建家庭网络。
1. 对外的网络联接界面是dhcp的客户,虽然它没有固定的ip,只有对外的gateway、dns等,但不会影响gateway 的功能。
2. 对外的网络联接界面有固定的ip(例如i-cable),或者isp能提供长期连线服务,他提供的ip会固定数天日才转换一次。
3. 对内的网络联接界面使用私人ip,即192.168.0.1 这组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
二.用图像界面设置网络
可以用linuxconf.(如果用redhat)进行设置,这是个比较方便的工具。
1. 以superuser 的身份用linuxconf 将工具调出。选取config →networking →basic host information,在上面分别填入eth0及eth1 的资料。eth0 是对外的联接界面,所以要填202.82.1.10 那组资料,而eth1 是对内联网的联接界面。所以用192.168.01 那组。最好同时在module栏填入那个ethernet 界面所需的module。在networking →client tasks →routing and gateways →set defaults,填入gateway 的ip,在下方按“enable routing”键。
2. 在networking →client tasks →name server specification (dns) 处填入你的dns,这里可以填入两个以上的dns 服务器。(其实所有的dns server的功能都一样,填哪个都没啥区别),填上你的isp 提供的dns。记得所有的资料填好后都要按确定。
3. 如果你用上述ppp 时,也可以在linuxconf 中设置,在linux conf 选ppp/slip/plip,在ppp/slip/plip configration上按add键,随后再选ppp(按确定),在其中填入资料,如电话号码,modem port(如上述所述),再填上login name 和password 就成了,电脑会自动给你的ppp 编号为"0"(即ppp0)。
三.装入需要的module作防火墙
ipchain除了可作防火墙外,也是分享网络的一套实用工具。使用ipchain是在kernel中建立ipmasquerading的modules。而因为要做gateway,所以关于routing、ipsharper亦需使用。
注:要用superuser的身份进入/user/src/linux的目录,用make menuconfig或make xconfig,在选择完成后请存储设置:
“make dep”,“make clear”及“make bzimage”因为有modules的改动,所以同时要做“make modules”及“make modules_install”你所compile的新modules将会放入/lib/modules/2.xx(与核心号码对应)的目录内。
四.用insmod指令载入module
由于今天有很多distributions己经默认用户将它作为gateway等服务器,所以这些mobdules多数己经预先为用户compile好了。所以在compile前可以试试将他们用指令“insmod”装上看看。几个要用的modules分别是:
1. ip_masq_user 2. ip_masq_raudio 3. ip_masq_ftp 4. ip_masq_irc 5. ip_masq_vdoline(如果你要用vdoline这玩意)
还有两个,一个是玩quake游戏用,另一个是给cuseeme(这是个网上的视图工具),这些modules全放在你的/lib/modules/2.2xx/ipv4目录中。
五.加入必需的参数
让系统在启动时自动挂上上述的modules。用/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文件的最后一行。记住要用两个">",如果一个会overwrite整个rc.local的内容。可用上述方法重复将每行echo入rc.local内。
六.使用新编译的核心
如果你的distribution并未为你预先编译modules,那么你就要如上所述的编译核心并安装modules。而新作出的压缩核心会放在/usr/src/linux/arch/i386/boot 中。将这个bzimage链接,或移到/boot 目录中。将修改/etc/lilo.conf 中的设置,加上新的一段指向核心再用“lilo -v -v -v”装入master boot record (mbr)。
七.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,当然你改成192.168.0.0/5 也可,视你的需要而定。
八.用shell script设置
使用上述ipchain 脚本(shell script),过去我会把它存入一个名为ip 的文件,再用superuser 的身份将它变成一个可以执行的文件。但在今天已经有一个新的module 名为ip,那么最好将之改为其它的名称,避免混淆,不如改为homenet。
要使用homenet 这个shell script,我们需要将它改为一个可以执行的文件:
$chmod +x homenet
我们将文件放在/sbin 目录内(这里多放些与网络有关的指令)。要让它能顺利执行,一定要在上述ip_masquerade 的modules 装入后执行。
我们可以将它写入/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
九.最后保存资料
修改完毕后将其保存,那么在下次启动时系统就能顺利启动。这个设置的功能不随对外联接界面的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 (gateway ip号码) 如果是用"ppp-on"script,请在上“/sbin/insmod ip_masq_user”之前加:/etc/ppp/ppp-on
至此,一切服务器方面的设置都已完成,下一步是设置windows客户端的工作,笔者在这里就省略不谈了,各位可以自行根据上述指定的资料来设置。