我有个有趣的问题。
我有一个客户端机器IP 10.10.10.55,它需要连接到服务器机器IP 10.10.10.5 --它们都是windows机器,并且它们都通过IP 10.10.10.111处的网关linux机器
客户端向服务器发出许多请求,为了测试目的,我希望服务器认为有许多不同的IP正在访问它。
因此,我想使用iptable来模拟来自客户端的许多源I。
我做了张这样的桌子:
PORT | IP
1020 | 10.10.10.20
1021 | 10.10.10.21
... etc ...然后,我将连接发送到不同端口的服务器,这样网关上的iptables就会修改它们。
iptables -t nat -A POSTROUTING -p tcp --dport 1020 -j SNAT --to-source 10.10.10.20
iptables -t nat -A POSTROUTING -p tcp --dport 1021 -j SNAT --to-source 10.10.10.21
... etc ...现在,问题是我实际上只需要通过端口1418访问服务器。这意味着我还必须修改目标端口。但这必须发生在PREROUTING中,这意味着我将无法在POSTROUTING中捕获端口。
iptables -t nat -A PREROUTING -d 10.10.10.5 -p tcp -j DNAT --to-destination 10.10.10.5:1418所以我被困在这里了。
如何使用iptable来获得我想要的结果?我想做一些回环。在其中,我修改了预路由中的目标地址,以便返回到网关,并更改源地址。然后,当第二次出现时,它将再次更改目标地址/端口。
iptables -t nat -A PREROUTING -s 10.10.10.55 -d 10.10.10.5 -p tcp -j DNAT --to-destination 10.10.10.111
iptables -t nat -A POSTROUTING -p tcp --dport 1020 -j SNAT --to-source 10.10.10.20
iptables -t nat -A PREROUTING -s 10.10.10.20 -d 10.10.10.111 -p tcp -j DNAT --to-destination 10.10.10.5:1418但这是行不通的。我相信这一定是可能的。谢谢你帮忙。
来自iptables -L -v -n的输出(根据标签的要求):
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination发布于 2015-02-05 13:09:09
我找到了一个使用MARK选项的解决方案。
对于每个端口,我制定了如下规则:
iptables -t nat -A PREROUTING -s 10.10.10.55 -d 10.10.10.5 -p tcp --dport 1020 -j MARK --set-mark 1020像这样的一个:
iptables -t nat -A POSTROUTING -m mark --mark 1020 -j SNAT --to-source 10.10.10.20我也有这样一条规则,它凌驾于目的地之上,这样它就能一直到达它需要去的地方。
iptables -t nat -A PREROUTING -s 10.10.10.55 -d 10.10.10.5 -p tcp -j DNAT --to-destination 10.10.10.5:1418我还需要制定一个规则,以确保回复也得到了回报!
iptables -t nat -A PREROUTING -d 10.10.10.20 -j DNAT --to-destination 10.10.10.55差不多就是这样了!
https://serverfault.com/questions/664926
复制相似问题