1:网关开启IPv4内核转发,增加防火墙规则,将zt网段来的流量转成本地网卡IP发出去的
2:增加路由规则,将一个CIRD地址指向一个网关地址,网关地址是zt网段的地址
1 | iptables -t nat -A POSTROUTING -o eth1 -s 10.242.0.0/16 -j SNAT --to-source 192.168.1.220 |
1 | iptables -t nat -D POSTROUTING -o eth1 -s 10.242.0.0/16 -j SNAT --to-source 192.168.1.220 |
最后还是未成功,感觉是流量没走到zt网卡,还是走了原来的”以太网“接口,所以还是可以访问外网,还是访问不到内网
但是手机上的情况不一样,手机上啥也访问不到,感觉就像是流量走到了zt网络的网关地址,但是网关没有转发流量
另一台网络架构较为简单的windows虚拟机也重现了这个情况,也是zt网络ok,没有互联网
看到一篇教程:https://www.howtoing.com/getting-started-software-defined-networking-creating-vpn-zerotier-one
于是又尝试了一次,这次在A网络(192.168.100.0/24)下新建了一台虚拟机(192.168.100.230)作为zt网络网关
在B网络(192.168.1.0/24)的一台虚拟机作为客户端
将两个机器都安装好zerotier和join到同一网络后
先在A机器配置网关
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
ip link show
,我的是 eth0
和 zt0
1 | # 启用网络地址转换和IP伪装: |
apt-get install iptables-persistent
询问你是否保存当前规则的时候,ipv4和ipv6都选是在my.zerotier.com设置全局路由
在 Managed Routes
中添加一条 0.0.0.0/0
to B机器的zt网络IP
的路由规则
在B机器配置客户端
如果您的客户端正在运行Linux,则需要对其/etc/sysctl.conf文件进行手动更改。 此配置更改需要更改内核对您的客户端流量的可接受返回路径的看法。 由于配置了ZeroTier VPN,因此从您的服务器返回到您的客户端的流量有时可能来自与它发送到的网络地址不同的网络地址。 默认情况下,Linux内核将这些视为无效并丢弃它们,因此有必要覆盖该行为。
vim /etc/sysctl.conf
net.ipv4.conf.all.rp_filter = 2
sysctl -p
zerotier-cli set NetworkID allowDefault=1
按照上面的步骤配置完成后,在B机器上就可以直接curl访问到A网络局域网内的机器了,例如 curl 192.168.100.1
就可以访问到A网络的路由器
直接在路由规则处,添加 192.168.100.0/24 to A网关IP (注意一定要正确的CIDR IP格式)
如果添加成功了,会在1-3秒内在所有客户端执行 ip route
看到刚才添加的规则
客户端也不用设置DefaultRoute=1
就直接可以在B机器访问到A网络的路由器地址了
联系客服