设置ZeroTier与物理网卡间路由访问内部网络服务
加入到ZeroTier网络后,能够做到ZeroTier network 中各主机间的互访,如果内网中有相关服务,无需全部加入到ZeroTier网络,可设置ZeroTier network中某台主机作为到内网的“路由器”,访问内网中的其他主机的服务。
前提及环境信息
- 使用zeroteir服务或已部署私有zeroteir-planet服务;
- ZeroTier中设置了 network;
- 内网中已安装ZeroTier并已加入到对应 network的 Linux 主机(该主机作为“路由器”);
- 假设网络配置信息情况如下。
类别 | 配置项 | 配置值 | 简称 |
---|---|---|---|
ZeroTier服务信息 | ZeroTier的Network ID | d5e04297a19bbd70 | $NETWORK_ID |
ZeroTier服务信息 | ZeroTier的子网设置 | 10.120.100.0/24 | |
内网网络环境信息 | 内网的物理网络设置 | 192.168.1.0/24 | $PHY_SUB |
作为“路由器”的Linux 主机 | ZeroTier 接口名称 | zt7nnig26 | $ZT_IFACE |
作为“路由器”的Linux 主机 | 物理接口名称 | ens160 | $PHY_IFACE |
作为“路由器”的Linux 主机 | ZeroTier接口的 IP 地址 | 10.120.100.1 | $ZT_ADDR |
设置方法
Linux主机中查询ZeroTier网络情况
1 | sudo zerotier-cli listnetworks |
输出 network、接口名称、ip 地址等信息,示例如下:
1 | 200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips> |
ZeroTier管理端设置路由及网关
目的地 | 网关 |
---|---|
$PHY_SUB(192.168.1.0/23) | $ZT_ADDR(10.120.100.1) |
将目标路由配置为略大于实际物理子网,此处为 /23 而不是 /24。
前台配置如图所示:
Linux主机中设置路由表
配置启用 IP 转发
这可能因 Linux 发行版而异,通常:
编辑 /etc/sysctl.conf 文件注释掉 net.ipv4.ip_forward ,若无此项,需添加。
如果想要立即生效,执行如下命令:
1 | sudo sysctl -w net.ipv4.ip_forward=1 |
配置 iptables
设置如下环境变量:
1 | #物理接口 |
iptables中添加路由。
1 | sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE |
保存iptables规则,以便下次重启继续生效。
1 | sudo apt install iptables-persistent |
测试
- 关闭手机 WiFi 使用移动流量
- 加入到d5e04297a19bbd70网络
- 访问内网中的主机服务