如何使用Iptables而不转换资源IP?

如何使用Iptables而不转换资源IP?

我想将我们使用任何工具(如 nmap、medusa 等)访问的某些 IP 地址转移到另一个 IP 地址。

更多详细信息:我有 2 个 IP 地址,第一个 IP 地址是192.168.1.7,第二个是192.168.1.6。当我想使用同一 LAN 中的另一台 PC 访问第一个 IP 地址时,我想将其转移到端口 22 上的第二个 IP 地址,因此我使用 Iptables 来实现这一点,正如您在此处看到的,我在第二个 IP 地址 PC 上添加了一些规则:

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 192.168.43.7

iptables -t nat -A POSTROUTING -j MASQUERADE

我试过之后,它起作用了。但是,我真的需要有关谁访问了 IP 地址的 IP 地址信息,因为结果显示它只是第一的访问第二个 IP 地址的 IP 地址,而不是第三一。你能帮助我吗?因为它总是转换 IP 地址源,我不知道为什么。

哦,我也尝试过使用任何工具端口转发器,例如rinetd索卡特等等。但是它不起作用。你对此有什么想法吗?我真的需要帮助。

[更新] :

我尝试在 iptables 规则上使用 SNAT,但结果相同。我读过这篇文章如何在同一网络中从一个 IP 进行端口转发到另一个 IP?但我不知道该怎么办

答案1

Server-A = 192.168.1.7
Server-B = 192.168.1.6
Client-PC = 10.20.20.3

从您要实现的目标来看,MASQUERADE 规则是罪魁祸首,必须将其删除。以下是一个场景。当Client-PC尝试连接到时Server-A,必须将其重定向到Server-BTCP 22Server-B角度来看,流量来自10.20.20.3

在充当 Linux 网关的主机上,执行以下操作:

$ sudo echo "1" > /proc/sys/net/ipv4/ip_forward
$ sudo iptables -t nat -A PREROUTING -p tcp -m tcp -d 192.168.1.7 --dport 22 -j DNAT --to-destination 192.168.1.6:22
$ sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Server-B,确保它知道如何将返回流量发送回10.20.20.3

如果没有,则添加静态路由Server-B

$ sudo ip route add 10.20.20.3 via X.X.X.X # Where X.X.X.X is the IP of the Linux gateway

相关内容