Хелпикс

Главная

Контакты

Случайная статья





Таблица 6-19. Действие MASQUERADE



Ключ --to-ports iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000 Ключ --to-ports используется для указания порта источника или диапазона портов исходящего пакета. Можно указать один порт, например: --to-ports 1025, или диапазон портов как здесь: --to-ports 1024-3000. Этот ключ можно использовать только в правилах, где критерий содержит явное указание на протокол TCP или UDP с помощью ключа --protocol.

MASQUERADE — подменяет адрес источника для исходящих пакетов адресом того интерфейса, с которого они исходят, то есть осуществляет маскарадинг. Такая операция позволяет, например, предоставлять доступ в Интернет целым локальным сетям через один шлюз. Допустим, у нас есть локальная сеть 192. 168. 1. 0/255. 255. 255. 0 с несколькими компьютерами, имеющими адреса 192. 168. 1. 2, 192. 168. 1. 3 и т. д. Адрес 192. 168. 1. 1 имеет внутренний (подключенный к локальной сети) сетевой интерфейс шлюза, назовем этот интерфейс eth1. Другой его интерфейс, назовем его eth0, подключен к сети Интернет и имеет адрес, допустим, 208. 77. 188. 166. Тогда, чтобы обеспечить выход хостов из этой локальной сети в интернет, на шлюзе достаточно выполнить следующие команды

sysctl net. ipv4. ip_forward = 1 # Разрешаем шлюзу передавать транзитный трафик
iptables -F FORWARD # На всякий случай очистим цепочку FORWARD
iptables -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT # Разрешаем проходить пакетам по уже
установленным соединениям
iptables -A FORWARD -m state --state NEW -i eth1 -s 192. 168. 1. 0/24 -j ACCEPT # Разрешаем исходящие
соединения из локальной сети к интернет-хостам
iptables -P FORWARD -j DROP # Весь остальной транзитный трафик — запрещаем.
iptables -t nat -F POSTROUTING # На всякий случай очистим цепочку POSTROUTING таблицы nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Маскарадим весь трафик, идущий через eth0

Теперь, если один из хостов локальной сети, например, 192. 168. 1. 2, попытается связаться с одним из интернет-хостов, например, 204. 152. 191. 37 (kernel. org), при проходе его пакетов через шлюз, их исходный адрес будет подменяться на внешний адрес шлюза, то есть 208. 77. 188. 166. С точки зрения удаленного хоста (kernel. org), это будет выглядеть, как будто с ним связывается непосредственно сам шлюз. Когда же удаленный хост начнет ответную передачу данных, он будет адресовать их именно шлюзу, то есть 208. 77. 188. 166. Однако, на шлюзе адрес назначения этих пакетов будет подменяться на 192. 168. 1. 2, после чего пакеты будут передаваться настоящему получателю. Для такого обратного преобразования никаких дополнительных правил указывать не нужно — это будет делать все та же операция MASQUERADE. Простота трансляции сетевых адресов является одним из важнейших достоинств stateful-фильтрации.

Если же такой трансляции не производить, удаленный хост просто не сможет ответить на адрес 192. 168. 1. 2, так как адресные пространства локальных сетей изолировано от адресного пространства Интернета. В мире могут существовать миллионы локальных сетей 192. 168. 1. 0/255. 255. 255. 0, и в каждой может быть свой хост 192. 168. 1. 2. Эти сети могут и не быть связаны с Интернетом. Но если они с ним связаны — то только благодаря механизмам трансляции сетевых адресов.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.