OpenWrt设备连接的PC能正常上网,但OpenWrt自身命令行
当OpenWrt设备连接的PC能正常上网,但OpenWrt自身命令行(如通过SSH登录的系统终端)无法上网时,通常是OpenWrt系统自身的网络配置、DNS或防火墙规则出现了问题。以下是具体的排查思路和解决步骤:
一、先确认问题现象
在OpenWrt命令行中执行以下命令,判断具体故障点:
# 测试能否ping通外网IP(如百度DNS:180.76.76.76)
ping -c 3 180.76.76.76
# 测试能否解析域名(如ping百度)
ping -c 3 www.baidu.com- 若IP能ping通,但域名不能:问题出在 DNS配置。
- 若IP和域名都不能ping通:问题出在 网络接口配置、路由表或防火墙。
二、针对性排查与解决
1. 排查DNS配置(域名无法解析)
OpenWrt命令行依赖DNS服务器解析域名,若DNS配置错误,会导致“能访问IP但不能访问域名”。
(1)查看当前DNS配置
# 查看系统DNS配置(临时生效,重启可能失效)
cat /etc/resolv.conf
# 查看OpenWrt持久化DNS配置(由dhcp服务管理)
cat /etc/config/dhcp- 正常情况下,
/etc/resolv.conf应包含有效的DNS服务器(如nameserver 114.114.114.114或运营商提供的DNS)。 - 若文件为空或DNS服务器不可用(如
nameserver 127.0.0.1但本地DNS服务未运行),则需要手动配置。
(2)临时修复DNS(立即生效)
# 手动添加公共DNS(如114DNS或阿里云DNS)
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
echo "nameserver 223.5.5.5" >> /etc/resolv.conf(3)持久化配置DNS(重启不失效)
OpenWrt的DNS通常由 dnsmasq 服务管理,需在配置文件中指定:
# 编辑dhcp配置
vi /etc/config/dhcp
# 在config dnsmasq部分添加或修改以下内容(指定上游DNS)
list server '114.114.114.114'
list server '223.5.5.5'
# 重启dnsmasq服务生效
/etc/init.d/dnsmasq restart2. 排查网络接口与路由(IP无法ping通)
若IP也无法ping通,说明OpenWrt系统自身未正确连接外网,需检查 WAN接口配置 和 路由表。
(1)检查WAN接口是否获取到IP
OpenWrt的外网通常通过 wan 接口连接(可能是eth0.2、pppoe-wan等,根据实际配置而定):
# 查看所有接口状态(注意wan接口的IP、网关)
ip addr show
ip route show # 查看路由表,重点看默认路由(default via ...)- 正常情况下,
wan接口应分配到IP(如192.168.100.xxx或公网IP),且路由表中有 默认路由(如default via 192.168.100.1 dev wan)。 - 若
wan接口无IP:可能是DHCP获取失败(如上级路由器未分配IP)或静态IP配置错误。
(2)修复WAN接口配置
若WAN使用DHCP(自动获取IP):
# 重启wan接口的DHCP客户端 ifup wan # 查看DHCP获取日志,确认是否成功 logread | grep -i dhcp- 若日志显示“无法获取IP”,检查上级设备(光猫、主路由器)是否正常,或网线是否插对(WAN口需连接上级设备的LAN口)。
若WAN使用静态IP:
# 编辑网络配置 vi /etc/config/network # 找到config interface 'wan'部分,确保配置正确: config interface 'wan' option ifname 'eth0.2' # 接口名称,根据实际修改 option proto 'static' option ipaddr '192.168.100.2' # 与上级同网段的IP option netmask '255.255.255.0' option gateway '192.168.100.1' # 上级设备网关 option dns '114.114.114.114' # 手动指定DNS # 重启网络生效 /etc/init.d/network restart
(3)手动添加默认路由(临时应急)
若路由表中无默认路由,可临时手动添加(重启后失效,需持久化到 /etc/config/network):
# 假设网关为192.168.100.1,wan接口为eth0.2
ip route add default via 192.168.100.1 dev eth0.23. 排查防火墙规则(阻止系统出站流量)
OpenWrt的防火墙默认允许内网设备访问外网,但可能误配置了阻止系统自身(即路由器系统)访问外网的规则。
(1)查看防火墙配置
# 查看防火墙规则(重点看output链是否允许出站)
iptables -L OUTPUT
iptables -L zone_wan_output # WAN区域的出站规则- 正常情况下,
OUTPUT链和zone_wan_output链应允许ACCEPT状态(即允许系统自身向WAN发送流量)。 - 若规则为
DROP或REJECT,则会阻止系统上网。
(2)临时允许WAN出站流量
# 允许系统向WAN发送所有流量(临时生效)
iptables -A zone_wan_output -j ACCEPT
iptables -A OUTPUT -j ACCEPT(3)持久化防火墙配置
# 编辑防火墙配置
vi /etc/config/firewall
# 确保wan区域的output策略为ACCEPT
config zone
option name 'wan'
option input 'REJECT'
option output 'ACCEPT' # 允许出站
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
# 重启防火墙生效
/etc/init.d/firewall restart4. 检查网络服务是否正常
部分核心服务(如 network、firewall)未运行也可能导致问题:
# 检查关键服务状态
/etc/init.d/network status
/etc/init.d/firewall status
/etc/init.d/dnsmasq status
# 若服务未运行,手动启动
/etc/init.d/network start
/etc/init.d/firewall start
/etc/init.d/dnsmasq start三、总结排查流程
- 用
ping IP和ping 域名区分是DNS问题还是网络连接问题。 - DNS问题:检查
/etc/resolv.conf和dnsmasq配置,添加公共DNS。 - 网络连接问题:检查WAN接口IP、路由表默认路由,修复接口配置。
- 防火墙问题:确保WAN区域允许出站流量,避免规则阻止系统自身上网。
通过以上步骤,基本可以解决OpenWrt命令行无法上网的问题。若排查后仍有问题,可通过 logread 查看系统日志,进一步定位错误原因。
版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/1325.html
转载时须注明出处及本声明