ETH0 GW 设置 无效分析

问题现象

产品有两个网口,eth0跟 eth1 初始分别设为1网段跟2网段。如下:
在这里插入图片描述
现场将eth0 设为2网段,eth2 设为其他网段,eth0 路由查找失败,网络工作异常。(设备无法跨网关工作)
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.40.0 * 255.255.255.0 U 0 0 0 eth1
default 192.168.40.1 0.0.0.0 UG 0 0 0 eth1

问题分析

经测试发现, 只有eth0 设置2网段存在问题,其他网段都正常,如1网段route信息:
[root@M28x ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.40.0 * 255.255.255.0 U 0 0 0 eth1
default 192.168.40.1 0.0.0.0 UG 0 0 0 eth1
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

设备修改IP有两种方法:
1、vi /etc/init.d/S40network
ifconfig eth0 “192.168.1.136” netmask 255.255.255.0
ifconfig eth1 “192.168.2.136” netmask 255.255.255.0
ifconfig eth0 up
ifconfig eth1 up
设备未加载应用程序时, 出厂IP设置采用此方法。

2、vi /opt/nts/setnet.sh
#! /bin/sh
ifconfig eth0 192.168.2.202 netmask 255.255.255.0
route add default gw 192.168.2.1
ifconfig eth0 up
ifconfig eth1 192.168.40.212 netmask 255.255.255.0
route add default gw 192.168.40.1
ifconfig eth1 up
设备启动完成后,通过改方法设置IP。
这里先修改eth0 到2网段, 此时eth1还在2网段。eth0的gw设置无效。

为了使得eth0 设置2网段成功,需要步骤1把eth1的网段调整到其他网段。

ifconfig eth0 “192.168.1.136” netmask 255.255.255.0
ifconfig eth1 “192.168.20.136” netmask 255.255.255.0
ifconfig eth0 up
ifconfig eth1 up

reg=/root/net_phy_rw eth0 0 | awk '{print $9}'
if [ $reg = “0x2100” ]; then
/root/net_phy_rw eth0 0 0x800 >/dev/null
/root/net_phy_rw eth0 0 0x2100 >/dev/null
fi

reg=/root/net_phy_rw eth1 0 | awk '{print $9}'
if [ $reg = “0x2100” ]; then
/root/net_phy_rw eth1 0 0x800 >/dev/null
/root/net_phy_rw eth1 0 0x2100 >/dev/null
fi

#闃叉eth0鑷姩鏂紑
#ping 192.168.1.1 >/dev/null &

#闃叉eth1鑷姩鏂紑
#ping 192.168.20.1 >/dev/null &

修改保存后, route正常。
[root@M28x ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.40.0 * 255.255.255.0 U 0 0 0 eth1
default 192.168.40.1 0.0.0.0 UG 0 0 0 eth1
default 192.168.2.1 0.0.0.0 UG 0 0 0 eth0

尝试方法2
先修改eth1 再修改 eth0
恢复S40network参数设置,修改setnet.sh如下:
vi /opt/nts/setnet.sh
[root@M28x ~]# vi /opt/nts/setnet.sh

#! /bin/sh
ifconfig eth1 192.168.40.0 netmask 255.255.255.0
route add default gw 192.168.40.1
ifconfig eth1 up
ifconfig eth0 192.168.2.212 netmask 255.255.255.0
route add default gw 192.168.2.1
ifconfig eth0 up
~
重启,执行route:
[root@M28x ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.40.0 * 255.255.255.0 U 0 0 0 eth1
default 192.168.2.1 0.0.0.0 UG 0 0 0 eth0
default 192.168.40.1 0.0.0.0 UG 0 0 0 eth1
route 设置成功。

解决方法:

1、修改S40network,将eth1 改到2以外网段。
2、修改setnet.sh 先设置eth1,再设置eth0

总结建议:

双网口进行参数设置时,需深入了解双网口的参数设置要求。

<think>好的,我现在需要帮助用户解决树莓派上eth0设置静态IP失败的问题。首先,用户已经按照之前的指导进行了配置,但可能遇到了问题。我需要考虑各种可能导致静态IP设置失败的原因,并给出相应的解决方法。 首先,用户可能是在编辑dhcpcd.conf文件时出错。我需要检查配置格式是否正确,比如是否正确使用了static关键字,IP地址和子网掩码的格式是否正确。例如,192.168.10.1/24是否正确,是否有拼写错误。另外,用户是否在正确的网络接口(eth0)下添加了配置? 接下来,需要考虑网络冲突。用户设置的静态IP是否与网络中的其他设备冲突?比如,是否存在另一个设备使用了相同的IP地址,导致冲突。这时候需要建议用户使用ping命令检查IP是否已被占用。 然后,检查是否有多重配置冲突。用户可能在多个地方配置了网络,比如/etc/network/interfaces或者NetworkManager,这些配置可能会与dhcpcd.conf中的设置产生冲突。需要提醒用户确保只有一个服务在管理网络接口。 服务未重启也是一个常见问题。用户在修改配置后是否重启了dhcpcd服务?如果没有,新的配置不会生效。需要建议用户执行sudo systemctl restart dhcpcd,并检查服务状态是否有错误。 硬件或驱动问题也可能导致eth0无法正常工作。比如,网线是否连接正常,网卡是否被识别。用户可以使用ip a命令查看eth0是否存在,状态是否为UP。如果有问题,可能需要检查硬件连接或更新驱动。 防火墙或路由规则可能阻止了静态IP的生效。需要检查iptables或ufw是否有规则阻止了eth0的通信。暂时关闭防火墙进行测试,可以帮助排除这个问题。 内核模块问题。某些情况下,需要的网络模块可能没有加载。检查lsmod输出,确认相关的驱动模块如usbnet、smsc95xx是否加载。 文件权限问题。用户是否有权限编辑dhcpcd.conf文件?使用sudo进行编辑是必要的,否则配置无法保存。 DHCP服务器干扰。如果网络中存在其他DHCP服务器,可能会分配不同的IP地址,导致静态IP不生效。需要建议用户检查网络环境,确保没有冲突的DHCP服务。 日志分析也是关键。查看systemctl status dhcpcd和journalctl -u dhcpcd的输出,寻找错误信息,帮助定位问题所在。 最后,如果所有方法都尝试过仍无法解决,可能需要备份后重置网络配置,或者考虑重新安装系统。同时,用户可能遇到的问题可能不止一个,需要逐步排查,从最简单的配置错误开始,逐步深入到硬件或驱动问题。 总结下来,我需要将这些可能的原因分步骤列出,并提供相应的命令和解决方法,帮助用户一步步排查问题,直到找到解决方案。</think>以下是树莓派设置eth0静态IP失败的排查指南,按常见原因排序: --- ### 一、配置文件错误(最常见) **检查点**:`/etc/dhcpcd.conf`配置格式 ```bash # 正确格式示例(必须包含static关键字) interface eth0 static ip_address=192.168.1.100/24 static routers=192.168.1.1 static domain_name_servers=8.8.8.8 114.114.114.114 ``` **常见错误**: 1. 缺少`static`关键字 2. IP地址与子网掩码格式错误(正确格式:IP/掩码位数) 3. 多网卡配置冲突(同时配置了wlan0eth0) --- ### 二、网络冲突检测 **检测命令**: ```bash ping -c 3 192.168.1.100 # 检查IP是否已被占用 arp -n | grep eth0 # 查看ARP缓存 ip -4 addr show eth0 # 验证实际获取的IP ``` **解决方法**: - 更换未被占用的IP地址 - 断开网络后单独连接测试 --- ### 三、多重配置冲突 **检查文件**: ```bash # 旧式配置(与dhcpcd冲突) sudo nano /etc/network/interfaces # 应保持以下内容: auto eth0 iface eth0 inet manual ``` **处理方案**: ```bash sudo systemctl stop networking # 停用旧服务 sudo systemctl disable networking sudo systemctl restart dhcpcd # 重启dhcpcd服务 ``` --- ### 四、服务未生效 **强制重启服务**: ```bash sudo systemctl daemon-reload sudo systemctl restart dhcpcd sudo systemctl status dhcpcd -l # 查看详细错误日志 ``` **日志关键信息**: - `eth0: IAID mismatch` → MAC地址变化导致,删除`/etc/machine-id`后重启 - `No such device` → 网卡未识别 --- ### 五、硬件/驱动问题 **诊断步骤**: 1. 检查物理连接: ```bash ethtool eth0 | grep "Link detected" # 应显示yes ``` 2. 查看内核驱动: ```bash dmesg | grep eth0 # 检查网卡识别记录 lsusb # 如果是USB网卡需确认驱动 ``` **典型问题**: - 使用USB3.0接口导致供电不足 → 换到USB2.0接口 - 网线故障 → 更换网线测试 --- ### 六、防火墙/路由干扰 **临时关闭防火墙测试**: ```bash sudo iptables -F sudo systemctl stop ufw ``` **路由表验证**: ```bash ip route show dev eth0 # 应显示配置的静态路由 ``` --- ### 七、DHCP服务干扰 **强制关闭DHCP客户端**: ```bash sudo dhcpcd -k eth0 # 释放现有租约 sudo dhcpcd -x eth0 # 完全停止服务 sudo dhcpcd -n eth0 # 强制应用新配置 ``` **创建服务锁定文件**(禁用自动配置): ```bash sudo touch /etc/udev/rules.d/80-net-setup-link.rules ``` --- ### 八、内核模块问题 **加载必要模块**: ```bash sudo modprobe smsc95xx # 常见树莓派有线网卡驱动 sudo modprobe lan78xx # 适用于部分USB网卡 ``` **永久生效**: ```bash echo "smsc95xx" | sudo tee -a /etc/modules ``` --- ### 九、故障排查流程图 ```mermaid graph TD A[静态IP失败] --> B{物理连接正常?} B -->|否| C[检查网线/接口] B -->|是| D{显示IP配置?} D -->|否| E[检查dhcpcd服务] D -->|是| F{IP正确?} F -->|否| G[检查配置文件] F -->|是| H[检查网关/DNS] H --> I[测试外部连通性] I -->|失败| J[检查NAT/路由] ``` --- ### 十、终极解决方案 ```bash # 备份原配置 sudo cp /etc/dhcpcd.conf /etc/dhcpcd.conf.bak # 生成最小化配置 echo -e "interface eth0\nstatic ip_address=192.168.1.100/24" | sudo tee /etc/dhcpcd.conf sudo reboot ``` 若仍不生效,建议: 1. 使用全新系统镜像测试 2. 更换SD卡(部分损坏卡会导致配置无法保存) 3. 尝试USB转以太网适配器排除硬件故障 可通过`raspi-config` → Advanced Options → Network Config切换legacy/新版网络配置模式进行交叉验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值