UOS系统双网卡同时上内网和打印机?手把手教你配置静态路由(附脚本)

张开发
2026/4/21 17:54:27 15 分钟阅读

分享文章

UOS系统双网卡同时上内网和打印机?手把手教你配置静态路由(附脚本)
UOS系统双网卡路由配置实战内网与打印机网络并行访问指南在工业控制和办公自动化场景中UOS系统作为国产操作系统的代表正被越来越多的企业采用。当一台UOS设备需要同时接入办公内网和专用打印机网络时双网卡的路由配置就成了运维人员必须掌握的技能。本文将深入解析Linux路由机制提供一套完整的配置方案并分享几个提升配置稳定性的实用技巧。1. 理解双网卡路由问题的本质当UOS系统同时连接两个不同网段的网络时最常见的问题就是默认路由冲突。系统默认会为每个网络接口生成路由规则但只有一个默认网关能被实际使用。这就导致了插入第二根网线后原本正常的内网访问突然失效的情况。典型症状表现为单独连接任一张网卡时网络功能正常同时连接双网卡后打印机可以工作但内网资源无法访问偶尔会出现网络连接时断时续的现象要解决这个问题我们需要理解几个关键概念默认网关当目标IP不在任何已知路由规则中时系统会将数据包发送到默认网关。一个系统只能有一个有效的默认网关。静态路由手动指定的路由规则告诉系统特定网段的流量应该通过哪个网络接口发送。路由优先级当多个路由规则匹配同一个目标时系统会根据子网掩码的精细程度决定使用哪条规则。提示在UOS系统中网卡名称可能与常见的eth0、eth1不同建议先用ip link show命令确认实际的网卡名称。2. 基础网络环境确认在开始配置前我们需要先确认当前的网络环境参数。假设我们有以下网络拓扑网络类型网卡接口本机IP地址网关地址目标设备办公内网enp2s0192.168.10.100192.168.10.1内网服务器等打印机enp3s0192.168.100.102192.168.100.1192.168.100.101验证步骤查看当前网络接口信息ip addr show检查现有路由表ip route show测试基础连通性ping -c 3 192.168.10.1 # 测试内网网关 ping -c 3 192.168.100.101 # 测试打印机如果单独连接每张网卡时这些测试都能通过但双网卡同时连接时内网测试失败就确认是我们需要解决的路由问题。3. 手动配置静态路由临时解决方案是手动添加路由规则这种方法适合快速验证配置是否正确。操作步骤设置默认路由走内网接口sudo ip route add default via 192.168.10.1 dev enp2s0添加打印机网络的静态路由sudo ip route add 192.168.100.0/24 dev enp3s0验证路由表ip route show正确的输出应该包含类似这样的条目default via 192.168.10.1 dev enp2s0 192.168.10.0/24 dev enp2s0 proto kernel scope link src 192.168.10.100 192.168.100.0/24 dev enp3s0 scope link测试双网连通性ping -c 3 192.168.10.1 # 内网网关 ping -c 3 192.168.100.101 # 打印机注意这些手动配置的路由规则在系统重启后会丢失仅适合临时测试使用。如果测试成功我们需要将其转化为持久化配置。4. 创建持久化路由配置在UOS系统中有几种方法可以实现路由规则的持久化。这里介绍最可靠的NetworkManager dispatcher脚本方法。4.1 创建路由配置脚本创建dispatcher脚本文件sudo touch /etc/NetworkManager/dispatcher.d/10-LANandPrinter sudo chmod 755 /etc/NetworkManager/dispatcher.d/10-LANandPrinter编辑脚本内容#!/bin/bash # 等待网络接口就绪 sleep 2 # 删除可能存在的默认路由 ip route del default 2/dev/null || true # 添加新的路由规则 ip route add default via 192.168.10.1 dev enp2s0 ip route add 192.168.100.0/24 dev enp3s0 # 记录操作日志 logger -t network-route Applied custom routing rules设置脚本权限sudo chown root:root /etc/NetworkManager/dispatcher.d/10-LANandPrinter4.2 验证脚本执行手动触发网络连接事件sudo /etc/NetworkManager/dispatcher.d/10-LANandPrinter enp2s0 up检查路由表是否按预期更新ip route show查看系统日志确认脚本执行journalctl -t network-route -n 104.3 启用NetworkManager dispatcher服务确保服务已启用并运行sudo systemctl enable --now NetworkManager-dispatcher.service5. 高级配置与优化基础配置完成后我们可以进一步优化路由设置提高网络的可靠性和性能。5.1 添加路由指标Metric当系统有多个可能的默认路由时可以通过设置metric值来确定优先级ip route add default via 192.168.10.1 dev enp2s0 metric 100 ip route add default via 192.168.100.1 dev enp3s0 metric 200这样即使主内网网关失效系统也会自动切换到备用路由。5.2 配置路由缓存对于频繁访问的打印机可以添加路由缓存提高性能ip route add 192.168.100.101 dev enp3s0 src 192.168.100.1025.3 网络连接监控脚本创建一个定期检查网络连通性的脚本#!/bin/bash # 测试内网连通性 if ! ping -c 1 -W 1 192.168.10.1 /dev/null; then logger -t network-monitor Internal network connection lost # 这里可以添加自动恢复逻辑 fi # 测试打印机连通性 if ! ping -c 1 -W 1 192.168.100.101 /dev/null; then logger -t network-monitor Printer connection lost # 重新应用路由规则 /etc/NetworkManager/dispatcher.d/10-LANandPrinter fi设置cron定时任务(crontab -l 2/dev/null; echo */5 * * * * /path/to/network-monitor.sh) | crontab -6. 常见问题排查即使按照上述步骤配置有时仍可能遇到问题。以下是几个常见问题的解决方法。6.1 路由规则不生效可能原因网卡名称不正确子网掩码不匹配路由规则冲突解决方法确认网卡名称ip link show检查现有路由规则ip route show删除冲突的路由ip route del 192.168.100.0/246.2 网络接口启动顺序问题有时因为网卡启动顺序问题可能导致路由规则应用失败。解决方案 在dispatcher脚本中添加接口状态检查#!/bin/bash INTERFACE$1 STATUS$2 # 只处理特定接口的连接事件 if [[ $INTERFACE ! enp2s0 $INTERFACE ! enp3s0 ]]; then exit 0 fi # 等待所有接口就绪 sleep 5 # 应用路由规则 ip route del default 2/dev/null || true ip route add default via 192.168.10.1 dev enp2s0 ip route add 192.168.100.0/24 dev enp3s06.3 系统更新后配置丢失UOS系统更新有时会重置网络配置。预防措施备份网络配置文件sudo tar czf /root/network_config_backup.tar.gz /etc/NetworkManager/*创建配置验证脚本#!/bin/bash if ! ip route show | grep -q 192.168.100.0/24; then /etc/NetworkManager/dispatcher.d/10-LANandPrinter fi7. 自动化配置脚本为了简化部署过程我们可以创建一个完整的自动化配置脚本。完整配置脚本#!/bin/bash # 定义网络参数 INTERNAL_IFenp2s0 INTERNAL_IP192.168.10.100 INTERNAL_GW192.168.10.1 INTERNAL_NET192.168.10.0/24 PRINTER_IFenp3s0 PRINTER_IP192.168.100.102 PRINTER_GW192.168.100.1 PRINTER_NET192.168.100.0/24 PRINTER_IP192.168.100.101 # 创建dispatcher脚本 cat /tmp/10-LANandPrinter EOF #!/bin/bash INTERFACE\$1 STATUS\$2 # 只处理相关接口 if [[ \$INTERFACE ! $INTERNAL_IF \$INTERFACE ! $PRINTER_IF ]]; then exit 0 fi # 等待接口完全初始化 sleep 3 # 清除现有默认路由 ip route del default 2/dev/null || true # 添加新的路由规则 ip route add default via $INTERNAL_GW dev $INTERNAL_IF ip route add $PRINTER_NET dev $PRINTER_IF logger -t network-route Applied custom routing rules EOF # 部署脚本 sudo mv /tmp/10-LANandPrinter /etc/NetworkManager/dispatcher.d/ sudo chown root:root /etc/NetworkManager/dispatcher.d/10-LANandPrinter sudo chmod 755 /etc/NetworkManager/dispatcher.d/10-LANandPrinter # 启用服务 sudo systemctl enable --now NetworkManager-dispatcher.service # 立即应用配置 sudo /etc/NetworkManager/dispatcher.d/10-LANandPrinter $INTERNAL_IF up echo 双网卡路由配置已完成使用方式将上述脚本保存为setup_dual_net.sh修改脚本开头的网络参数以匹配您的环境运行脚本chmod x setup_dual_net.sh sudo ./setup_dual_net.sh在实际部署中我发现为脚本添加参数解析功能可以进一步提高灵活性让同一脚本能适应不同设备的配置需求。

更多文章