ip转发

开启内核转发

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 后检查是否可用, 再走一次测试即可

Licensed under CC BY-NC-SA 4.0
记录平时瞎折腾遇到的各种问题, 方便查找
使用 Hugo 构建
主题 Stack 3.29.0Jimmy 设计