我希望将对机器 A 自身上的某个 IP:端口的所有请求(对于当前或更确切地说是 10/11/12)转发到另一个 IP = 机器 B,以便来自机器 A 上进程的请求转发到具有 IP B 的机器 B。
机器 A 可以访问机器 B 的网络,反之亦然(ip a
在机器 A 上:
2: eno1: ...
inet X.Y.52.60/24 brd X.Y.52.255 scope global eno1
valid_lft forever preferred_lft forever
inet X.Z.52.16/24 brd X.Z.52.255 scope global eno1:1
我尝试过不同的方法:
nftables
chain postrouting {
type nat hook postrouting priority 100; policy accept;
masquerade
}
chain prerouting {
type nat hook prerouting priority -100; policy accept;
ip daddr X.Y.52.69 tcp dnat to X.Z.10.99
}
route add -net X.Y.52.60/32 gw X.Z.10.99
使用sysctl net.ipv4.ip_forward=
(应该重定向所有端口)
(*iptables
- 因为有很多关于此内容的手册,并且命令应该传递给 nftables 包装器。我做到了iptables -t nat -A OUTPUT -d X.Y.52.69 -p tcp --dport 31000 -j DNAT --to-destination X.Z.10.99
:)
据我所知处理socat
或是ssh
不可能的
使用防火墙方法重定向接缝可以工作,nmap 会报告过滤端口。route
我得到了SIOCADDRT: Invalid argument
。
哪一种是最好的方法以及它在当前的 Linux 系统上实际上是如何工作的?