在 VyOS 的统一配置架构下,一旦 sing-box 容器通过 allow-host-networks 和 net-admin 权限成功创建了 tun0 接口,该接口在系统层面的地位就等同于物理网卡。
你可以直接将其定义为防火墙区域(Zone)的成员,并为其配置专用的路由表。
1. 将 tun0 加入防火墙 LAN 区域
在 VyOS 的 Zone-Policy 防火墙架构中,我们将 tun0 视作内部可信接口。
set firewall zone LAN member interface tun0
commit
save为什么这样做? 这样做可以确保 tun0 与你的物理局域网接口(如 eth1)处于同一信任等级,它们之间可以直接通信,且共享相同的流向 WAN 的过滤规则。
2. 配置 Fake-IP 静态路由(策略驱动)
为了实现无感分流,我们需要告诉 VyOS:“所有去往假 IP 地址段的流量,请走 tun0 出去。”
为了不干扰主路由表,建议使用分离路由表配合策略路由 (PBR)。
A. 创建独立的路由表 (Table 100)
set protocols static table 100 route 0.0.0.0/0 interface tun0
set protocols static table 100 route6 ::/0 interface tun0B. 创建防火墙的FAKE-IP组
set firewall group ipv6-network-group FAKE_IPV6 network 'fc00::/18'
set firewall group network-group FAKE_IP network '198.18.0.0/15'C. 创建策略路由 (Policy Route)
set policy route PBR_PROXY interface 'eth1'
set policy route PBR_PROXY rule 10 destination group network-group 'FAKE_IP'
set policy route PBR_PROXY rule 10 set table '100'
set policy route6 PBR_PROXY_V6 interface 'eth1'
set policy route6 PBR_PROXY_V6 rule 10 destination group network-group 'FAKE_IPV6'
set policy route6 PBR_PROXY_V6 rule 10 set table '100'
commit
save
注意:route与route6,eth1是你的LAN口网卡名称,如果是网桥填写网桥名。
3. 验证配置
由于 VyOS 的配置是高度一致的,你可以通过标准命令检查:
- 检查路由表 100:
show ip route table 100预期输出:S*> 198.18.0.0/16 [1/0] is directly connected, tun0 - 检查防火墙关联:
show firewall zone LAN预期输出中应包含tun0。
4. 测试DNS并完成singbox接管
#本地机器测试,测试ipv6需要加上网卡名称
nslookup google.com 192.168.100.1:5353
Server: 192.168.100.1:5353
Address: 198.18.3.40#53
Name: google.com
Address: 198.18.0.34
Name: google.com
Address: fc00::20
如果能成功获得fake-ip,说明singbox的dns解析没有问题。
此时我们可以关闭vyos的dns转发,并修改singbox的配置文件监听端口53
#修改singbox的配置文件,让singbox来监听53号端口
{
"type": "direct",
"tag": "dns-in",
"listen": "::",
"listen_port": 53
}
#删除vyos的dns转发
delete service dns forwarding
#修改RA下发的ipv6dns,前面配置的阿里的dns。'fe80::be24:11ff:fe80:a32a'为LAN口的本地链路地址
delete service router-advert interface eth1 name-server '2400:3200::1'
set service router-advert interface eth1 name-server 'fe80::be24:11ff:fe80:a32a'
commit
save
exit #回到操作模式
#重启singbox
restart container sing-box总结
通过上述操作,你已经完成了ipv4和ipv6双栈的 “网络路径(PBR)+ 安全边界(Zone)+ 业务容器(sing-box)” 的闭环配置。这种方案比在 Linux 下手动写 iptables 或 ip route 要清晰得多,所有改动都记录在 VyOS 的 config.boot 中。
特别是解决ipv6无法使用旁路网关的难题,并且只有需要代理的流量才会进入到singbox中,杜绝DNS泄漏的同时减少资源的占用。
目前存在的问题:Telegram应该是连不上,需要把Telegram的IP地址写入静态路由中并指向TUN0,我没使用,就不配置了。
发表回复