用淘汰电脑做网关共享上网
数码时尚
现在很多学校都在寝室开通了宽带服务,但是一个月100元的包月费对我们这些学生来说也不是一个小数目。下面介绍一种利用旧机器充当服务器共享上网的方法,让多台计算机可以同时利用一个账号上网(包月费可要平均分配哟)。
服务器的配置:K6-2/266MHz CPU,大众VA503+主板,64MB SDRAM,20GB昆腾硬盘,小影霸128/4MB显卡、网卡两块、电源一个。不需要显示器、鼠标和键盘这样的外设(在配置时只需要把其他电脑的拆来用用就可以了,谁让我们学生没钱,相信这样的机器在毕业的时候会有很多师兄、师姐拿出来甩卖吧,价钱应该不是很成问题的)。自己配置一个Linux的服务器,不仅节省了上网的费用,又学到了不少的知识,何乐而不为呢!
首先,让我们来看看原理。在Linux 2.4内核中,实现IP包过滤(IPFilter)和网络地址转换(NAT)功能的“Ipchains”被“Netfilter”所取代。与“Ipchains”相比,“Netfilter”并不是具体实现包过滤的程序,而是一套框架结构,各种包过滤、NAT功能模块都可建立在这套框架结构之上,从而提供了更好的灵活性和可扩展性。“Netfilter”提供了一系列的“表”(Tables),“表”由若干“链”(Chains)组成,“链”相当于以前的“Ipchains”,系统缺省的“表”为“Filter”,我们要使用的是NAT表中的Postrouting链。它的作用是把本地主机数据包的私网源地址改为网关的外网地址,使其成为一个能在Internet中传播的合法数据包。
一、拓扑结构
如图所示,服务器共有两块网卡,一块和你的ISP(网络服务提供者)相连,另一块连接在你HUB的“Uplink”端口上。
二、系统设置
我使用的系统是Red Hat Linux 8.0,这个版本是免费的(我就喜欢Linux这一点),可以从它的主页http://www.redhat.com/download/products.html得到(记住在安装时把“iptables”列入安装内容)。我的服务器内网地址是192.168.0.1,外网地址是202.114.85.XXX。
下面是NAT表的配置过程:
首先插入所需模块,运行如下命令(这里要注意顺序)。
#insmod ip_tables
#insmod ip_conntrack
#insmod iptable_nat
#insmod ipt_MASQUERADE
以上4个模块中,“ip_tables”是“iptables”的主模块,也是实现“Netfilter”的接口框架;“ip_contrack”是连接跟踪模块,也是后面两个模块所需要的;“iptable_nat”是实现NAT功能的模块;“ipt_MASQUERADE”则是为了实现IP的伪装。
模块插入后,用如下命令启动NAT。
---- #iptables -t nat -A Postrouting
-s 19 2.168.0.0/24 -o eth1 -j MASQUERADE
“-t nat”表示对NAT表进行操作;“-A Postrouting”表示对Postrouting链增加规则;“-s 19 2.168.0.0/24 -o eth1”表示源地址是19 2.168.0.0,这是个C类网段,且外网的网卡是eth1(就是我那块连接Internet的网卡,根据情况不同,也可能是eth0);“-j MASQUERADE”表示对于满足上面条件的数据包进行地址伪装。
接下来,还需要启动内核的IP转发功能,运行如下命令。
---- #echo "1" > /proc/sys/net/ipv4/ip_forward
最后测试网关是否配置成功。把客户机的IP设置在192.168.0.0这个C类网段内,子网掩码设为255.255.255.0,网关设置为服务器的内网IP,本例中内网IP是192.168.0.1。然后打开你的浏览器,能上网就成功了。
如果经测试启动成功,可以将以上操作合并到一起制作为一个如下所示的脚本文件,在每次开机时自动运行。
#!/bin/bash
# 插入模块
insmod ip_tables
insmod ip_conntrack
insmod iptable_nat
insmod ipt_MASQUERADE
# 设置NAT
#iptables -t nat -A Postrouting -s 19 2.168.0.0/24 -o eth1 -j MASQUERADE
# 启用IP转发
echo "1" > /proc/sys/net/ipv4/ip_forward
好了,一个Linux的网关就配置完成了,享受一下这个廉价网关带来的性能吧。
