我想将我的 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 的路由。