假设我们有一个Wireguard设置,如下图所示(请参阅imgur链接,无法在没有声誉的情况下发布图像),使用以下PostUp & PostDown:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
客户端可以通过Wireguard访问我们的专用网络(服务器不是Wireguard客户端,而只是连接到我们专用网络的第二个网络接口)。在这种情况下,如果我们查看运行在服务器上的服务中的访问日志,我们会发现客户机IP是Wireguard服务器的IP地址(172.16.2.1)。这是正确的,因为在转发时使用伪装来替换源IP。我们希望的结果是看到在我们服务器上运行的服务中的客户机in (即172.16.2.2或172.16.2.3)。是否有一种方式来设置Wireguard服务器上的路由,以便在通过Wireguard转发请求时保留源IP?因此,我们可能会阻止并允许基于客户端IP的客户端在服务器本身中使用访问日志,这些日志可以追溯到特定的客户端?
我知道如何配置iptables,以便从那里安排访问控制,但它不是最理想的解决方案,因为没有办法重新跟踪谁在网络上做了什么。
发布于 2022-01-20 07:50:55
要使双向通信工作,必须正确地配置路由。详细信息取决于实际的网络布局,但原则如下。我将使用10.0.8.0/24作为VPN IP网络,如下所示:
10.0.8.0/24网络的路由,在该网络中,下一个跳被指定为172.16.2.1。如果172.16.2.1已经是默认路由器,它可以正常工作。172.16.2.0/24网络的路由,10.0.8.1是下一个跳(VPN服务器)。使用此配置,路由设置正确,不需要伪装。
如何在服务器和VPN客户端上实际设置路由是一个单独的问题。
https://serverfault.com/questions/1090550
复制相似问题