收起左侧

飞牛 NAS + 官方 OpenWrt:关闭 IPv4/IPv6 DHCP,做纯二级路由 + OpenClash 的完整实

4
回复
164
查看
[ 复制链接 ]

2

主题

4

回帖

0

牛值

江湖小虾

关键字:飞牛 NAS、OpenWrt x86 虚拟机、二级路由、旁路由、OpenClash、dnsmasq-full
这篇是我在飞牛 NAS 上,用官方 OpenWrt x86 做 “纯二级路由 + OpenClash” 的完整配置记录,重点包括:

  • 关闭 IPv4 DHCP,让主路由统一分配地址;
  • 关闭 IPv6(LAN + WAN),不折腾 v6;
  • 安装并正确依赖切换到 dnsmasq-full
  • 安装 luci-app-openclash,解决常见依赖冲突;
  • 一些踩坑记录:fake-ip 模式下 ping 异常的原因。

一、网络拓扑和目标说明

拓扑大致是这样:

  • 主路由器(光猫或现有路由):拨号 / 上网 / DHCP 服务器
    • IP:192.168.3.1
  • 飞牛 NAS 上的 OpenWrt x86 虚拟机
    • 作为“二级路由 / 旁路由”,主要职责:
      • 跑 OpenClash 做分流/代理;
      • 不再对下发 IP,不做 DHCP 服务;
      • 不参与 IPv6(v6 全部关掉)。
    • IP:192.168.3.100
  • 终端设备(电脑 / 手机):
    • IP:由主路由发(如 192.168.3.x);
    • 需要走 OpenClash 的设备,把网关改成 192.168.3.100(OpenWrt)。

一句话目标:

主路由负责“发号 + 上网”,OpenWrt 只负责“流量处理 / OpenClash”,不抢 DHCP,不玩 IPv6。


二、在 OpenWrt 上关闭 IPv4 DHCP(作为纯二级路由)

前提:OpenWrt 的 LAN 已经配置成和主路由一个网段,例如:

IP:192.168.3.100
掩码:255.255.255.0
网关:192.168.3.1
DNS:192.168.3.1(或公共 DNS)

2.1 LuCI 图形界面做法

  1. 登录 LuCI → 网络 → 接口
  2. 找到 LAN → 点“修改”
  3. 切换到 DHCP 服务器 这一页
  4. 勾选:“忽略此接口”(Disable DHCP for this interface)
  5. 保存并应用。

2.2 命令行做法(备忘推荐)

SSH 进 OpenWrt,执行:

# 关闭 LAN 的 IPv4 DHCP
uci set dhcp.lan.ignore='1'
uci commit dhcp
/etc/init.d/dnsmasq restart

此时:

  • LAN 口不再给终端发 IPv4 地址;
  • 终端会从主路由拿 IP。

三、彻底关掉 IPv6(LAN + WAN)

你已经关了 IPv4 DHCP,还想让这个 OpenWrt 完全不掺和 IPv6,那主要做两件事:

  1. LAN 侧不再发 IPv6(DHCPv6/RA/NDP)
  2. WAN 侧不再向上级申请 IPv6(关 wan6

3.1 关闭 LAN 的 IPv6 功能

LuCI 做法

  1. 网络 → 接口 → LAN → 修改
  2. 切到 DHCP 服务器 → IPv6 设置
  3. 将三项全部设为“已禁用”:
    • RA 服务:已禁用
    • DHCPv6 服务:已禁用
    • NDP 代理:已禁用
  4. 保存并应用。

命令行做法

uci set dhcp.lan.dhcpv6='disabled'
uci set dhcp.lan.ra='disabled'
uci set dhcp.lan.ndp='disabled'
uci commit dhcp
/etc/init.d/odhcpd restart

3.2 禁用 WAN 的 IPv6 接口(wan6)

LuCI 做法

  1. 网络 → 接口
  2. 找到 wan6 → 点“修改”
  3. 勾选“接口已禁用”或直接在接口列表点“停用/禁用”
  4. 保存并应用。

命令行做法

uci set network.wan6.disabled='1'
uci commit network
/etc/init.d/network restart

到这里,OpenWrt 对 IPv6 的“日常活动”基本就全关了。

如果你有强迫症,想在内核层面直接禁用 IPv6 协议栈,可以额外加一手:

cat >> /etc/sysctl.d/99-disable-ipv6.conf << 'EOF'
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
EOF

/etc/init.d/sysctl restart

重启后 ip addr | grep inet6 基本就看不到 IPv6 地址了。


四、为 OpenClash 做准备:用 dnsmasq-full 覆盖内置 dnsmasq

很多人装 OpenClash 时会撞到这一堆报错:

Collected errors:
 * check_data_file_clashes: Package dnsmasq-full wants to install file /etc/init.d/dnsmasq
   But that file is already provided by package  * dnsmasq
 ...
 * opkg_install_cmd: Cannot install package luci-app-openclash.

原因是:

  • 系统里内置了精简版 dnsmasq
  • luci-app-openclash 依赖功能更全的 dnsmasq-full
  • 两个包要往同一堆文件路径装,opkg 检测到冲突就拒绝。

更坑的是:内置 dnsmasq 属于“ROM 包”,opkg remove dnsmasq 还删不掉,会报:

opkg remove dnsmasq
# -> Command failed: Not found

正确姿势:用 dnsmasq-full 覆盖内置 dnsmasq

直接粗暴但标准地覆盖掉:

opkg update
opkg install dnsmasq-full --force-overwrite

必要时再加一层(一般用不到):

opkg install dnsmasq-full --force-overwrite --force-depends

完成后确认一下:

opkg list-installed | grep dnsmasq
# 看到 dnsmasq-full 存在即可

重启服务:

/etc/init.d/dnsmasq restart

从此以后:

  • system 里的 DHCP/DNS 服务跑在 dnsmasq-full 上;
  • OpenClash 对 dnsmasq-full 的依赖就满足了。

五、安装 luci-app-openclash(以本地 ipk 为例)

我使用的飞牛下载功能,下载到了飞牛主机,然后使用scp命令拷贝到openwrt里。

我这里是提前下载好的 OpenClash 安装包,比如叫 11.ipk,放在 /tmp 下:

cd /tmp
opkg install 11.ipk

如果前面的 dnsmasq-full 没处理好,就会遇到前文那一串 file clash 报错;
处理完 dnsmasq-full 再装,一般就能一次过。

装完后,在 LuCI 左侧菜单里能看到:

服务 → OpenClash

第一次进入 OpenClash 页面,会有这些常规步骤(这里只写备忘,不展开细节):

  1. 上传并选择 Clash 内核(Meta / Premium 等);
  2. 填写订阅链接 / 导入配置文件;
  3. 选择运行模式(一般选 fake-ipredir-host);
  4. 启动 OpenClash 服务。

六、fake-ip 模式下 ping 异常的说明

装完 OpenClash,尤其 fake-ip 模式下,在路由器上执行:

ping www.baidu.com

你很可能会看到类似:

PING www.baidu.com (198.18.0.12): 56 data bytes
ping: sendto: Operation not permitted

看到这别慌,这是 正常现象,原因是:

  1. 198.18.0.0/15 是保留的“测试地址段”,Clash fake-ip 模式会用这个网段作为“假 IP”;
  2. ping 域名时,DNS 已经被 OpenClash 接管,返回的是 fake-ip,而不是百度的真实 IP;
  3. 这个地址段的 ICMP 在本机上会被防火墙/内核拦下,所以报 Operation not permitted

判断网络是否真的正常,应该这么测:

# 1. 直接 ping 公网 IP(不走域名)
ping -c 4 223.5.5.5
ping -c 4 8.8.8.8

# 2. 看内网终端是否能正常上网

如果强迫症想让 ping www.baidu.com 也正常,可以:

  • 临时在命令行停掉 OpenClash 再测:
    /etc/init.d/openclash stop
    ping www.baidu.com
    /etc/init.d/openclash start
    
  • 或在 OpenClash 里把模式改为 redir-host,这样 DNS 返回真实 IP,ping 看起来就“正常”了。

七、让 OpenWrt 作为“纯二级路由 + OpenClash 出口”来用

到目前为止,这台 OpenWrt 的状态大致是:

  • IPv4:
    • LAN 不发 DHCP;
    • 自己是主路由同网段的一个静态 IP(如 192.168.3.100);
  • IPv6:
    • LAN 不发 v6;
    • WAN 不拿 v6(wan6 禁用);
  • DNS:
    • dnsmasq-full,OpenClash 接管;
  • OpenClash:
    • 正常运行、支持 fake-ip/redir-host 分流。

怎么让终端流量经过 OpenClash?

最简单的一种玩法:

“谁想走 OpenClash,就把网关改成 OpenWrt 的 IP”

举个例子:

  • 主路由:192.168.3.1
  • OpenWrt:192.168.3.100

某台电脑手动设置:

  • IP:192.168.3.50
  • 子网掩码:255.255.255.0
  • 网关:192.168.3.100(OpenWrt)
  • DNS:192.168.3.100192.168.3.1

这样这台电脑所有流量都会先打到 OpenWrt,由 OpenClash 处理后再转发到主路由,主路由继续负责上网。

如果想更自动化,可以在主路由里做:

  • 静态路由 / 策略路由 / DHCP 选项,把特定 MAC / IP 的网关发成 192.168.3.100
    这个就取决于你主路由的高级功能了,这里不展开。

八、一条龙命令备忘(纯命令行党收藏)

假设 OpenWrt 已经能正常上网,只是要快速变成“纯 IPv4 二级路由 + 关 IPv6 + 安装 OpenClash”,可以按下面顺序执行(路径、版本按实际调整):

# 1. 关闭 LAN IPv4 DHCP
uci set dhcp.lan.ignore='1'
uci commit dhcp
/etc/init.d/dnsmasq restart

# 2. 关闭 LAN IPv6
uci set dhcp.lan.dhcpv6='disabled'
uci set dhcp.lan.ra='disabled'
uci set dhcp.lan.ndp='disabled'
uci commit dhcp
/etc/init.d/odhcpd restart

# 3. 禁用 WAN IPv6 接口
uci set network.wan6.disabled='1'
uci commit network
/etc/init.d/network restart

# 4. 用 dnsmasq-full 覆盖内置 dnsmasq(为 OpenClash 做准备)
opkg update
opkg install dnsmasq-full --force-overwrite
/etc/init.d/dnsmasq restart

# 5. 安装 OpenClash ipk(假设文件名为 11.ipk)
cd /tmp
opkg install 11.ipk

完成后进 LuCI “服务 → OpenClash”,完成内核、配置文件、订阅等设置即可。


九、最后的小结

这次折腾下来的几点心得:

  1. 做纯二级路由,关键是:

    • LAN 不发 DHCP;
    • IP 与主路由同网段;
    • 想让谁走 OpenClash,就把谁的网关指向 OpenWrt。
  2. 不打算玩 IPv6,就干脆在 LAN 和 WAN 两头都关掉,世界清静不少。

  3. OpenClash 的两个高频坑:

    • dnsmasq vs dnsmasq-full 文件冲突 → 用 dnsmasq-full --force-overwrite 覆盖;
    • fake-ip 模式下 ping 域名 异常 → 属正常情况,用 ping IP 或客户端访问真实网页来判断网络。

如果你看到这里,说明你也在折腾飞牛 + OpenWrt + OpenClash,欢迎点赞收藏、转给需要的朋友,少踩一点我踩过的坑 😄


收藏
送赞
分享

3

主题

27

回帖

0

牛值

江湖小虾

直接OP当主路由,我一直这么用,感觉旁路有有点脱裤子**

软没有硬稳定,而且家里有父母孩子,旁路由随便折腾玩蹦了也不会影响家里网络,存在即合理,没必要一踩一捧  详情 回复
6 小时前

1

主题

88

回帖

155

牛值

社区共建团

社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家

健康路隆哥 发表于 2025-11-6 15:36
直接OP当主路由,我一直这么用,感觉旁路有有点脱裤子**

软没有硬稳定,而且家里有父母孩子,旁路由随便折腾玩蹦了也不会影响家里网络,存在即合理,没必要一踩一捧
有的人脑子跟个二极管一样,单向运行的,啥都要选个边站。明明是应对不同场景的工具而已,非要踩一捧一  详情 回复
3 小时前
科学技术这一仗,一定要打,而且必须打好。

                                                -------**

1

主题

19

回帖

0

牛值

江湖小虾

时也命也 发表于 2025-11-6 16:00
软没有硬稳定,而且家里有父母孩子,旁路由随便折腾玩蹦了也不会影响家里网络,存在即合理,没必要一踩一 ...

有的人脑子跟个二极管一样,单向运行的,啥都要选个边站。明明是应对不同场景的工具而已,非要踩一捧一
1

查看全部评分

8

主题

74

回帖

0

牛值

初出茅庐

可以咸鱼买了openwrt主路由器挂在光猫下玩玩。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则