解决双网卡主机无法访问互联网问题

最近连续两次遇到了双网卡主机无法访问互联网的问题,主要是由于默认路由走的不是可以访问互联网的那张网卡所导致,下面是排查和解决过程

以下解决问题的方法有个大前提:确保网卡都能正常使用,且有一张网卡可以允许访问互联网

如下在kali中我设置了两种网卡,区别如下:

  • NET模式:网卡eth0,IP地址192.168.50.128,可访问互联网,访问互联网使用该地址
  • 仅主机:网卡eth1,IP地址192.168.30.15,禁止访问互联网

配置路由

ping百度域名测试时提示“Destination Host Unreachable”,使用路由跟踪看下,发现默认使用的是无法访问互联网的网卡192.168.30.15,这就是出现路由不可达问题的原因

ping baidu.com
tracertroute baidu.com

查看默认路由,如果存在目标地址相同的多条路由,系统会自动选择路由表中Metric值小的那条路由,可以看到网关192.168.30.1的路由优先级更高,而这个网关是不可以访问互联网的

route -n

下面我们要做的就是修改路由优先级,让能访问互联网的路由顺位到最上面

由于指令无法更改直接修改Metric值,因此需要我们删除原有路由再重新添加,在新增时分配Metric值,首先指定网关删除路由

route del default gw [网关]

然后再通过下面的指令调整路由,将我们要用来访问互联网的路由的Metric值设置为0,另一个可以设置为100,重新添加路由后再次ping百度就通了

route add default gw [网关] netmask [子网掩码] dev [网卡] metric 0
route add default gw [网关] netmask [子网掩码] dev [网卡] metric 100

让路由永久生效

如果只是通过上面的指令进行配置,重启系统后便会失效,因此需要采用一些方法让我们的路由配置开机自运行,要注意不同操作系统配置永久路由的方法也不同,下面主要介绍的是Debian系统的方法,不保证其他系统也有用

配置要用到Network-Manager服务,Network-Manager在网络连接建立或断开时会自动运行/etc/NetworkManager/dispatcher.d/中的文件。因此只要写一个脚本放在该文件夹下,即可实现连接建立时自动执行指令配置路由

首先我们在/etc/NetworkManager/dispatcher.d/目录下新建一个脚本文件myroutes,这个目录下可以新建多个文件,服务会按脚本文件字母顺序执行

vim /etc/NetworkManager/dispatcher.d/myroutes

写入我们要执行的指令,注意加上#!/bin/bash让系统识别该文件为bash脚本,同时在指令开头加上sudo可以防止指令执行权限不足,参考下面的指令修改为你自己的路由配置

#!/bin/bash
sudo route del default gw 192.168.150.2
sudo route del default gw 192.168.30.1
sudo route add default gw 192.168.150.2 dev eth0 metric 0
sudo route add default gw 192.168.30.1 dev eth1 metric 100

写入后保存,需要对改文件添加下执行权限

chmod 755 /etc/NetworkManager/dispatcher.d/myroutes

然后设置NetworkManager-dispatcher服务开机自运行,便能确保开机后也能正确配置路由

systemctl restart NetworkManager-dispatcher
systemctl enable NetworkManager-dispatcher

重启系统后查看路由,是我们想要实现的效果,访问互联网也能访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值