Пример: iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-ports 8080
Описание: Ключ –to-portsопределяет порт или диапазон портов назначения. Без указания ключа –to-ports, перенаправления не происходит, т.е. пакет идет на тот порт, куда и был назначен. В примере, приведенном выше, –to-ports 8080указан один порт назначения. Если нужно указать диапазон портов, то мы должны написать нечто подобное –to-ports 8080-8090. Этот ключ можно использовать только в правилах, где критерий содержит явное указание на протокол TCP или UDP с помощью ключа –protocol.
REJECTиспользуется, как правило, в тех же самых ситуациях, что и DROP, но в отличие от DROP, команда REJECTвыдает сообщение об ошибке на хост, передавший пакет. Действие REJECTна сегодняшний день может использоваться только в цепочках INPUT , FORWARD и OUTPUT (и во вложенных в них цепочках). Пока существует только единственный ключ, управляющий поведением команды REJECT.
Таблица 6-21. Действие REJECT
(Ключ – Пример – Описание)
Ключ: –reject-with
Пример: iptables -A FORWARD -p TCP –dport 22 -j REJECT –reject-with tcp-reset
Описание: Указывает, какое сообщение необходимо передать в ответ, если пакет совпал с заданным критерием. При применении действия REJECTк пакету, сначала на хост-отправитель будет отослан указанный ответ, а затем пакет будет «сброшен». Допускается использовать следующие типы ответов: icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited и icmp-host-prohibited. По-умолчанию передается сообщение port-unreachable. Все вышеуказанные типы ответов являются ICMP error messages . Дополнительную информацию по типам ICMP сообщений вы можете получить в приложении Типы ICMP . В заключение укажем еще один тип ответа – tcp-reset, который используется только для протокола TCP. Если указано значение tcp-reset, то действие REJECTпередаст в ответ пакет TCP RST, пакеты TCP RSTиспользуются для закрытия TCP соединений. За дополнительной информацией обращайтесь к RFC 793 – Transmission Control Protocol . (Список типов ICMP ответов и их алиасов вы сможете получить введя команду iptables -j REJECT -h прим. перев.) .
Действие RETURNпрекращает движение пакета по текущей цепочке правил и производит возврат в вызывающую цепочку, если текущая цепочка была вложенной, или, если текущая цепочка лежит на самом верхнем уровне (например INPUT ), то к пакету будет применена политика по-умолчанию. Обычно, в качестве политики по-умолчанию назначают действия ACCEPTили DROP.
Для примера, допустим, что пакет идет по цепочке INPUT и встречает правило, которое производит переход во вложенную цепочку – –jump EXAMPLE_CHAIN. Далее, в цепочке EXAMPLE_CHAIN пакет встречает правило, которое выполняет действие –jump RETURN. Тогда произойдет возврат пакета в цепочку INPUT . Другой пример, пусть пакет встречает правило, которое выполняет действие –jump RETURNв цепочке INPUT . Тогда к пакету будет применена политика по-умолчанию цепочки INPUT .
SNATиспользуется для преобразования сетевых адресов (Source Network Address Translation), т.е. изменение исходящего IP адреса в IP заголовке пакета. Например, это действие можно использовать для предоставления выхода в Интернет другим компьютерам из локальной сети, имея лишь один уникальный IP адрес. Для этого. необходимо включить пересылку пакетов (forwarding) в ядре и затем создать правила, которые будут транслировать исходящие IP адреса нашей локальной сети в реальный внешний адрес. В результате, внешний мир ничего не будет знать о нашей локальной сети, он будет считать, что запросы пришли с нашего брандмауэра.
SNATдопускается выполнять только в таблице nat, в цепочке POSTROUTING . Другими словами, только здесь допускается преобразование исходящих адресов. Если первый пакет в соединении подвергся преобразованию исходящего адреса, то все последующие пакеты, из этого же соединения, будут преобразованы автоматически и не пойдут через эту цепочку правил.
Таблица 6-22. Действие SNAT
(Ключ – Пример – Описание)
Ключ: –to-source
Пример: iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT –to-source 194.236.50.155-194.236.50.160:1024-32000
Описание: Ключ –to-sourceиспользуется для указания адреса, присваемового пакету. Все просто, вы указываете IP адрес, который будет подставлен в заголовок пакета в качестве исходящего. Если вы собираетесь перераспределять нагрузку между несколькими брандмауэрами, то можно указать диапазон адресов, где начальный и конечный адреса диапазона разделяются дефисом, например: 194.236.50.155-194.236.50.160. Тогда, конкретный IP адрес будет выбираться из диапазона случайным образом для каждого нового потока. Дополнительно можно указать диапазон портов, которые будут использоваться только для нужд SNAT. Все исходящие порты будут после этого перекартироваться в заданный диапазон. iptables старается, по-возможности, избегать перекартирования портов, однако не всегда это возможно, и тогда производится перекартирование . Если диапазон портов не задан, то исходные порты ниже 512 перекартируются в диапазоне 0-511, порты в диапазоне 512-1023 перекартируются в диапазоне 512-1023, и, наконец порты из диапазона 1024-65535 перекартируются в диапазоне 1024-65535. Что касается портов назначения, то они не подвергаются перекартированию.
Читать дальше