网站界面设计尺寸帝国cms做笑话网站
网站界面设计尺寸,帝国cms做笑话网站,wordpress 微信朋友圈,合肥瑶海区教育局官网1. 问题来了#xff1a;双网卡为何“打架”#xff1f;
最近在部署一台国产化工控设备#xff0c;系统是统信UOS#xff0c;遇到了一个挺典型的网络问题。设备上有两个网卡#xff0c;一个#xff08;eth0#xff09;需要接入公司的内部业务网络#xff0c;另一个…1. 问题来了双网卡为何“打架”最近在部署一台国产化工控设备系统是统信UOS遇到了一个挺典型的网络问题。设备上有两个网卡一个eth0需要接入公司的内部业务网络另一个eth1则专门用来连接一台网络打印机。单独测试的时候一切正常只插内网线访问内部服务器没问题只插打印机线打印任务唰唰的。但只要两根网线同时插上怪事就来了——打印机倒是能正常用可内网却死活连不上了业务系统完全访问不了。这其实就是典型的双网卡路由冲突。对于很多刚接触Linux网络管理或者从Windows环境转过来的朋友来说这个问题可能有点让人摸不着头脑。在Windows下系统有时能“智能”地帮你处理多网卡但在Linux尤其是像UOS这样的发行版里网络路由规则是非常明确和“死板”的。系统本身并不知道你心里想让哪些流量走哪个口它只会严格按照路由表这个“交通规则”来转发数据包。当两个网卡都配置了IP地址和网关时系统就会生成两条默认路由或者因为网关优先级问题产生混乱。想象一下你的电脑有两个大门网卡都连着不同的街道网络。当你想去一个特定的地址比如内网服务器时如果两个门卫路由表都声称自己那条路能到或者其中一个门卫把去所有地方的路都指给了自己那你的数据包很可能就走错了门跑到打印机那条街上然后迷路丢包了。所以我们的核心任务就是手动制定一份精确的“交通规则”明确告诉系统所有不知道去哪的普通流量默认路由都从eth0这个“主大门”走去往打印机所在的那条特定街道192.168.100.0/24网段的流量则必须从eth1这个“专用侧门”走。这样内外网的访问就能井水不犯河水并行不悖了。2. 动手之前摸清家底确认网络环境在开始敲命令之前准备工作至关重要。盲目配置只会让问题更复杂。首先我们必须百分之百确认当前的网络连接状态和接口信息。在UOS系统里网卡名称可能不是简单的eth0、eth1特别是某些工控主板或使用了特定网卡驱动时名称可能是enp3s0、ens33之类的。用错接口名所有配置都是白搭。打开终端我们先用几个命令来“侦察”一下ip addr show或者用老牌但好用的ifconfig -a这个命令会列出所有网络接口的详细信息。你需要找到那两个物理上连着网线的接口。通常已经连接并获取到IP的接口其state会显示为UP并且会有inet字段显示IP地址。记下它们的名字比如我们假设是eth0和eth1。接下来看看系统当前是怎么“指路”的也就是查看路由表route -n或者更现代的ip route show重点关注default或0.0.0.0这一行它代表了默认网关。如果两个网卡都配置了网关这里可能会出现两条默认路由或者指向了错误的接口这就是冲突的根源。同时观察是否有指向打印机网段比如192.168.100.0/24的特定路由。最后明确你的网络参数。根据场景我们假设信息如下但请务必替换成你实际的环境参数网络类型网卡接口本机IP地址网关地址目标设备/网段内部业务网eth0192.168.10.100192.168.10.1整个内网 (如 192.168.10.0/24)打印机网络eth1192.168.100.102192.168.100.1打印机IP: 192.168.100.101重要提示请务必向你的网络管理员确认内网和打印机网络的网段、子网掩码、网关地址。特别是打印机网络它可能是一个独立的、小型的局域网网关可能就是你工控机在eth1上配置的IP也可能另有一个路由器。搞清楚这些是配置成功的前提。我建议把上面查到的信息和你从网络管理员那里得到的信息一起记在文本文件里后续配置时要反复核对。3. 核心实战一步步配置静态路由好了环境摸清了现在开始最关键的一步——配置路由。我们会先在命令行里临时添加路由进行测试成功后再做成永久配置。这样做最安全万一配错了重启一下机器就能恢复。3.1 第一步设定“主干道”默认网关首先我们要确立一条“主干道”即默认网关。这条规则的意思是所有目的地不在本机已知路由表中的数据包统统发往这个网关。在我们的场景里我们希望绝大部分流量比如访问互联网、访问其他业务服务器都走内网eth0。假设内网网关是192.168.10.1执行以下命令sudo route add default gw 192.168.10.1 dev eth0或者使用ip命令更推荐功能更强大sudo ip route add default via 192.168.10.1 dev eth0敲黑板注意这里有个巨坑原始文章里写的是119.168.10.1这看起来像是个笔误把192打成了119。网关地址填错整个内网就瘫痪了。所以一定要核对清楚你的网关到底是192.168.10.1还是其他地址。执行后立刻用route -n或ip route show检查。你应该能看到一行0.0.0.0的目标网关是你刚设置的地址接口是eth0。3.2 第二步开辟“专用车道”特定网段路由接下来我们要为打印机开辟一条“专用车道”。告诉系统所有要去往192.168.100.0这个网段的数据包别走默认的eth0请专门从eth1口出去。假设打印机网段是192.168.100.0子网掩码是255.255.255.0也就是/24执行sudo route add -net 192.168.100.0 netmask 255.255.255.0 dev eth1使用ip命令的写法sudo ip route add 192.168.100.0/24 dev eth1这里有两个关键点目标写网段不是写打印机IP命令里是192.168.100.0而不是打印机的具体IP192.168.100.101。因为网络上可能不止打印机一台设备比如还有管理界面写网段能覆盖整个子网。掩码要对齐192.168.100.0对应掩码255.255.255.0。如果你的打印机网络是192.168.0.0/16这样的大网段那掩码就要写成255.255.0.0。不匹配的话命令会报错。3.3 第三步现场验收测试配置完不是就结束了必须立刻验证。这是避免后续折腾的黄金步骤。验证路由表再次运行route -n。你应该看到类似下面的结构Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1这表示默认路由走eth0去往192.168.10.0/24的走eth0这是直连路由系统自动生成去往192.168.100.0/24的走eth1。完美测试连通性测试内网ping一个内网的其他主机比如ping 192.168.10.50找一个你知道在线的IP。应该能通。测试打印机ping 192.168.100.101打印机IP。也应该能通。关键测试路径追踪用traceroute或tracepath命令分别追踪到内网地址和打印机地址的路径。观察第一跳出口是否正确。例如traceroute 192.168.10.50 # 第一跳应该是192.168.10.1 (eth0网关) traceroute 192.168.100.101 # 第一跳应该是192.168.100.1 或直接显示eth1的IP表明没走网关直接二层通信如果测试失败比如内网不通检查默认网关是否设错、eth0的IP配置是否正确。如果打印机不通检查打印机路由的网段和掩码是否写对eth1的IP配置和物理链路是否正常。可以使用sudo route del命令删除错误的路由重新添加例如sudo route del -net 192.168.100.0 netmask 255.255.255.0。4. 固化成果让配置开机自动生效通过命令行添加的路由是临时的系统重启就没了。我们当然不希望每次开机都手动敲一遍所以需要把成功的配置固化到系统里实现开机自启动。在UOS这类使用NetworkManager管理网络的系统上一个比较优雅的方法是使用NetworkManager的Dispatcher脚本。这个机制允许你在网络连接状态发生变化比如启动、关闭时自动执行自定义脚本。4.1 方法详解使用NetworkManager Dispatcher确保服务启用首先确认NetworkManager-dispatcher服务是启用的。sudo systemctl enable --now NetworkManager-dispatcher.service创建调度脚本在/etc/NetworkManager/dispatcher.d/目录下创建脚本。这个目录下的脚本会按文件名顺序执行。文件名最好以数字开头方便排序和管理。sudo vim /etc/NetworkManager/dispatcher.d/10-setup-dual-route我习惯用vim你用nano或者图形化编辑器也行。编写脚本内容将我们测试成功的命令写进去。切记一定要把示例IP换成你自己的#!/bin/bash # 当eth0接口启动时设置路由 if [ $1 eth0 ] [ $2 up ]; then # 等待一下确保IP地址已经配置好 sleep 2 # 删除可能存在的错误默认路由谨慎操作可根据需要添加 # ip route del default 2/dev/null # 添加默认网关 via eth0 ip route add default via 192.168.10.1 dev eth0 metric 100 # 添加打印机网段路由 via eth1 (假设eth1也已启动) ip route add 192.168.100.0/24 dev eth1 metric 50 fi脚本解读与优化if语句判断只有当设备eth0的状态变为up启动时才执行避免重复配置。sleep 2给网络接口一点时间完成DHCP或静态IP的配置避免因IP未就绪而添加路由失败。使用了ip route命令并添加了metric度量值。这个值代表路由的优先级数值越小优先级越高。这里给默认路由一个较高的metric100给打印机路由一个较低的metric50是一种更细致的控制但在这个简单场景中不是必须的。清晰的dev指定已经足够。我注释掉了ip route del default这一行。在不确定的情况下删除默认路由是危险的可能导致瞬间失联。更安全的做法是确保你的网络配置如/etc/network/interfaces或NM连接配置本身只在一个接口上设置了网关。设置脚本权限脚本必须属于root且有可执行权限。sudo chown root:root /etc/NetworkManager/dispatcher.d/10-setup-dual-route sudo chmod 755 /etc/NetworkManager/dispatcher.d/10-setup-dual-route测试脚本你可以手动模拟触发或者直接重启网络服务、重启系统来测试。sudo systemctl restart NetworkManager重启后再次运行ip route show检查路由是否如预期一样自动配置好了。4.2 备选方案传统/etc/network/interfaces如果适用如果你的UOS系统没有使用NetworkManager或者你更习惯传统的配置方式可以编辑/etc/network/interfaces文件操作前务必备份。但请注意UOS桌面版默认可能由NetworkManager接管直接修改此文件可能不生效或被覆盖。假设配置如下# 内网接口 eth0 auto eth0 iface eth0 inet static address 192.168.10.100 netmask 255.255.255.0 gateway 192.168.10.1 # 在接口配置后执行的路由命令 up route add -net 192.168.100.0 netmask 255.255.255.0 dev eth1 # 打印机接口 eth1 auto eth1 iface eth1 inet static address 192.168.100.102 netmask 255.255.255.0 # 注意这里没有gateway避免产生第二个默认路由修改后使用sudo systemctl restart networking重启网络服务。这种方法更直接但灵活性和可管理性不如Dispatcher脚本。5. 深度排错与高级技巧即使按照步骤操作有时还是会遇到问题。这里分享几个我踩过的坑和排查思路。问题一路由添加了但打印机还是不通检查防火墙UOS可能默认开启了防火墙。打印机通信可能需要特定的端口如9100端口用于RAW打印515端口用于LPR631端口用于IPP。临时关闭防火墙测试一下sudo ufw disable如果使用ufw。如果通了就需要添加防火墙规则放行打印机端口的流量特别是从eth1接口进来的。sudo ufw allow in on eth1 to any port 9100检查ARP表局域网通信依赖ARP协议。可以查看ARP缓存里有没有打印机的MAC地址ip neigh show dev eth1。如果没有尝试ping一下打印机IP然后再看。如果还是没有可能是二层链路问题网线、交换机端口、打印机网络故障。问题二内网访问变慢或不稳定路由Metric值如果内网有多个网段除了默认路由你可能还需要为某些特定的内网网段添加更精确的路由。如果eth1连接的打印机网络恰好和内网某个网段重叠比如都是192.168.1.x那就会产生严重冲突必须修改其中一个网络的IP规划。连接跟踪Conntrack干扰对于更复杂的网络环境如果涉及到NAT或者状态防火墙有时连接跟踪表可能会影响回流路径。这种情况相对复杂可以尝试调整sysctl内核参数但建议在有经验后操作。问题三配置重启后部分失效脚本执行顺序确保Dispatcher脚本的文件名数字前缀足够小能在其他可能修改路由的脚本之前执行。网络服务竞争如果系统内同时有networkd、NetworkManager、networking等多个网络服务在运行可能会产生冲突。UOS桌面版通常以NetworkManager为主建议禁用其他服务sudo systemctl stop networking sudo systemctl disable networking。查看日志使用journalctl -u NetworkManager --since 5 minutes ago或journalctl -f实时查看日志搜索你的脚本文件名或“route”关键词看是否有执行错误。高级技巧使用路由表Table和策略路由Policy Routing对于极端复杂的环境比如需要基于源IP地址决定出口可以使用更强大的策略路由。这涉及到创建自定义路由表、添加规则ip rule。例如可以让来自本机某个服务的流量固定走打印机网络。这超出了本文基础范围但如果你未来遇到“来自工控机自身应用的访问不走默认路由”的需求这就是下一步的研究方向。一个简单的例子是创建名为printer的路由表并在其中添加默认网关为打印机网络网关然后通过规则将特定标记的流量导入该表。