Ubuntu 多网环境自动路由表(区别教育网内外) + 分享到多张网卡网络的实现

首先, 感谢 @BOYPT @jimmy_xu_wrk @tjmao @yegle 等朋友的帮忙!

1, 多网环境, Felix 的环境是 VPN over cernet2 + cernet 双网.

2, 自动路由表, 采用 www.nic.edu.cn 的官方 Free IP 数据.
以下是 Felix 用 Python 写的一个小小的自动生成脚本:

会在当前目录生成 gtwcernet 和 gtwcernetd 两个文件
然后给他们加上执行权限

前一个是启用自动路由表
Usage: gtwcernet <教育网网关> <VPN/电信网网关>
后一个是禁用自动路由表
Usage: gtwcernetd

3, 分享到多张网卡:
Felix 的网络环境是:
eth0 – 教育网
eth1 – 连接到内网有线交换机
tun0 – VPN over cernet2
sit1 – IPv6 (6 in 4)
wlan0 – 无线网卡, Ad-hoc 分享网络

eth0 / tun0 的自动切换在上一步已经完成, 剩下的问题就在于, 想要将这个设置好的网络分享到 eth1 和 wlan0
在这之前, 需要安装 ifenslave-2.6 和 dnsmasq:

然后打开系统的 ipv4 转发:

***TIP***要让 ipv4 转发永久生效,可以编辑 /etc/sysctf.conf, 去掉下面行的注释:

编辑文件后想让设置立刻生效, 可以简单地用:

启用 NAT:

注意: 把 192.168.4.0/24 修改为你要分享的网段!
给两块网卡分别创建 Manual 的连接, IP 设置为一样.
然后配置 dnsmasq 服务器, 作为 DNS Server 和 DHCP Server:

修改相应的配置.
比如我的 DHCP 选项是:

然后重启 dnsmasq 服务器:

最后把两张网卡绑在一起:

注: mode=3 是让两张网卡所辖范围的网络 “水乳交融”, 自动合体. 更多 mode 设置参见本文下方的参考资料.
现在, 连接上有线网卡或者连接上无线网卡 (ad-hoc) 的人都可以享受优化过的网络了 🙂

附: 清空 iptables 的脚本: (修改自: http://blog.chinaunix.net/u1/47765/showart_377028.html)

参考资料:
1, http://www.linuxhorizon.ro/bonding.html
2, http://www.linux-corner.info/bonding.html

10 thoughts on “Ubuntu 多网环境自动路由表(区别教育网内外) + 分享到多张网卡网络的实现”

  1. 很好,终于解决了ad-hoc的问题……还是dnsmasq管用。
    其实我很想在寝室里面弄个无线路由器,做CERNET跟电信的双线路由。

Leave a Reply

Your email address will not be published.