# 通过 iptables 在同一个端口根据源地址解复用（demux）

现在遇到一个场景，原来的一个服务只给一个客户端用，但现在增加了一个客户端，由于客户端配置相同，但是服务端需要区别对待两个客户端的服务端配置，所以利用 iptables 根据源地址做了一个端口转发，实现了 demux。

假设：服务器在 192.168.0.1，客户端分别在 192.168.0.2 和 192.168.0.3。客户端配置的服务端地址是 192.168.0.1:8000。之前，在服务器上只跑了一个服务，监听着 8000 端口。

现在，在服务器上再跑一个服务，监听 8001 端口，同时根据需求进行相应的配置。然后，加上如下 iptables 规则：

```shell
$ sudo iptables -t nat -A PREROUTING -s 192.168.0.3 -d 192.168.0.1 -p tcp -m tcp --dport 8000 -j REDIRECT --to-ports 8001
```

这样，在不需要更改客户端的情况下，完成了需要的效果。
