解决电脑双网卡无法上网的问题
有的公司或机构的内网是封闭的,只有内部网络,没有出口网关,上不了外网的。但有时候我们希望再加一块网卡连上外网线,让电脑既能访问内网,又能访问外网(互联网)。然而这两块网卡好像不能共存,要上外网的时候只能禁用内网卡,要上内网时只能禁用外网卡,有没有办法实现内外网共存呢?
可以实现的。
首先网络拓扑如下:
有双网卡的电脑原来只有一块网卡的时候,那块内网卡的IP是公司分配的。该电脑被划分在vlan10里,分配了一个IP:192.168.10.5/24位掩码,网关为192.168.10.1
后来想让这台电脑能访问互联网,于是又加了一块外网卡,接到能上互联网的路由器上,该路由器默认分配的IP是192.168.1.0/24网段的,例如外网卡获取到的IP是192.168.1.14,默认网关是192.168.1.1在有双网卡的电脑上的cmd命令行里输入ipconfig回车:
上图显示确实有两块网卡,且IP地址都是正确的,都有网关,ping各自的网关都能通
当两块网卡都启用时,却不能上网了(不能上网的情况有两种)
1)有时是不能访问内网的服务器(IP为192.168.30.254),但可以上外网
2)有时是可以访问内网服务器,而不能访问外网
因为这两块网卡都配有默认网关,当要访问的目的IP与这两块网卡的IP不在同一个网段时,计算机就会把数据发给默认网关,从网关出去了。有时候能ping通内网的服务器是因为该数据包从内网的网关出去了,而ping外网IP不通,是因为该数据包也从内网网关出去了,而内网又没有出口到互联网去,所以不通。
同理,有时能ping通外网而不通内网,是因为数据包都从外网网关出去了。
也就是说,当目的IP与本机的网卡IP在同一个网段时,都能ping通,而不在一个网段时,会从网关转发出去,那么到底从哪个网卡的网关出去呢?
这得看计算机的路由表,在cmd命令行输入route-4print
1)当内网卡是连网线,外网卡是一块无线网卡时,看到的路由表可能如下:
内网卡IP为192.168.10.5外网卡IP为192.168.1.14
上图中每一行表示一条路由,一行中最后一个数字表示跃点数,跃点数越小越优先走这条路由。所以这时是优先走192.168.1.1这个网关的(就是外网卡的网关),所以这时是ping不通内网的服务器的。
2)当内网卡和外网卡都是有线网卡时,看到的路由表可能如下图所示:
上图表示两条默认路由的跃点数一样大,是一样优先的。是不是说数据包可以从两个网关出去呢?不是的,这只是普通的电脑,不具备负载均衡的功能,它还是只能选择一个网关出去。当两块网卡的默认路由跃点数一样时,再看网卡接口的序号,序号小的优先。
了解了以上基本知识,我们再来想想解决方案,实现既能访问内网,又能访问外网的需求。
方案一:
当公司的内网只有一个网段时(比如都是192.168.10.x/24),就不要设置内网网卡的网关了。
而外网网卡的网关是要设置的(如果是自动获取的那就用它自动获取的配置吧)
这样就行了
等一下,我们的内网网卡是自动获取IP的,怎么删除它的默认网关呢?
以管理员身份运行输入如下命令(最后的192.168.10.1为内网卡的默认网关)
这不就没了。
方案二:
内网有多个网段,(比如有192.168.10.x20.x30.x等网段),不要设置内网网卡的网关,但是要配置几条静态路由
以管理员身份运行(在C:\Windows\System32目录下)
添加静态路由的命令格式如下:
route add192.168.20.0mask255.255.255.0192.168.10.1
route add192.168.30.0mask255.255.255.0192.168.10.1(有几个网段就要配几条路由)^目的网段^目的网段的掩码^下一跳(网关)
外网卡就用默认配置。
route add 添加路由
这样访问内网的数据包就会从内网卡的网关走,而访问外网的数据包会默认从外网卡的网关走,不冲突了。内、外网都能访问了。
方案三:
有时候情况不尽如人意,公司的内网有哪些网段我们不知道,只知道自己的电脑被分配到一个IP(192.168.1.26/24位掩码)网关为192.168.1.1
然后我们再加一块外网卡,从光猫那里接一根线过来连上(如果是无线网卡,那就连上wifi呗)自动获取的IP是192.168.1.4,默认网关是192.168.1.1
两个网卡的网段是一样的,有冲突。
例①要是能修改光猫下发的IP地址段就好了,先用其他设备(如手机)登录光猫,进行dhcp 修改。(改成公司内网可能没有的网段,比如172.23.234.0/24位掩码。这得靠经验去猜)
这样就不会有网段的冲突了,(外网卡可能获取的IP是172.23.234.3,网关是172.23.234.1)然后,内网网卡不要设置默认网关,用添加静态路由的方法(同方案二)把目的网段是私网IP的数据包都从内网卡的网关转发(内网网卡的网关是192.168.1.1,但是在网卡上不设置,只在静态路由表里添加)
以管理员身份运行
route add10.0.0.0mask255.0.0.0192.168.1.1
route add172.16.0.0mask255.240.0.0192.168.1.1
route add192.168.0.0mask255.255.0.0192.168.1.1
外网卡的配置就用默认的,这样就行了。
例②有时候真的是事与愿违,外网卡的网段不能改(可能是设备不支持修改,也可能是其他人不同意修改),内网卡就更不用说了,公司给我们的就是192.168.1.0段的。
只好两块网卡都用同一个网段的了
情况如下:
这时候肯定是有个网络是不通的(不是外网就是内网)
我们可以把内网的网关删掉,添加静态路由,不过要写完整,表明从哪个网卡接口出去。通过查看路由表可以知道
内网卡的接口序号是9(在不同的电脑上可能不一样)外网卡接口序号是3号
以下命令删掉从内网卡接口出去的默认路由
再添加静态路由
route add10.0.0.0mask255.0.0.0192.168.1.1if9
route add172.16.0.0mask255.240.0.0192.168.1.1if9
route add192.168.0.0mask255.255.0.0192.168.1.1if9
外网卡的配置就用默认的,这样就行了(通过验证,内外网都能访问,不过如果访问的是同一个网段的地址,肯定是会有问题的,比如ping192.168.1.1,到底是ping到内网的那个1.1还是外网的1.1呢?暂时不知道。如果是访问不同网段的那就没问题)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论