Ubuntu 18.04工控机上网卡优先级冲突?一个metric值设置帮你搞定内外网同时访问 Ubuntu 18.04工控机双网卡优先级优化实战指南在工业自动化现场一台稳定运行的Ubuntu工控机往往需要同时处理内网设备通信和外网远程访问需求。当有线网口连接着PLC控制网络无线网卡又需要接入互联网进行软件更新时路由优先级冲突就会成为影响生产效率的隐形杀手。本文将带您深入理解Linux路由机制并提供三种可落地的解决方案。1. 工控环境下的网络冲突现象解析某汽车制造厂的工程师小李最近遇到了一个棘手问题车间里那台负责监控生产线状态的Ubuntu工控机突然无法通过浏览器查询供应商的技术文档了但奇怪的是与PLC设备的Modbus TCP通信却完全正常。这种能内网不能外网的故障现象正是典型的多网卡路由优先级冲突。通过route -n命令查看路由表我们可以看到类似这样的输出Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 150 0 0 eno1 0.0.0.0 10.10.10.1 0.0.0.0 UG 100 0 0 wlp1s0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1 10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp1s0关键问题出在两条默认路由Destination为0.0.0.0的Metric值上。Metric值越小优先级越高当无线网卡wlp1s0的Metric(100)低于有线网卡eno1的Metric(150)时所有流量都会优先走无线网络。但如果无线网络恰好无法访问内网资源就会造成通信故障。2. 临时解决方案ifmetric命令快速调整对于需要紧急处理的生产线故障我们可以使用ifmetric工具进行临时调整。这个方案的特点是即时生效但重启后失效适合调试阶段使用。首先安装必要的工具包sudo apt update sudo apt install ifmetric查看当前各网卡的Metric值route -n | grep UG假设我们要将有线网卡eno1的优先级提高Metric值降低执行sudo ifmetric eno1 80验证设置是否生效ip route show | grep default注意不同Linux发行版的ifmetric参数可能略有差异Ubuntu 18.04默认使用的是较新的语法格式。下表对比了常见工控场景下的Metric推荐值网络类型典型用途推荐Metric值范围有线内网PLC通信50-100无线外网互联网访问150-200冗余备份灾备线路3003. 持久化配置netplan方案详解对于需要长期稳定运行的工控环境我们推荐使用Ubuntu 18.04默认的netplan进行配置。以下是详细的步骤指南首先定位配置文件ls /etc/netplan/编辑配置文件以50-cloud-init.yaml为例sudo nano /etc/netplan/50-cloud-init.yaml典型的多网卡配置示例如下network: version: 2 ethernets: eno1: dhcp4: no addresses: [192.168.1.100/24] routes: - to: 0.0.0.0/0 via: 192.168.1.1 metric: 100 nameservers: addresses: [192.168.1.1] eno2: dhcp4: yes dhcp4-overrides: route-metric: 200 wifis: wlp1s0: dhcp4: yes dhcp4-overrides: route-metric: 300 access-points: SSID名称: password: 无线密码关键配置要点有线内网使用静态IP和显式路由配置无线外网采用DHCP但覆盖默认Metric值重要内网接口设置较低的Metric值(100)外网接口设置较高的Metric值(300)应用配置并测试sudo netplan try --timeout 30 sudo netplan apply4. 高级路由策略基于源地址的路由控制对于更复杂的工控网络环境我们可以实现基于源IP的精细路由控制。这种方法特别适合以下场景特定应用必须走指定网络接口需要实现策略路由的复杂网络拓扑多租户环境下的网络隔离需求首先创建自定义路由表echo 200 internal | sudo tee -a /etc/iproute2/rt_tables添加路由规则示例为内网192.168.1.100走eno1接口sudo ip route add 192.168.1.0/24 dev eno1 src 192.168.1.100 table internal sudo ip route add default via 192.168.1.1 table internal sudo ip rule add from 192.168.1.100 lookup internal持久化配置需要添加到/etc/network/interfacespost-up ip route add 192.168.1.0/24 dev eno1 src 192.168.1.100 table internal post-up ip route add default via 192.168.1.1 table internal post-up ip rule add from 192.168.1.100 lookup internal5. 工控环境特别注意事项在工业现场部署网络配置时有几个容易忽视但至关重要的细节MTU大小调整工业网络设备可能使用非标准MTU值sudo ip link set eno1 mtu 1400ARP缓存设置防止PLC通信中断sudo sysctl -w net.ipv4.neigh.eno1.base_reachable_time_ms60000看门狗机制自动检测网络故障并切换sudo apt install ifplugd sudo systemctl enable ifplugdeno1防火墙策略确保只开放必要的端口sudo ufw allow from 192.168.1.0/24 to any port 502 proto tcp在汽车厂的实际案例中通过将PLC通信网卡的Metric设为80无线热备网络的Metric设为200再配合5秒一次的网络质量检测脚本最终实现了99.99%的网络可用性。