Переадресация трафика с одного сервера на другой с помощью IPTABLES

Рассматривается пример перевода трафика с одного внешнего IP-адреса на другой с помощью IPTABLES.
Данный вариант может использоваться для скрытия IP-адреса второго сервера.

Первый сервер Debian имеет IP-адрес X, второй - Y.

По умолчанию IPTABLES работает на сервере X и пропускает весь трафик.
Для перевода трафика используется две команды:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport port1 -s Z -j DNAT --to Y:port2
iptables -t nat -A POSTROUTING -j MASQUERADE

Здесь port1, port2 - произвольные порты. Например, 3389.
-s Z - указание IP-адреса источника, трафик с которого будет форвардиться. Источник можно не указывать. Обязательно указание сетевого интерфейса eth0.

Для блокировки трафика с некоторого источника можно использовать следующую команду:

iptables -t raw -A PREROUTING -i eth0 -p tcp --dport port3 -s Z -j DROP

Фильтры INPUT DROP не всегда могут работать, т.к. они стоят после PREROUTING.

Открываем дополнительные порты и дропаем весь трафик:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
iptables -P INPUT DROP

Примечание: перед дропанием трафика желательно установить необходимые программы, например, mc.

Дополнительные команды IPTABLES

Вывод списка всех правил

iptables -n -L -v --line-numbers

То же самое, только для цепочки nat

iptables -t nat -L -n

Очистка всех правил

iptables -F

или только цепочки nat

iptables -t nat -F

Удаление правил:

iptables -t nat -L PREROUTING --line-numbers
iptables -t nat -D PREROUTING [line number]

для фильтров:

iptables -D INPUT [line number]

Анализа сетевого трафика

tcpdump -n not port 22

Сохранение правил IPTABLES

iptables-save > /etc/iptables/rules.conf

Добавляем в конец файла /etc/network/interfaces следующие строки:

pre-up sysctl net.ipv4.ip_forward=1
pre-up iptables-restore < /etc/iptables/rules.conf

Первая строка включает форвардинг пакетов, который по умолчанию отключен.

Для ежедневного сброса правил IPTABLES добавляем в файл /etc/crontab:

0 0 *** iptables-restore < /etc/iptables/rules.conf

Добавить комментарий

Ваш e-mail не будет опубликован.

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: