Ubuntu 20.04 LTS多网卡环境下默认网络变更致SMB访问异常的排查与配置咨询
Ubuntu 20.04 LTS多网卡环境下默认网络变更致SMB访问异常的排查与配置咨询
嘿,我来帮你拆解这个多网卡环境下的网络问题,结合Ubuntu 20.04的特性给你逐一分析:
一、默认网络(路由)突然变更的可能原因
这种情况在多网卡机器上不算少见,哪怕你没手动改配置,也可能因为这些因素触发:
- 网卡连接优先级变动:Ubuntu的NetworkManager会根据连接的"自动连接"状态、网卡类型(比如有线比无线优先级高,但如果有线曾临时断开)自动调整默认路由。要是你连接机器人控制器的网卡在某次重启后被系统判定为优先级更高,默认路由就会切过去。
- DHCP服务器异常:如果连接大网络的网卡是DHCP获取地址,一旦对应DHCP服务器没下发默认路由,或者其他网卡的DHCP服务器主动推送了路由规则,系统会自动切换默认路由到能获取到路由的网卡。
- 第三方工具/脚本改动:控制机器人硬件的配套软件可能自带网络配置脚本,在后台悄悄修改了路由表,你没察觉而已。
- 网络服务异常重启:NetworkManager或systemd-networkd这类管理服务意外崩溃重启后,重新生成路由表时可能出现逻辑错误,导致默认路由选错网卡。
二、为什么Ubuntu没自动处理子网解析?
Ubuntu确实会根据各网卡的子网配置生成对应的路由规则,但前提是默认路由的指向正确。如果默认路由指向了机器人控制器的网卡,当你ping SMB服务器时,系统会把流量发往这个错误的网卡——而该网卡所在子网根本无法访问SMB服务器的子网,自然ping不通;但用-I指定正确网卡时,相当于强制让流量走对应网卡的路由规则,就能匹配到目标子网,所以能成功。简单说就是默认路由错了,导致流量出口不对。
三、挂载SMB时指定子网/网卡的方法
你可以通过两种方式解决这个问题,一种是挂载时直接指定网卡,另一种是给目标服务器添加静态路由:
1. 临时挂载时指定网卡
用mount命令挂载SMB共享时,添加interface参数指定对应网卡,比如:
sudo mount -t cifs //192.168.1.100/shared-folder /mnt/smb-mount -o username=your-username,password=your-password,interface=enp0s3
这里的enp0s3换成你连接大网络的网卡名称,可以用ip addr命令查看所有网卡的名字。
2. 永久挂载(fstab配置)
如果要开机自动挂载,在/etc/fstab里添加条目时同样带上interface参数:
//192.168.1.100/shared-folder /mnt/smb-mount cifs username=your-username,password=your-password,interface=enp0s3 0 0
3. 添加静态路由(更通用的方法)
给SMB服务器的IP添加静态路由,让系统知道访问这个IP必须走指定网卡,这样后续不管默认路由怎么变,访问该服务器都会走正确的路径:
sudo ip route add 192.168.1.100/32 dev enp0s3
如果要让这个路由重启后依然生效,可以把这条命令加到/etc/rc.local里(如果rc.local没启用,需要先启用),或者用NetworkManager的图形界面添加静态路由规则。
备注:内容来源于stack exchange,提问作者Geordie
相关产品推荐
相关产品推荐

