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临时修复 DNS(立即生效)
# 查看系统DNS配置(临时生效,重启可能失效)
cat /etc/resolv.conf
# 查看OpenWrt持久化DNS配置(由dhcp服务管理)
cat /etc/config/dhcp
# 手动添加公共DNS(如114DNS或阿里云DNS)
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
echo "nameserver 223.5.5.5" >> /etc/resolv.conf持久化配置 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 restart- 排查防火墙规则(阻止系统出站流量)
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 restart检查网络服务是否正常
部分核心服务(如 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
版权属于:Joyber
本文链接:https://blog.qqvbc.com/default/1326.html
转载时须注明出处及本声明