这个方法使用内网中的linux设备(文中使用的是linux系统的树莓派)来转发zerotier的网络请求到内网其他设备,进而实现在外网使用zerotier来访问内网的真实的ip,比如文中的192.168.0.100。实现只需要在内网中一台设备上安装zerotier就可以实现在外网访问内网所有设备的功能~很好用~
需要注意的是:当完成下面的配置之后,外网设备(例如手机)在连接了zerotier的vpn后,手机的真实主路由(例如手机也连接了wifi)不能与内网的主路由网段相同,会出现污染。例如本例,内网主路由为192.168.0.0,那么手机在外网连接内网时的网络主路由网段不能为192.168.0.0
主要分为两步:
1,在linux设备上配置Nat转发与网卡的设置。
2,在zerotier官网进行路由的配置。
此处的192.168.0.103的设备就是内网的linux设备,由它来进行转发。主要的设置也是在这台设备上。
在树莓派上或其他Linux设备启用IP转发
1,您需要编辑/etc/sysctl.conf文件 开启内核转发,并取消注释以下行:
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
然后,使用以下命令重新加载sysctl配置:
sudo sysctl -p
2, 在树莓派上配置iptables规则以实现网络转发。您可以使用以下命令:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o zt+ -j ACCEPT sudo iptables -A FORWARD -i zt+ -o eth0 -j ACCEPT iptables-save <span class="hljs-comment">#保存配置到文件,否则重启规则会丢失.#其中的 ztyqbub6jp 在不同的机器中不一样,你可以在路由器ssh环境中用 zerotier-cli listnetworks 或者 ifconfig 查询zt开头的网卡名 </span>
其中“zt+”的意思为自动匹配到zerotier的虚拟网卡,默认网卡名称都为zt开头。
这将允许从zerotier网络转发到树莓派的以太网接口(eth0),以及从树莓派的以太网接口转发到zerotier网络。
完成上述步骤后,您的树莓派将作为旁路由器,并且可以通过zerotier访问内部网络的其他设备。请注意,这些步骤可能需要根据您的网络配置进行调整。
第二步:在zerotier的官网进行如下图的设置。
192.168.0.0是内网家用路由器的网段。
192.168.193.163是zerotier分给内网Linux的虚拟ip。
192.168.193.0 是用户选择的zerotier的虚拟ip网段。