Рассматривается пример перевода трафика с одного внешнего IP-адреса на другой с помощью IPTABLES.
Данный вариант может использоваться для скрытия IP-адреса второго сервера.
Первый сервер Debian имеет IP-адрес X, второй - Y.
По умолчанию IPTABLES работает на сервере X и пропускает весь трафик.
Для перевода трафика используется две команды:
iptables -t nat -A POSTROUTING -j MASQUERADE
Здесь port1, port2 - произвольные порты. Например, 3389.
-s Z - указание IP-адреса источника, трафик с которого будет форвардиться. Источник можно не указывать. Обязательно указание сетевого интерфейса eth0.
Для блокировки трафика с некоторого источника можно использовать следующую команду:
Фильтры INPUT DROP не всегда могут работать, т.к. они стоят после PREROUTING.
Открываем дополнительные порты и дропаем весь трафик:
iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
iptables -P INPUT DROP
Примечание: перед дропанием трафика желательно установить необходимые программы, например, mc.
Дополнительные команды IPTABLES
Вывод списка всех правил
То же самое, только для цепочки nat
Очистка всех правил
или только цепочки nat
Удаление правил:
iptables -t nat -D PREROUTING [line number]
для фильтров:
Анализа сетевого трафика
Сохранение правил IPTABLES
Добавляем в конец файла /etc/network/interfaces следующие строки (или в другой конфиг, где инициализируется сетевой интерфейс):
pre-up iptables-restore < /etc/iptables/rules.conf
Первая строка включает форвардинг пакетов, который по умолчанию отключен.
Для ежедневного сброса правил IPTABLES добавляем в файл /etc/crontab: