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

相关推荐
Algebraaaaa29 分钟前
Linux 基本命令超详细解释第三期 grep | wc | 管道符‘|’ | echo | tail | 重定向符
linux
小生不才yz2 小时前
(三)命令管理-命令历史-history命令的使用
linux
DIY机器人工房4 小时前
关于解决 libwebsockets 库编译时遇到的问题的方法:
服务器·stm32·单片机·嵌入式硬件·tcp
aramae4 小时前
Linux开发工具入门:零基础到熟练使用(二)
linux·运维·服务器·网络·笔记
nassi_4 小时前
I/O详解
linux·php
泡沫冰@5 小时前
shell编程:sed - 流编辑器(6)
linux
爱吃喵的鲤鱼5 小时前
仿muduo库One Thread One Loop主从Reactor模型实践——介绍
linux·c++
庄风子6 小时前
In VI, when an arrow key is pressed, a character (e.g. “A“) is sent.
linux·vi
18538162800余+6 小时前
深入解析:什么是矩阵系统源码搭建定制化开发,支持OEM贴牌
java·服务器·html
Suger9997 小时前
centos网络打流测试
linux·网络·centos