开启内核转发
vim /etc/sysctl.conf
1
2
|
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
|
sysctl -p
防火墙转发
1
2
3
4
5
6
7
8
9
10
11
12
13
|
VETH=ztb6xfapqc; PHY_ETH=ens18
# 当转发流量从物理网卡出去时, 进行IP伪装, 否则流量不对称, 数据包回不来(其他机器访问本节点局域网时)
iptables -t nat -A POSTROUTING -o $PHY_ETH -j MASQUERADE
# 允许从物理网卡->虚拟网卡的数据转发
iptables -A FORWARD -i $PHY_ETH -o $VETH -m state --state RELATED,ESTABLISHED -j ACCEPT
# 允许虚拟网卡->物理网卡转发
iptables -A FORWARD -i $VETH -o $PHY_ETH -j ACCEPT
# 当转发流量从虚拟网卡出去时, 进行IP伪装(本节点局域网中的机器需要通过路由转发访问其他机器时)
iptables -t nat -I POSTROUTING -o $VETH -j MASQUERADE
iptables -I FORWARD -i $VETH -j ACCEPT
iptables -I FORWARD -o $VETH -j ACCEPT
|
VETH 代表需要进行处理的虚拟网卡,例如zerotier、tailscale、netbird等等服务运行后创建的虚拟网卡
测试
- 配置路由器转发对应的网段到这台机器, 例如: 10.42.99.0/24(zerotier网段) -> 10.10.0.6(zerotier机器静态ip)
- 在zerotier上ping其他的member, 确认能ping通
- 在局域网其他机器上ping对应的member的ip, 确认能ping通
持久化防火墙规则
1
|
apt install iptables-persistent
|
会提示进行iptables存储, 选Yes即可
最终长这样

reboot
后检查是否可用, 再走一次测试即可