LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1543|回复: 2

多机单网卡共享上网--linux技巧

[复制链接]
发表于 2006-10-5 18:20:45 | 显示全部楼层 |阅读模式
原帖地址:
http://www.herofit.cn/2006/10/05_43
问题背景
学校采用透明代理上网方法。每个户头每月15元,流量限为20G。以前是8人用一个路由器上网,后来不知什么缘故,采用路由器共享上网方式变得非常不稳定 (怀疑学校做了什么手脚?)。于是只好寻找其它途径。学校还有另外一种上网方式,即网通的100元包月上网卡,为了获得最大的利益,网通通过技术手段限制,使得不能用路由器共享上网。以前听说能够使用双网卡,实现多机上网,但实践多次,均失败了。

解决方案
利用linux内核的数据转发,及一块网卡绑定多个IP,NAT地址转换等特性实现。

网络架构
两个寝室共8台电脑,网络架构如下图所示(不会贴图,请到原地址查看)。
交换器2其实是原来的路由器,只是WAN口空着,把外网与其它客户机一起接到LAN口上。
图中结构只是本寝室的实际情况,不表示一定要求这样。

服务端设置
首先,确保内核打开ip转发功能。

    cat /proc/sys/net/ipv4/ip_forward

结果为1,则表示已经打开。为0则编辑/etc/sysctl.conf文件,将其中的net/ipv4/ip_forward=1前的#号删去。重启使改动生效。也可以直接用类似

    echo "1" > /proc/sys/net/ipv4/ip_forward

的语句来使改动立即生效。
添加内网IP

    ifconfig eth0:1 192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0

添加转发列表

    iptables -F

    iptables -F -t nat

此两步刷新缓存,大部分情况下可省略。

    iptables -P FORWARD DROP

    iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

    iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to <外网IP>

<外网IP>请作适当替换。
添加完后用iptables -L应该可以看到添加的一些条目。到此服务端设置完成。

客户端设置
IP:192.168.0.xxx
网关:192.168.0.1(上面设的内网IP)
DNS与服务端相同。

实际效果
客户端上QQ,PPLIVE,IE,以及firefox等工作正常。基本上可以说,采用TCP,UDP的程序均工作正常。但ICMP不正常(现象是不能ping通)。这时,客户端在外网看来即是服务端。
服务端和成为服务器前相同,无异样。CPU占用率不高。

存在的问题
不知如何控制转发速度。

其它
服务端在ubuntu6.06上调试通过。
指令多需要root权限,请注意。
建议将配置指令写到脚本中。

参考资料:
打开转发功能
lsyer兄在红旗linux下的设置
Linux单网卡绑多IP
发表于 2006-10-5 22:00:38 | 显示全部楼层
你这样其实有很严重的问题,就是服务器和内网发出的数据包的ttl不一样,学校可以由这一点看到路由转换,你应该在服务器端发出的数据包都改成统一ttl
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-7 13:09:01 | 显示全部楼层
Post by azhoulinux
你这样其实有很严重的问题,就是服务器和内网发出的数据包的ttl不一样,学校可以由这一点看到路由转换,你应该在服务器端发出的数据包都改成统一ttl

学校不会无耻到这种程度吧,是那样我就疯了
还有,要是真的,how?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表