![在同一端口上复用多个服务(按源端口区分)](https://linux22.com/image/151866/%E5%9C%A8%E5%90%8C%E4%B8%80%E7%AB%AF%E5%8F%A3%E4%B8%8A%E5%A4%8D%E7%94%A8%E5%A4%9A%E4%B8%AA%E6%9C%8D%E5%8A%A1%EF%BC%88%E6%8C%89%E6%BA%90%E7%AB%AF%E5%8F%A3%E5%8C%BA%E5%88%86%EF%BC%89.png)
想象一下,在同一台主机上我有 2 个服务:一个 ssh 守护进程监听端口 22 一个ocks5代理监听端口 1080
我想仅使用端口 22 但取决于源端口来复用这两个服务。
例如:如果源端口是 (1,2,3,4,5,6) 之一,则转到 1080,否则转到端口 22
该规则以一种方式起作用
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 22 -m multiport --sports 1,2,3,4,5,6 -j REDIRECT --to-ports 1080
但我不知道回去的路上该制定什么规则。
我想大概是这样的:
iptables -t nat -A POSTROUTING -p tcp -m tcp .....
但我似乎没有找到合适的人选。
更新:这似乎适用于单个端口:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 --sport 2 -j DNAT --to :1080
答案1
现在我们开始:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -m multiport --sports 1:6 -j DNAT --to :1080
我知道这很简单。