代码改变世界

解决双网卡机器同时访问内外网的问题

2010-05-06 09:25  Eric.Hu  阅读(3247)  评论(2编辑  收藏  举报

 (本文之前是转载自互联网,现已经修改,下边是本人操作后重新整里的)

以前为了方便测试,我在自己的电脑(不是服务器)安装了双网卡,双网卡接入的是两个不同的网络但都可上网。最近为了搭建和测试VPN,我将其中一块网卡接入一个小型内网(即不能访问Internet),此时便遇到问题:只能访问那个小型内网,却无法访问Internet,经查阅众多解决方案后,觉得还是手动添加路有点比较好,同时区分优先权。

以下是系统环境与解决方案:

本机内网IP:192.168.3.172    子网掩码:255.255.255.0  内网网关:192.168.3.240    (不可访问Internet)

本机外网IP:192.168.1.199    子网掩码:255.255.255.0  内网网关:192.168.1.1       (可访问Internet)

方案:

打开“运行”〉输入“CMD”,然后输入以下命令:

route delete 0.0.0.0 mask 0.0.0.0 192.168.3.240             #删除内网网关

route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 2          #改变默认外网网关优先权为2,220.184.16.118为外网分配的ip地址

route add 192.0.0.0 mask 255.0.0.0 192.168.3.240 metric 1     #添加内网路由点,且优先权设置为1

现在终于可以内网外网同时访问了,但问题依然有,重启之后这些更改就失效,需要重新配置,如果你会写DOS批处理,可以在开机的时候自启动就好了,以下是我写的批处理参考:(复制到记事本,网关自己更改,然后把后缀改为.bat即可)

@ echo off

 

route delete 0.0.0.0 mask 0.0.0.0 192.168.3.240            

route change 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 2          

route add 192.0.0.0 mask 255.0.0.0 192.168.3.240 metric 1

 

很简单吧,呵呵

 

其实也有更简单的方法,只是上边的方法适合测试或不常用双网卡实现内外网的,但公司里确实需要固定的,这就手动调整就显得太麻烦了

下面再介绍一种方法:

首先介绍一下路由原理:双网卡机器一般内网网卡ip都设置了网关地址,而windows默认网关只能有一个,不上外网的情况下默认网关就是内网网关,使用外网上网后默认网关自动改为外网分配的ip,可以使用route print查看,即所有数据流都流向外网网卡ip,导致此时不能访问内网。用route print命令查看此时的路由情况不难发现地址0.0.0.0(可以把0看成通配符)开始的路由点有两个,一个是内网网关,一个是外网ip,而外网ip成了默认网关。因此我的思路是:不用内网网关,将内网网关做成永久路由点且仅过滤内网网段(192开头的ip数据),而不改变外网的默认网关,这样根据优先权,访问内网的数据会从永久路由点走,其它数据从外网的默认网关走(路由表设置的特殊地址除外),从而达到目的。具体方法如下: 
        到内网本地连接属性设置中记住网关ip地址并删除内网网关,运行CMD窗口,运行以下命令route -p add 192.0.0.0 mask 255.0.0.0 192.168.3.240(创建永久路由点),结束。这样未连接外网时正常访问内网,连接外网后能同时访问内外网。

 

现在很多企业为了安全都是使用内外网的,希望以上信息对你有所帮助