我无法访问 VPN 客户端后面的服务器。
我希望能够从 192.168.1.6 联系 10.0.0.200:1521。
我配置了 VPN 访问,可以从 192.168.1.6 (Ubuntu) ping 通 192.168.27.65 (Debian)。
在 Debian 上,我可以使用 10.1.0.51 ping 通 10.0.0.200。
我已将 NAT 设置为 192.168.1.6,以便请求前往 10.0.0.200:1521、192.168.27.65:65000(1)遵循以下规则:
iptables -t nat -A PREROUTING -d 10.0.0.200 -p tcp --dport 1521 \
-j DNAT --to-destination 192.168.27.65:65000;
我尝试将 192.168.27.65:65000 (tun0) 路由到 10.1.0.51:65000 (eth0)(2)但没有成功。
iptables -A INPUT -p tcp --dport 65000 -j ACCEPT;
iptables -A OUTPUT -p tcp --dport 65000 -j ACCEPT;
iptables -t nat -A PREROUTING -d 192.168.27.65 -p tcp --dport 65000 \
-j DNAT --to-destination 10.1.0.51:65000;
因此,我无法测试将 10.1.0.51:65000 路由到 10.0.0.200:1521 的最后一条规则(3)。
iptables -t nat -A PREROUTING -d 10.1.0.51 -p tcp --dport 65000 \
-j DNAT --to-destination 10.0.0.200:1521;
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;
如何从 192.168.1.6 到达 10.0.0.200:1521?
我认为我错了,192.168.27.65:65000 (tun0) 无法到达 10.1.0.51:65000,我应该在 tun0 和 eth0 之间进行 NAT,而不是使用 IP,但我不知道该怎么做。
在之前的配置中,我使用以下命令将流量路由到 localhost:port,然后将 localhost:port 路由到另一个主机。但这里的情况有点复杂。
iptables -t nat -A OUTPUT -d 10.0.0.200 -p tcp --dport 1521 \
-j DNAT --to-destination 127.0.0.1:65000
答案1
作为临时解决方法,您可以在 debian 机器上尝试此操作:
iptables -A POSTROUTING -t nat -p TCP -s 192.168.1.6/32 -d 10.0.0.200/32 --dport 1521 -o eth0 -j SNAT --to-source 10.1.0.51
只要 192.168.1.6 主机或路由器知道如何将数据包路由到 debian 主机。然后,debian 主机会将源重写为自己的 IP,并将数据包路由到 10.0.0.200:1521 服务器。因此服务器 10.0.0.200:1521 只会看到来自 IP 10.1.0.51 的连接,而不是真正的来源 192.168.1.6
编辑:还有一件事。 Debian 机器上是否启用了转发?检查: cat /proc/sys/net/ipv4/ip_forward 结果应该是 1