我想将我们使用任何工具(如 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-B
。TCP 22
从Server-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