解决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便稳定了。

相关推荐
cui_win11 分钟前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip
BD_Marathon2 小时前
Ubuntu:Mysql服务器
服务器·mysql·ubuntu
CodeWithMe3 小时前
【Note】《深入理解Linux内核》 Chapter 15 :深入理解 Linux 页缓存
linux·spring·缓存
0wioiw03 小时前
Ubuntu基础(监控重启和查找程序)
linux·服务器·ubuntu
Tipriest_3 小时前
Ubuntu常用的软件格式deb, rpm, dmg, AppImage等打包及使用方法
linux·运维·ubuntu
艾希逐月3 小时前
TCP数据的发送和接收
服务器·网络·tcp/ip
GBXLUO4 小时前
windows的vscode无法通过ssh连接ubuntu的解决办法
vscode·ubuntu
胡斌附体4 小时前
linux测试端口是否可被外部访问
linux·运维·服务器·python·测试·端口测试·临时服务器
愚润求学5 小时前
【Linux】自旋锁和读写锁
linux·运维
大锦终5 小时前
【Linux】常用基本指令
linux·运维·服务器·centos