双网卡同时上内外网
转自:
http://wanyij.blog.51cto.com/46570/139377
为了方便自己在一台机器上同时访问内网和外网,自己对系统路由作了一点点更改,既方便了自己,又学习到了相关的路由知识。
网络环境(我办公室真实的网络环境):
1、一台主机;
2、两张网卡;
3、外网通过SOHO路由器上ADSL,网关为192.168.0.1,本机外网IP为192.168.0.101;
4、内网全网网络地址为10.0.0.0 掩码为255.0.0.0 ,我所在区域的子网络为10.*.*.0,网关为:10.*.*.*,本机IP为10.*.*.* 。
要解决的问题:
两张网卡要同时开启,并且能够同事上内、外网。
解决的过程:
1、重命名两张网卡,以区别内外网。如果两张网卡是相同的,那一定要记下为其分配的IP地址及相对应的物理地址,以方便之后的设置。
2、设置好IP地址后,两张网卡同时打开,打开的先后顺序不同也会出现不同的情况,主要Default Gateway(默认路由)如果是外网的,那么可以上外网,也可以上内网,但是内网只能上10.*.*.0网络号段上的WEB,其它区域的上不了。在命令行输入:route print 查看当前的路由表
3、为了在可以访问外网的前提下,也可以访问所有的内网区域,因此系统默认为我们的路由是不行的,要自己重新设置一下。通过刚查看的路由表可以看见里面有一项叫 Interface List(接口列表)东西,第一行不用管他,看后面几行,这里你可以通过设备类型或者物理地址来确认哪是内网卡,哪个是外网卡。如上图,0xe0002 是外网卡,0xf0003 是内网卡。下面就开始更改路由设置了。
(1)基本命令:
route -f //删除默认路由;
route add 目的网络号 mask 目的网络的子网掩码 本地网关 metric 20 if 网卡标识符
(2)设置:
route -f
route add 10.0.0.0 mask 255.0.0.0 10.*.*.* metric 20 if 0xf0003 //先设置内网路由
route add 0.0.0.0 mask 0.0.0.0 192.168.0.1 metric 20 if oxe002 //再设置外网路由;
设置成功后,可以通过 route print 查看修改后的路由
这样就可以稳定、而且不受任何限制的访问内网和外网了!如果要取消当前的设置,只需要将两个网卡分别停用再开启就变成系统默认设置了。
希望这篇小技巧对大家有用!
********************************
以下是自己遇到的问题以及解决方法
********************************
内网用的网线,外网为无线网,连接一段时间后发现不能连接外网了。
route print后发现,路由表里有两个默认路由
一个是
0.0.0.0 mask 0.0.0.0 内网网关
一个是
0.0.0.0 mask 0.0.0.0 外网网关
其中外网的是自己配的,内网是路由学习到的。
因为内网的metric比外网的小,造成联网数据包默认转到了内网路由器上,而无法上网。
听取同事建议,解决方案如下:
1. 修改内网路由器,将自己的ip设置为静态ip,映射到自己机器的mac上;
2. 修改内网ipv4,取消动态获取,只填写ip和掩码,空下网关和DNS配置。
附录:本人写的脚本:
1 @echo off 2 route delete 0.0.0.0 3 route delete 52.1.0.0 4 route delete 10.161.0.0 5 for /f "delims=. tokens=1,3" %%a in ('route print') do if "%%b"=="Broadcom 802" route -p add 0.0.0.0 mask 0.0.0.0 192.168.2.1 metric 1 if %%a 6 7 for /f "delims=. tokens=1,3" %%a in ('route print') do if "%%b"=="Realtek PCIe GBE Family Controller" route -p add 52.1.0.0 mask 255.255.0.0 192.168.1.1 metric 1 if %%a 8 9 for /f "delims=. tokens=1,3" %%a in ('route print') do if "%%b"=="Realtek PCIe GBE Family Controller" route -p add 10.161.0.0 mask 255.255.0.0 192.168.1.1 metric 1 if %%a 10 11 route print
其中“Broadcom 802” 代表无线网卡,“Realtek PCIe GBE Family Controller”代表有线网卡
for /f "delims=. tokens=1,3" %%a in ('route print') do if "%%b"=="Broadcom 802"
用来获取无线网卡的网卡标志符