首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用iptables修改基于DST端口的SRC,以及修改DST端口

问如何使用iptables修改基于DST端口的SRC,以及修改DST端口
EN

Server Fault用户
提问于 2015-02-04 13:25:12
回答 1查看 1.1K关注 0票数 0

我有个有趣的问题。

我有一个客户端机器IP 10.10.10.55,它需要连接到服务器机器IP 10.10.10.5 --它们都是windows机器,并且它们都通过IP 10.10.10.111处的网关linux机器

客户端向服务器发出许多请求,为了测试目的,我希望服务器认为有许多不同的IP正在访问它。

因此,我想使用iptable来模拟来自客户端的许多源I。

我做了张这样的桌子:

代码语言:javascript
复制
PORT | IP
1020 | 10.10.10.20
1021 | 10.10.10.21
... etc ...

然后,我将连接发送到不同端口的服务器,这样网关上的iptables就会修改它们。

代码语言:javascript
复制
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中捕获端口。

代码语言:javascript
复制
iptables -t nat -A PREROUTING -d 10.10.10.5 -p tcp -j DNAT --to-destination 10.10.10.5:1418

所以我被困在这里了。

如何使用iptable来获得我想要的结果?我想做一些回环。在其中,我修改了预路由中的目标地址,以便返回到网关,并更改源地址。然后,当第二次出现时,它将再次更改目标地址/端口。

代码语言:javascript
复制
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的输出(根据标签的要求):

代码语言:javascript
复制
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
EN

回答 1

Server Fault用户

发布于 2015-02-05 13:09:09

我找到了一个使用MARK选项的解决方案。

对于每个端口,我制定了如下规则:

代码语言:javascript
复制
iptables -t nat -A PREROUTING -s 10.10.10.55 -d 10.10.10.5 -p tcp --dport 1020 -j MARK --set-mark 1020

像这样的一个:

代码语言:javascript
复制
iptables -t nat -A POSTROUTING -m mark --mark 1020 -j SNAT --to-source 10.10.10.20

我也有这样一条规则,它凌驾于目的地之上,这样它就能一直到达它需要去的地方。

代码语言:javascript
复制
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

我还需要制定一个规则,以确保回复也得到了回报!

代码语言:javascript
复制
iptables -t nat -A PREROUTING -d 10.10.10.20 -j DNAT --to-destination 10.10.10.55

差不多就是这样了!

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/664926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档