我想将本地端口转发到远程端口(8041)到远程计算机(10.0.0.42)上的端口(8042)。我可以通过以下方式做到这一点
ssh -L 10.0.0.41:8041:10.0.0.42:8042 user@localhost
哪里10.0.0.41
必然是eth0
.
现在我想在没有所有用户空间和加密开销的情况下执行此操作。
我的猜测是
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.0.0.41 --dport 8041 -j DNAT --to 10.0.0.42:8042
并启用 ip-forward - 但它不起作用。
答案1
您还需要添加 SNAT 规则。
现在,你有这个:
Client ---> NAT box ---> Server
/|\ |
| /
\_____________________/
那是行不通的;客户端不知道 NAT,因此当回复直接来自服务器时,客户端会感到困惑。因此,您需要使服务器将 NAT 框视为源,这可以通过添加 SNAT 规则来实现。
Client <---> NAT box <---> Server