知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Linux下绕过多网卡实现双网络

发布时间:2014-09-05 17:23:07作者:知识屋

文/图 海啸天鸣(Ansty)
现在国内部分大学和企业内部网络都使用了锐捷或港湾认证,最大可能地保证了自身的安全,但是这些认证有许多烦人的限制。例如锐捷官方认证程序在连接的时候会检测运行平台上是否存在多网卡,是否有安装代理软件或者网关之类的软件,如果发现有,就停止认证。
我们现在的网络环境是有两条网络,分别为校园网和宽带。局域网内有多台机器,通过路由连接宽带,同时也可以通过一台机器连上校园网,这台机器就是我们对校园网的出口路由了。
前面说了锐捷官方认证程序会检测运行平台,会严查多网卡、代理、共享连接之类的,那么我们就要想办法绕过这些限制。对于Windows平台下的绕过,非常简单就不做介绍了,这里只说说Linux下的实现。
Linux下实现的基本原理是,局域网内所有机器通过路由器互联,路由器负责ADSL拨号,所有机器可以通过路由器上互联网。A机连接校园网并打开共享连接功能,作为局域网内机器进入校园网的网关,使用路由表来实现自动择网。
 
网络环境
1)系统环境
系统版本:Ubuntu 7.10
ansty@Ansty:~$ sudo uname -a
Linux Ansty 2.6.22-14-generic #1 SMP Tue Dec 18 08:02:57 UTC 2007 i686 GNU/Linux
2)网卡情况
ansty@Ansty:~$ sudo ifconfig -a
eth0 链路封装:以太网,硬件地址**:**:**:**:**:*0
     inet地址:192.168.1.100,广播地址:192.168.1.255,掩码:255.255.255.0
     UP BROADCAST RUNNING MULTICAST MTU:1500,跃点数:1
     接收数据包:62645,错误:0,丢弃:0,过载:0,帧数:0
     发送数据包:61388,错误:0,丢弃:0,过载:0,载波:0
     碰撞:0,发送队列长度:1000
     接收字节:74313331 (70.8MB),发送字节:4567716 (4.3MB)
     中断:19,基本地址:0x2000
 
eth1 链路封装:以太网,硬件地址**:**:**:**:**:*2 
     inet地址:172.***.***.***,广播:172.***.***.255,掩码:255.255.255.0
     UP BROADCAST RUNNING MULTICAST MTU:1500,跃点数:1
     接收数据包:15314,错误:0,丢弃:0,过载:0,帧数:0
     发送数据包:6522,错误:0,丢弃:0,过载:0,载波:0
     碰撞:0,发送队列长度:1000
     接收字节:17196095 (16.3MB),发送字节:475199 (464.0KB)
     中断:20
 
lo  链路封装:本地环回
    inet地址:127.0.0.1,掩码:255.0.0.0
    UP LOOPBACK RUNNING MTU:16436,跃点数:1
    接收数据包:93,错误:0,丢弃:0,过载:0,帧数:0
    发送数据包:93,错误:0,丢弃:0,过载:0,载波:0
    碰撞:0,发送队列长度:0
    接收字节:11384 (11.1KB),发送字节:11384 (11.1KB)
 
其中eth0网卡用于连接到ADSL路由器,IP为192.168.1.100;eth1网卡用于连接到校园网提供的端口上,IP为172.***.***.***。
 
功能实现
在以上网络环境的基础上,我们开始配置网络,以达到我们的目的。
1)网络配置
eth1这张网卡前面已经介绍过了,是用于连接到校园网的。因为我所在学校的校园网是动态获取IP的,所以这里要选择“自动配置(DHCP)”,如图1所示。如果你的是固定IP就选固定IP自行输入。这里A机分配到的IP是172.***.***.***。

图1
eth0这张网卡用于通过路由连接到ADSL网络,是通过路由器自动分配得到IP的,所以这里还是选用动态获取IP,得到的IP是192.168.1.100。
其他非Ubuntu系统可以上网查相关网卡配置资料,不过一般都可以通过ifconfig命令来对网卡进行配置的,这里就不阐述了。
2)安装认证程序
要达到我们的目的,就不能使用锐捷官方的认证程序,而要使用第三方的。这里使用的是xmuruijie-1.3。相比xrgsu,它不会出现多网卡检测,因为XMU-Ruijie是不检测多网卡的,功能上只做一件事,就是完成认证。
这个程序是用Python语言编写的,安装非常简单。
解压:tar -xvzf xmuruijie-1.3.tar.gz
安装:$cd xmuruijie-1.3,$sudo ./install.sh install
安装的时候需要Root权限,ubuntu终端下一定记得不要sudo,其他版本的Linux自行切换到Root权限下即可。
3)配置
在终端里面输入“sudo gedit /etc/xmuruijie.conf”来配置xmuruijie.conf文件,其关键内容如下。
# this is the configuration file of XMU-Ruijie
# parameters for authentication
[auth]
user: Your-Acount
passwd: Your-Password
interface: eth0
# parameters for daemonize:
[daemon]
logfile: /var/log/xmuruijie.log
pid: /var/run/xmuruijie.pid
 
将这个文件里面的your-Acout改成认证的账号,Your-Passwor改成密码,eth0改成连接校园网所用的网卡,这里我改成了eth1。
因为我们学校需要用xrgsu算法来认证,所以还需要修改/etc/init.d/xmuruijie,加上“-x”参数来启动。在终端输入“sudo gedit /etc/init.d/xmuruijie”,找到下面的部分,在“/usr/sbin/xmuruijie d”后面加上一个“-x”即可。
 
case "$1" in
start)
echo "Starting xmuruijie"
/usr/sbin/xmuruijie -d -x
echo "Running dhcp client to get ip address..."
if [ -f "/sbin/dhcpcd" ] ; then
 
4)使用
在ubuntu系统中,网络操作都需要Root权限,所以执行的时候不要忘了sudo。
启动认证:sudo /etc/init.d/xmuruijie start
认证起来以后,程序是在后台运行的。
停止认证:sudo /etc/init.d/xmuruijie stop
5)配置静态路由表
到了这里,认证算就搞定了,剩下的就是要配置Linux双网的择网了。默认双网卡激活连通了以后,系统的静态路由表会出现两个默认网关,Linux下上网有时候会出现问题,所以我们要删除一个默认网关。
删除前运行命令“ansty@Ansty:~/xmuruijie-1.3$ route -n”,得到如下的内核IP路由表。
 
目标            网关            子网掩码        标志  跃点   引用  使用 接口
172.**.**.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         172.**.**.***   0.0.0.0         UG    0      0        0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
 
这里我们要选择用哪个网关作我们的默认网关呢?其中172.**.**.***是校园网的网关,192.168.1.1是路由器的网关,连通到ADSL线路。
在ubuntu下,使用命令“sudo route del -net 0.0.0.0 netmask 0.0.0.0 gw 要删除的网关”就可以删掉不做默认网关的地址,剩下的那个就是默认网关了。我这里用192.168.1.1路由作为默认网关,则执行“sudo route del -net 0.0.0.0 netmask 0.0.0.0 172.**.**.***”,将校园网的网关删除即可。
不过这样做的话,我们就不能访问校园网资源了,所有的数据只会从192.168.1.1这个网关出去。为了解决访问校园网的问题,我们就要利用静态路由表了,让到某个IP段的数据通过指定网关出去。也就是说,添加一张静态路由表就可以解决了。
命令格式为:sudo route add -net ip段 netmask 子网掩码 gw 网关
我这里执行“sudo route add -net 202.***.***.0 netmask 255.255.255.0 gw 172.**.**.***”,即可将我所在学校的IP段通过172.**.**.***网关出去。
再运行命令“ansty@Ansty:~/xmuruijie-1.3$ route -n”查看一下内核IP路由表。
 
目标            网关            子网掩码    &nbs

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜