本节知识点:建议学习和理解并掌握 Iptables/Route 运行原理和机制.
一、网络三层 NAT 配置方法(LINUX主机)[推荐]
假设 Zerotier 虚拟局域网的网段是 192.168.88.0/24
- 局域网 A: 192.168.1.0/24
- 局域网 B: 192.168.2.0/24
(如果需要互联)在局域网 A 和 B 中需要各有一台主机安装 Zerotier 并作为两个内网互联的网关
分别是: (括号里面为虚拟局域网的IP地址)
- 192.168.1.10 <192.168.88.10>
- 192.168.2.10 <192.168.88.20>
1.在 Zerotier 网站的 Networks 里面的 Managed Routes下配置路由表,增加如下内容
#如果单向连接,仅需填写下方一个即可.
192.168.1.0/24 via 192.168.88.10
192.168.2.0/24 via 192.168.88.20
2.开启内核转发
#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
#sysctl -p
3.防火墙设置
- 基于 iptables
#其中的 ztyqbub6jp 在不同的机器中不一样,你可以在路由器ssh环境中用 zerotier-cli listnetworks 或者 ifconfig 查询zt开头的网卡名
iptables -I FORWARD -i ztyqbub6jp -j ACCEPT
iptables -I FORWARD -o ztyqbub6jp -j ACCEPT
iptables -t nat -I POSTROUTING -o ztyqbub6jp -j MASQUERADE
#保存配置到文件,否则重启规则会丢失.
iptables-save
- 基于 firewalld (OS >= CentOS 7)
systemctl start firewalld
firewall-cmd --zone=public --add-interface=ztyqbub6jp
# 检查
firewall-cmd --list-all
firewall-cmd --permanent --add-masquerade --zone=public
# 通过 zerotier 访问 192.168.1.0/24 网段
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o ztyqbub6jp -j MASQUERADE -s 192.168.1.0/24
firewall-cmd --reload
二、网络二层桥接方式(linux主机)[未测试,谨慎尝试!]
1.设置桥接
在官网的 Networks 里面,在 Members 选择两个节点前面的小扳手,然后勾选 Allow Ethernet Bridging
2.配置网桥模式
请注意,如果你的设备仅有一个物理网卡,下方配置可能会断网噢.
配置桥接前,请先清空物理网卡的 ip,否则会影响路由出口选择.
# 创建桥接网卡
##添加桥接网卡 br0
brctl addbr br0
##查看
brctl show
ifconfig br0 172.25.47.104/24 ##给br0配置ip172.25.7.11
brctl addif br0 eth0 #添加真实物理网卡到桥接 br0 上
brctl addif br0 ztxxxx #添加zerotier网卡到桥接 br0 上
ping 172.25.7.254 ##测试,是否可以正常使用。
#删除桥接网卡
brctl delif br0 eth0 #从桥接中移出物理网卡 eth0
brctl delif br0 ztxxx #从桥接网卡中移除 zt 网卡
ifconfig br0 down ## 关闭桥接网卡 br0
brctl delbr br0 ##删除桥接网卡 br0
brctl show ##查看桥接是否存在
#以上命令创建的网卡,会在重启丢失,下面是修改配置文件来实现持久化.
vim ifcfg-enp4s0f2 #编写物理网卡网络配置文件
DEVICE=enp4s0f2
ONBOOT=yes
BOOTPROTO=none
BRIDGE=br0
vim ifcfg-br0 #编写桥接配置文件
DEVICE=br0
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.7.254
PREFIX=24
TYPE=Bridge
systemctl restart network #|重新启动网络服务