解决Ubuntu服务器多网口使用情况下外网老掉线问题

问题背景

Ubuntu服务器有两个网口eno3和eno4,eno3配置了192.168.110.253用于连接4台扫描仪,网关192.168.110.1,无DNS,

eno4配置了192.168.100.182用于连接中控室和外网路由,网关192.168.100.1(外网路由器的地址),DNS也设置成了192.168.100.1;

问题是安装Todesk远程桌面软件后,一会儿能用,一会儿掉线,掉线频率10分钟以内,在掉线期间能够ping通外网路由器192.168.100.1以及无线连接到这个外网路由的设备,这现象说明,eno4连接外网的物理链路是没问题的,试了很多办法,不限于:

修改DNS域名解析配置文件
bash 复制代码
$cat /etc/resolv.conf

信息为:

bash 复制代码
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.53

在nameserver 后接的应该是dns地址,而这里是本地回环地址,把它修改成dns地址,

bash 复制代码
$sudo vi /etc/resolv.conf
bash 复制代码
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.100.1
关闭ipv6

首先在设置界面的网络设置里面,给两张网卡都禁用了ipv6,然后设置如下配置文件:

sudo vim /etc/sysctl.conf

复制代码
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 =1

sudo sysctl -p,使得以上修改生效

关闭防火墙
bash 复制代码
sudo ufw status
sudo ufw disable
关闭systemd-networkd

两个网络管理NetworkManager和systemd-networkd,只留NetworkManager即可:

bash 复制代码
sudo systemctl status NetworkManager
sudo systemctl status systemd-networkd

如果看到 NetworkManager和systemd-networkd都是active状态,那么关闭systemd-networkd:

bash 复制代码
sudo systemctl stop systemd-networkd
sudo systemctl disable systemd-networkd

用了以上办法后还是没有解决问题,最终我在有网和掉网状态下,都用命令traceroute新浪网,跟踪路由,发现如下状态:

有网时:

bash 复制代码
dell@dell-PowerEdge-R740:~$ traceroute www.sina.com
traceroute to www.sina.com (61.241.15.63), 30 hops max, 60 byte packets
 1  homerouter.cpe (192.168.100.1)  0.502 ms  1.623 ms  1.676 ms
 2  * * *
 3  ool-ad020042.dyn.optonline.net (173.2.0.66)  67.160 ms  67.143 ms  67.167 ms
 4  172.29.63.2 (172.29.63.2)  76.313 ms  76.296 ms 172.29.64.2 (172.29.64.2)  77.231 ms
 5  * * *

没网时:

bash 复制代码
dell@dell-PowerEdge-R740:~$ traceroute www.sina.com
traceroute to www.sina.com (163.179.228.87), 30 hops max, 60 byte packets
 1  dell-PowerEdge-R740 (192.168.110.253)  2222.405 ms !H  2222.386 ms !H  2222.374 ms !H

对比有网和没网时的第一跳ip, 有网时是192.168.100.1,没网时是192.168.110.253,????很奇怪吧,按理说不管有网没网,去外网www.sina.com都是经过外网路由器192.168.100.1啊!怎么在没网时会去192.168.110.253?这里就意识到路由表有问题了,参看了如下文章:
https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_10341810855457822784%22%7D&n_type=0&p_from=1

查看原先的路由表情况:

bash 复制代码
dell@dell-PowerEdge-R740:~$ route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
0.0.0.0         192.168.110.1   0.0.0.0         UG    20100  0        0 eno3
0.0.0.0         192.168.100.1   0.0.0.0         UG    20101  0        0 eno4
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno3
192.168.100.0   0.0.0.0         255.255.255.0   U     101    0        0 eno4
192.168.110.0   0.0.0.0         255.255.255.0   U     100    0        0 eno3

可见去往外网0.0.0.0,192.168.110.1和192.168.100.1网关都可以,且192.168.110.1的跃点更小,优先级更高,所以会有上面掉网时,路由第一跳是192.168.110.253的现象发生,由于192.168.110.x网段只用于内网扫描器,不应涉及外网,所以应该把上面第一条路由删掉:

bash 复制代码
sudo route del -net 0.0.0.0 gw 192.168.110.1 netmask 0.0.0.0 dev eno3

改完后路由表:

bash 复制代码
dell@dell-PowerEdge-R740:~$ route -n
内核 IP 路由表
目标            网关            子网掩码        标志  跃点   引用  使用 接口
0.0.0.0         192.168.100.1   0.0.0.0         UG    20101  0        0 eno4
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno3
192.168.100.0   0.0.0.0         255.255.255.0   U     101    0        0 eno4
192.168.110.0   0.0.0.0         255.255.255.0   U     100    0        0 eno3

之后,Todesk便稳定了。

相关推荐
程序漫游人24 分钟前
centos8.5安装jdk21详细安装教程
java·linux
小扎仙森26 分钟前
关于服务器宝塔转移wordperss子比主题问题
运维·服务器
小小小糖果人29 分钟前
Linux云计算基础篇(5)
linux·运维·服务器
small_wh1te_coder1 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c
小张是铁粉1 小时前
docker在Linux的安装遇到的问题
linux·docker·容器
weixin_7714323111 小时前
linux系统 weblogic10.3.6(jar) 下载及安装
linux·运维·jar
绝不偷吃1 小时前
FastDFS分布式储存
linux·nginx
KENYCHEN奉孝1 小时前
Rust征服字节跳动:高并发服务器实战
服务器·开发语言·rust
开开心心就好1 小时前
免费PDF处理软件,支持多种操作
运维·服务器·前端·spring boot·智能手机·pdf·电脑
IC 见路不走3 小时前
LeetCode 第91题:解码方法
linux·运维·服务器