Wireguard 中嵌套隧道的实现

Wireguard 中嵌套隧道的实现

我目前正在开展一个项目,该项目要求我创建嵌套的 Wireguard 隧道。也就是说,我需要在客户端和服务器之间创建一个 Wiregaurd 隧道,然后在服务器和网关之间创建另一个隧道。然后,我将来自客户端的所有包转发到我的服务器,并将进入服务器的所有包通过网关转发出去。我已经成功设置了隧道 - 客户端-服务器之间的隧道,以及服务器-网关之间的另一个隧道。我目前在转发所有进入的包以通过网关时遇到问题。此处附有我的服务器的 wg0.conf 在此处输入图片描述

我已经运行了以下命令,但仍然无法使其工作

echo "1 middleman" >> /etc/iproute2/rt_tables

ip route add 0.0.0.0/0 dev wg0 table middleman

ip rule add from <IP of the Client> lookup middleman

 wg set gate0 peer < publickey of the gate > allowed-ips 0.0.0.0/0

当我跑步时

traceroute 4.2.2.2

我仍然看不到通过大门的车辆。如能就此问题提供任何帮助,我将不胜感激。

答案1

将其添加到你的服务器 wireguard 配置(中间框)

[Interface]
Address = X.X.X.X/24 # IPV4 CIDR 
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Add forwarding when VPN is started
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE # Remove forwarding when VPN is shutdown

用新的 vpn 虚拟网卡替换 eth0 接口。通常为 utun1

您还需要在内核中启用数据包转发:

echo "net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1" > /etc/sysctl.d/wg.conf
sysctl --system

相关内容