Переадресация TCP-соединений с помощью Iptables

Я получаю соединения с моим сервером с нескольких 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

и т. Д.

Возможно ли, или мне нужно написать собственного демона для достижения этой функциональности?

2
задан 3 July 2013 в 14:14

1 ответ

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
0
ответ дан 3 July 2013 в 14:14

Другие вопросы по тегам:

Похожие вопросы: