【完美解决】正点原子Linux开发板无法联网ping通百度但可以ping通主机和虚拟机,联通了局域网但无法联通互联网,DNS配置问题

 问题记录

主机通过共享网络给以太网口想让正点原子的阿尔法Linux开发板连上网,网络配置过程如下:

开发板连接的是eth1口,通过在终端输入以下命令进入网络配置文件。

vi /etc/network/interfaces 

 将其配置为了以下地址

但是出现了一些问题,当我让开发板ping主机和Ubuntu虚拟机的网络地址时可以正常ping通,但是无法ping通百度和8.8.8.8,报错如下图所示:

root@ATK-IMX6U:~# ifdown eth1 && ifup eth1
[  718.367006] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[  718.473845] fec 2188000.ethernet eth1: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=20b4000.ethernet:02, irq=-1)
root@ATK-IMX6U:~# [  720.529332] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[  722.474234] fec 2188000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
[  722.482120] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready

root@ATK-IMX6U:~# ping 192.168.137.1
PING 192.168.137.1 (192.168.137.1) 56(84) bytes of data.
64 bytes from 192.168.137.1: icmp_seq=1 ttl=128 time=0.593 ms
64 bytes from 192.168.137.1: icmp_seq=2 ttl=128 time=0.657 ms
64 bytes from 192.168.137.1: icmp_seq=3 ttl=128 time=0.423 ms
64 bytes from 192.168.137.1: icmp_seq=4 ttl=128 time=0.498 ms
64 bytes from 192.168.137.1: icmp_seq=5 ttl=128 time=0.530 ms
^C
--- 192.168.137.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3996ms
rtt min/avg/max/mdev = 0.423/0.540/0.657/0.081 ms
root@ATK-IMX6U:~# ping 192.168.137.4
PING 192.168.137.4 (192.168.137.4) 56(84) bytes of data.
From 192.168.137.1: icmp_seq=1 Redirect Network(New nexthop: 192.168.137.4)
64 bytes from 192.168.137.4: icmp_seq=1 ttl=63 time=0.791 ms
64 bytes from 192.168.137.4: icmp_seq=1 ttl=64 time=0.817 ms (DUP!)
From 192.168.137.1: icmp_seq=2 Redirect Network(New nexthop: 192.168.137.4)
64 bytes from 192.168.137.4: icmp_seq=2 ttl=63 time=0.420 ms
64 bytes from 192.168.137.4: icmp_seq=2 ttl=64 time=0.447 ms (DUP!)
64 bytes from 192.168.137.4: icmp_seq=2 ttl=63 time=0.464 ms (DUP!)
64 bytes from 192.168.137.4: icmp_seq=2 ttl=64 time=0.482 ms (DUP!)
From 192.168.137.1: icmp_seq=3 Redirect Network(New nexthop: 192.168.137.4)
64 bytes from 192.168.137.4: icmp_seq=3 ttl=63 time=0.364 ms
64 bytes from 192.168.137.4: icmp_seq=3 ttl=64 time=0.389 ms (DUP!)
64 bytes from 192.168.137.4: icmp_seq=3 ttl=63 time=0.407 ms (DUP!)
64 bytes from 192.168.137.4: icmp_seq=3 ttl=64 time=0.426 ms (DUP!)
^HFrom 192.168.137.1: icmp_seq=4 Redirect Network(New nexthop: 192.168.137.4)
64 bytes from 192.168.137.4: icmp_seq=4 ttl=63 time=0.376 ms
64 bytes from 192.168.137.4: icmp_seq=4 ttl=64 time=0.402 ms (DUP!)
64 bytes from 192.168.137.4: icmp_seq=4 ttl=63 time=0.420 ms (DUP!)
64 bytes from 192.168.137.4: icmp_seq=4 ttl=64 time=0.439 ms (DUP!)
^H^C
--- 192.168.137.4 ping statistics ---
4 packets transmitted, 4 received, +10 duplicates, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.364/0.474/0.817/0.140 ms
root@ATK-IMX6U:~# ping www.baidu.com
ping: unknown host www.baidu.com
root@ATK-IMX6U:~# ping www.baidu.com
ping: unknown host www.baidu.com
root@ATK-IMX6U:~# ./app_main
This is a SmartHome Demo!
ds_ui_page_thread created successfully
humi_arc created successfully: 0x3b65a0
aiot_mqtt_connect failed: -0x0F0B

please check variables like mqtt_host, produt_key, device_name, device_secret in demo
net_mqtt_aliyun_init failed.
root@ATK-IMX6U:~# ./app_main
This is a SmartHome Demo!
ds_ui_page_thread created successfully
aiot_mqtt_connect failed: -0x0F0B

please check variables like mqtt_host, produt_key, device_name, device_secret in demo
net_mqtt_aliyun_init failed.
root@ATK-IMX6U:~# ./app_main
This is a SmartHome Demo!
ds_ui_page_thread created successfully
aiot_mqtt_connect failed: -0x0F0B

please check variables like mqtt_host, produt_key, device_name, device_secret in demo
net_mqtt_aliyun_init failed.
root@ATK-IMX6U:~# ping 8.8.8.
ping: unknown host 8.8.8.
root@ATK-IMX6U:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.137.10 icmp_seq=1 Destination Host Unreachable
From 192.168.137.10 icmp_seq=2 Destination Host Unreachable
From 192.168.137.10 icmp_seq=3 Destination Host Unreachable
From 192.168.137.10 icmp_seq=4 Destination Host Unreachable
From 192.168.137.10 icmp_seq=5 Destination Host Unreachable
From 192.168.137.10 icmp_seq=6 Destination Host Unreachable
^C
--- 8.8.8.8 ping statistics ---
7 packets transmitted, 0 received, +6 errors, 100% packet loss, time 6002ms
pipe 3
root@ATK-IMX6U:~#
可以看到可以ping通主机和Ubuntu,但是ping 8.8.8.8和百度就有问题

解决问题 

通过chatgpt知道了当前的情况是局域网内的连接正常,但无法连接到互联网。这通常与路由或DNS设置有关。发现的确是DNS没有设置不导致无法解析域名的问题。

所以检查并配置 /etc/resolv.conf 文件,通过命令:

nano /etc/resolv.conf

然后在其中添加

nameserver 8.8.8.8
nameserver 8.8.4.4

再重启一下网络

ifdown eth1 && ifup eth1

再尝试ping了8.8.8.8和baidu,问题解决。

永久解决/etc/resolv.conf重启失效问题

删除原有的文件重新建立一个

sudo rm -f /etc/resolv.conf
sudo nano /etc/resolv.conf

#填写上指定的DNS服务器:
nameserver 8.8.8.8
nameserver 8.8.4.4

此时resolv.conf文件的内容就会被锁定不会被重启覆盖

chattr +i /etc/resolv.conf

想要解锁的话运行:

chattr -i /etc/resolv.conf

复位重启后cat下resolv.conf,发现确实没有被修改,也可以正常ping通百度,nice!!!

 

结尾

希望能够帮助到大家解决这个问题,欢迎点赞收藏关注一波,如果无法解决也可以留言,或者也可以提供其他方法供其他小伙伴参考!!!

<think>好的,用户的问题是关于主机开发板之间的网络性差异,具体来说,主机可以ping,但开发板不行,需要排查ping不通的原因。首先,我需要整理用户提供的引用内容,看看有没有相关的信息可以帮助解决这个问题。 根据引用中的内容,特别是引用[1]、[2]、[3]、[4]、[5],里面提到了ping命令的应用场景、网络故障排查的方法,以及一些具体的例子,比如EVB3568与PC直连测试、无线网卡驱动的问题等。用户的问题可能涉及硬件连接、IP配置、防火墙设置或者驱动问题。 首先,用户提到主机可以ping,但开发板不行,这可能意味着开发板本身存在网络配置问题或者硬件问题。需要从基础开始排查,比如物理连接是否正确,IP地址是否在同一子网,子网掩码网关设置是否正确。接着,检查开发板网络接口状态,是否有连接指示灯正常闪烁,这可以初步判断物理层是否正常。 然后,查看开发板的IP配置是否正确。如果开发板使用动态IP(DHCP),需要确认它是否成功获取到了IP地址。可以使用ifconfig或ip addr命令来查看。如果IP地址配置错误,可能导致无法信。此外,子网掩码网关的设置错误也会导致无法跨子网信,这时候即使主机ping开发板也可能无法响应。 接下来,检查主机开发板之间的防火墙设置。防火墙可能会阻止ICMP请求,导致ping不通。用户需要检查主机上的防火墙是否有规则阻止了来自开发板的请求,同时开发板如果有防火墙的话,也需要检查。例如,在Linux系统上,可以使用iptables或ufw来查看防火墙规则。 此外,引用[5]提到了无线网卡驱动的问题,导致内核错误。虽然用户的问题可能是有线连接,但如果开发板使用的是无线连接,可能需要检查驱动是否正确安装,或者是否需要重新编译驱动。例如,ath9k_htc驱动在新内核下可能需要重新编译才能正常工作,否则会出现空指针错误导致宕机,进而影响网络功能。 另一个方面是网络设备本身的问题。例如,网线或交换机端口故障,或者开发板的网卡硬件有问题。可以尝试更换网线或连接到不同的端口来排除物理层的问题。此外,使用其他设备(如另一台电脑)ping开发板,看是否能,这有助于确定问题是否出在开发板还是主机配置上。 路由问题也可能导致ping不通。如果主机开发板不在同一子网,需要确保网关路由正确。可以使用route命令查看开发板的路由表,确认默认网关是否设置正确。如果存在多个网络接口,还需要检查是否有路由冲突的情况。 还有可能的是ARP缓存问题。如果主机的ARP缓存中没有开发板的MAC地址,可能会导致信失败。可以尝试清除ARP缓存(arp -d命令)或者重启网络服务来刷新缓存。 最后,引用[3]提到了ping请求超时的解决方法,比如检查DNS设置,虽然用户的问题可能不是DNS相关,但这也提醒我们需要全面检查网络配置的各个方面。例如,开发板DNS设置是否正确,是否能够解析域名,但如果是直连IP的话,DNS可能不是问题所在。 综上所述,需要按照步骤逐一排查物理连接、IP配置、防火墙、驱动、路由、ARP缓存等方面。可能还需要查看系统日志(如dmesg或journalctl)来寻找硬件错误或驱动加载失败的记录。如果所有配置都正确,但问题依然存在,可能需要考虑硬件故障或更换网络设备进行测试。</think>### 主机开发板网络性差异排查指南 #### 一、物理连接检查 1. **网线与接口状态** - 确认开发板主机/路由器过网线直连,检查网线是否完好(可更换测试)[^1][^2]。 - 观察开发板网口指示灯是否正常闪烁,若未亮起可能是硬件接触不良或供电异常[^5]。 2. **网络拓扑验证** - 若过交换机/路由器连接,确保设备端口工作正常(尝试更换端口测试)[^2]。 #### 二、网络配置检查 1. **IP地址与子网匹配** - 在开发板上执行 `ifconfig` 或 `ip addr`,确认其IP地址与主机在同一子网。 - 示例:主机IP为 $192.168.1.100$,开发板IP应类似 $192.168.1.x$,子网掩码为 $255.255.255.0$[^2]。 - 若使用DHCP,检查开发板是否成功获取IP(日志中可能包含 `dhclient` 报错)。 2. **网关与路由表** - 执行 `route -n` 查看开发板路由表,确认默认网关指向正确路由器IP[^4]。 - 跨子网信需配置静态路由,例如: ```bash route add default gw 192.168.1.1 ``` #### 三、防火墙与协议过滤 1. **主机防火墙规则** - 在主机上临时关闭防火墙测试: ```bash # Linux sudo ufw disable # Windows netsh advfirewall set allprofiles state off ``` - 若关闭后能ping,需添加ICMP协议放行规则[^3]。 2. **开发板协议支持** - 部分嵌入式系统可能未启用ICMP响应,需检查内核配置: ```bash sysctl -a | grep icmp_echo_ignore_all ``` 若值为 `1`,修改为 `0` 以允许响应: ```bash sysctl -w net.ipv4.icmp_echo_ignore_all=0 ``` #### 四、驱动与硬件问题排查 1. **网卡驱动兼容性** - 检查开发板网卡驱动加载状态: ```bash dmesg | grep -i eth0 # 替换为实际网卡名 ``` - 若使用无线网卡(如ath9k_htc),旧驱动与新内核可能冲突,需重新编译驱动。 2. **硬件故障排除** - 尝试将开发板连接其他网络设备(如手机热点),验证是否为特定网络环境问题。 #### 五、进阶诊断工具 1. **ARP缓存验证** - 在主机上执行 `arp -a`,确认开发板IP对应的MAC地址已正确缓存。 - 开发板可主动ping主机以刷新ARP表: ```bash ping 192.168.1.100 # 替换为主机IP ``` 2. **抓包分析** - 使用 `tcpdump` 在开发板抓取ICMP请求: ```bash tcpdump -i eth0 icmp ``` - 若主机发送的请求未到达开发板,可能为交换机/VLAN配置问题。 #### 六、典型场景案例 - **案例1:IP冲突** 开发板主机IP冲突会导致单向信异常,使用 `arping` 检测IP占用: ```bash arping -I eth0 192.168.1.101 ``` - **案例2:内核网络模块异常** 开发板执行 `ping` 时内核崩溃(如引用[5]的NULL指针错误),需更新或重编译驱动。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值