以前为了方便测试,我在自己的电脑(不是服务器)安装了双网卡,双网卡接入的是两个不同的网络但都可上网。最近为了搭建和测试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(创建永久路由点),结束。这样未连接外网时正常访问内网,连接外网后能同时访问内外网。
现在很多企业为了安全都是使用内外网的,希望以上信息对你有所帮助
***************************************************
route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 3 IF 2
参数含义:^destination ^mask ^gateway metric^ ^interface
mask【子网掩码】
gateway【网关地址】
metric 【路由跳数】
if【端口号】
一般情况下,不涉及本机地址,除非你要做测试。
可以省略【路由跳数】参数;
当通往该网关地址的路径唯一时,【端口号】参数可以省略。(因为在多端口的路由交换设备上,可能存在通往同一个IP地址的多条备份路径。)
mask 是关键字,不能省略。
意思是:所有需要发往134.105.0.0/16地址段的IP数据包,全部由134.105.64.1路径转发。
route add 134.105.0.0 mask 255.255.0.0 134.105.64.1
route add 134.105.128.0 mask 255.255.128.0 134.105.0.1
目标地址是134.105.128.1的IP包会优先选择第二条路由。
***************************************************