首页 运维 网络学院 查看内容

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

2011-2-14 11:26 578 0

摘要:   现在国内部分大学和企业内部网络都使用了锐捷或港湾认证,最大可能地保证了自身的安全,但是这些认证有许多烦人的限制。例如锐捷官方认证程序在连接的时候会检测运行平台上是否存在多网卡,是否有安装代理软件或...
关键词: nbsp 网关 校园网 0.0 xmuruijie 网卡 路由 192.168 认证 路由器

  现在国内部分大学和企业内部网络都使用了锐捷或港湾认证,最大可能地保证了自身的安全,但是这些认证有许多烦人的限制。例如锐捷官方认证程序在连接的时候会检测运行平台上是否存在多网卡,是否有安装代理软件或者网关之类的软件,如果发现有,就停止认证。  我们现在的网络环境是有两条网络,分别为校园网和宽带。局域网内有多台机器,通过路由连接宽带,同时也可以通过一台机器连上校园网,这台机器就是我们对校园网的出口路由了。  前面说了锐捷官方认证程序会检测运行平台,会严查多网卡、代理、共享连接之类的,那么我们就要想办法绕过这些限制。对于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路由表。  目标            网关            子网掩码        标志  跃点   引用  使用 接口  202.***.***.0   172.**.**.***   255.255.255.0   UG    0      0        0 eth1  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         192.168.1.1     0.0.0.0         UG    100    0        0 eth0  这样,本机所有对202.***.***.0网段的访问都会通过172.**.**.***这个网关出去了。如果有更多的IP段继续route add就可以了,这样我们就实现了对A机双网共存,自动选择网关了。  不过这只是我们实现的前一部分,还有一部分是整个局域网都要实现双网自动择网。我们的A机是用作出口校园网的网关,所以还要开启它的转发功能。  在Root下运行下面两句命令就可以开启转发功能了。  echo 1 |tee /proc/sys/net/ipv4/ip_forward  /sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE  局域网的其他机器就可以通过A机进入校园网了。但是我们需要自动择网,希望做到不修改其他机器的网络信息。那我们就要用到路由器了,因为所有机器的默认网关是192.168.1.1,所以利用路由器的静态路由表功能就可以实现了,如图2所示。   图2  其中192.168.1.100是A机的IP,局域网的所有机器在遇到列表列出的地址的时候就会以192.168.1.100为网关出去了,这样我们就实现了Linux下双网自动择网,绕过多网卡等的认证了。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部