当 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
  1. 排查防火墙规则(阻止系统出站流量)
    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
  1. 检查网络服务是否正常
    部分核心服务(如 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

标签: none

添加新评论