OpenWrt/iStoreOS ZeroTier网络间路由配置指南

问题描述

在OpenWrt/iStoreOS系统上配置ZeroTier网络与LAN网络之间的路由时,遇到了以下问题:

  • ZeroTier服务启动失败,显示无法绑定到控制接口端口9993
  • 配置了防火墙规则但无法实现网络间通信
  • 从ZeroTier网络Ping LAN设备时显示"无法连到端口"错误

解决方案

1. 修复ZeroTier服务问题

ZeroTier服务可能因端口占用或配置问题而无法启动。解决方法:

# 停止所有ZeroTier相关进程
killall -9 zerotier-one

# 清理ZeroTier状态文件
rm -f /var/lib/zerotier-one/zerotier-one.pid

# 重启ZeroTier服务
/etc/init.d/zerotier stop
sleep 3
/etc/init.d/zerotier start

如果问题持续,可能需要完全重新安装:

opkg remove zerotier
rm -rf /var/lib/zerotier-one
opkg update
opkg install zerotier

然后重新加入您的网络:

zerotier-cli join 您的网络ID

2. 配置网络间路由

2.1 创建ZeroTier防火墙区域

使用UCI命令创建ZeroTier区域:

# 添加ZeroTier区域
uci add firewall zone
uci set firewall.@zone[-1].name='zt_network'
uci set firewall.@zone[-1].network='zthnhcbyru'  # 替换为您的ZeroTier接口名
uci set firewall.@zone[-1].input='ACCEPT'
uci set firewall.@zone[-1].output='ACCEPT'
uci set firewall.@zone[-1].forward='ACCEPT'
uci set firewall.@zone[-1].masq='1'
2.2 添加防火墙转发规则

配置双向转发规则:

# 添加转发规则
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='zt_network'
uci set firewall.@forwarding[-1].dest='lan'
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='lan'
uci set firewall.@forwarding[-1].dest='zt_network'

# 保存并应用配置
uci commit firewall
/etc/init.d/firewall restart
2.3 直接添加iptables规则(如果UCI方法不起作用)

如果UCI配置不起作用,可以直接添加iptables规则:

# 添加转发规则,注意规则顺序很重要,使用-I将规则插入到链的开头
iptables -I FORWARD 1 -i ztyour72cc -o br-lan -j ACCEPT
iptables -I FORWARD 2 -i br-lan -o ztyour72cc -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.242.0.0/16 -o br-lan -j MASQUERADE

3. 启用IP转发

确保系统启用了IP转发:

echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

4. 检查MTU设置

如果遇到连接问题,可以尝试调整MTU:

# 在防火墙区域中启用MTU修复
uci set firewall.@zone[-1].mtu_fix='1'
uci commit firewall

# 或手动设置较小的MTU
ip link set ztyour72cc mtu 1400

5. 配置Windows客户端防火墙

如果LAN网络中的Windows设备无法接收ZeroTier网络的Ping请求,需要配置Windows防火墙:

  • 确保"文件和打印机共享(回显请求 - ICMPv4-In)"规则已在所有网络配置文件中启用

通过命令启用现有的ICMP规则:

netsh advfirewall firewall set rule name="文件和打印机共享(回显请求 - ICMPv4-In)" new enable=yes profile=any

或添加新的ICMP入站规则:

netsh advfirewall firewall add rule name="ICMP Allow incoming ping" protocol=icmpv4:8,any dir=in action=allow

6. ZeroTier网络配置

在ZeroTier网络管理页面上:

  • 确保设备已被授权
  • 添加到LAN网段的路由:
    • 路由:192.168.100.0/24(您的LAN网段)
    • 通过:您的设备在ZeroTier网络中的IP(例如10.242.162.220)

故障排查

检查网络接口

ifconfig

查看所有网络接口的状态,确认ZeroTier接口(如zthnhcbyru)和LAN接口(br-lan)是否正常。

检查防火墙规则

iptables -L FORWARD -v -n
iptables -t nat -L POSTROUTING -v -n

确认FORWARD链中的规则顺序正确,ZeroTier相关规则应位于链的开头。

使用tcpdump分析流量

tcpdump -i ztyour72cc -n host 192.168.100.137
tcpdump -i br-lan -n host 192.168.100.137

这些命令可帮助识别数据包在哪个环节丢失。

检查路由表

ip route

确认路由表中包含ZeroTier网络(如10.242.0.0/16)和LAN网络(如192.168.100.0/24)的路由条目。

总结

配置OpenWrt/iStoreOS上的ZeroTier网络间路由需要确保:

  1. ZeroTier服务正常运行
  2. 正确配置防火墙区域和转发规则
  3. 规则顺序正确(特别是在iptables中)
  4. 启用IP转发
  5. 客户端防火墙配置正确
  6. ZeroTier控制面板中添加适当的路由

这些步骤可以实现ZeroTier虚拟网络与物理LAN网络之间的双向通信。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐