通过VPN转发端口但保留源IP

通过VPN转发端口但保留源IP

我想将我的 Raspberry Pi 端口转发到可通过 VPN 访问的服务器。我还希望能够从服务器查看客户端 IP。

该设置看起来像这样:

                 LAN                                 VPN
Real Client   | <---->  | Raspberry Pi            | <---->    |Server      |
192.168.1.7   |         |192.168.1.8  / 10.8.0.2  |           | 10.8.0.1   |
______________|         |_________________________|           |____________|

因此,客户端应该能够通过端口 80 上的 HTTP 连接到 192.168.1.8 上的 raspberry pi。在那里,数据包应该通过 VPN 转发到服务器 (10.8.0.1)。服务器应该看到连接来自 192.168.1.7。

我该怎么做?我已经尝试过 DNAT:

iptables -A PREROUTING -t nat -i eth0 -d 192.168.1.8 -p tcp --dport 80 -j DNAT --to-destination 10.8.0.1:80
iptables -A FORWARD -p tcp -d 192.168.1.8 --dport 80 -j ACCEPT

但那不管用。我只得到Failed to connect to 192.168.1.8 port 80: Connection refused

答案1

您需要在 Raspberry Pi 上使用普通 IP 路由,而不是任何 NAT。

这要求您在网关设备上设置适当的路由表,以便它们知道需要将发送到其他网络的数据包发送到哪里。

例如,您需要向服务器添加一条路由,告诉服务器 192.168.1.0/24 网络需要通过 10.8.0.2 进行路由。

如果 Raspberry Pi 是 Real Client 的默认网关,则在客户端可能不需要进行此类添加。如果默认网关是其他网关,则需要通过 192.168.1.8 添加到 10.8.0.0/24 的路由。

相关内容