Я получаю соединения с моим сервером с нескольких ip-адресов. Я хочу маршрутизировать эти соединения точно так же, как это делает rinetd, но в зависимости от ip-адреса, с которого происходит соединение для подключения к указанному хосту.
Точно так же:
IP 10.10.12.1 => CONNECTS TO MY SERVER => MY SERVER REDIRECTS IT TO 82.12.12.1
IP 10.10.12.2 => CONNECTS TO MY SERVER => MY SERVER REDIRECTS IT TO 81.121.12.10
и т. Д.
Возможно ли, или мне нужно написать собственного демона для достижения этой функциональности?
iptables
может сделать это:
sudo iptables -t nat -A PREROUTING -s 10.10.12.1 -j DNAT --to 82.12.12.1
sudo iptables -t nat -A POSTROUTING -s 10.10.12.1 -d 82.12.12.1 -j MASQUERADE
Первая команда изменяет адрес назначения пакета, перенаправляя его на внешний хост. Вторая команда изменяет адрес источника, поэтому внешний хост может отправить ответ на ваш сервер.
Возможно, вы захотите перенаправить только пакеты, предназначенные для определенных портов, например, если 10.10.12.1 общается с 82.12.12.1 только через TCP-порты 80 и 1234, первая команда iptables
будет:
sudo iptables -t nat -A PREROUTING -s 10.10.12.1 -p tcp -m multiport --destination-ports 80,1234 -j DNAT --to 82.12.12.1