Linux无法连接外网

原文:https://blog.csdn.net/jamesdodo/article/details/81183163 

很多公司都架设了自己的VPN 网络,对公司内移动办公的用户提供接入。但是大多数情况下很多用户发现只要连接上VPN,原本正常的网络浏览、QQ等访问Internet的通讯都被断掉了,而本地局域网的访问(跨网段的)也不行了。

于是仔细研究,最终在显示路由表的时候发现了区别(在命令提示符窗口下键入:route print,连上VPN的路由表)。

一般的VPN连接上之后,系统会自动加载一条“8个0”的路由条目,将默认网关指向VPN网络的网关,Metric为1.即目的网络:0.0.0.0,掩码:0.0.0.0.代表所有网络地址,也就是说所有目的网络没有在具体路由条目中指明去向,且不在本网段内的通讯都要转发到指定的默认网关去,然后再由网关来择路转发。

    而Metric为路由条目的度量值,与优先级成反比。可以看出这时所有非本网段的访问都被转发到VPN网关上,而不是原来的本地网关。原有8个0的默认路由的Metric被改为 2.在路由条目中目的地址相同的情况下,这个度量值越小则相应的优先级越高,这时只有前面那条Metric为1的路由有效,而本地网关失效了,这样访问Internet当然有困难了。

    在图中可以看到,第一条Gateway(网关)为172.16.1.1的路由是本地网络的默认路由,Metric被改成2了。而多添加了第二条8个0的默认路由是VPN连接的路由,Metric值为1.这时我们只要对第二条路由做修改,让只有目的为192.168.0.0/24这个网段的包发到VPN的网关上去,而其他访问仍然走本地网关即可。

    那么我们要先删除掉第二条路由,命令为:route delete 0.0.0.0 mask 0.0.0.0 192.168.0.3;然后添加一条新的路由条目,命令为:route add 192.168.1.0 mask 255.255.255.0 192.168.0.3.这样原有的本地默认路由将重新起作用,至此故障解决。

    注:这些命令是Windows的,Linux在下面route命令是用来管理系统路由表的。一个路由条目一般由“目的或目标(Destination)”、“网络掩码(Netmask)”以及“网关(Gateway)”组成。显示路由表的命令是route print;添加一个静态路由命令是route add 目标 掩码网关。另外,如果不加-p参数,则新建路由不会保存,重启后即消失。删除一个路由条目的命令是“route add 目标 掩码 网关”;改变一个路由的命令为“route change 目标 掩码 网关”。
Linux:

在连接VPN的时候,在终端 route 命令后

出现了两条default的路由。需要把GateWay为0.0.0.0的删除掉

sudo route del default gw 0.0.0.0 之后

ping www.baidu.com

Linux无法连接外网_第1张图片

你可能感兴趣的:(Linux)