Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Настройка IP Masquerade

Если Вы уже прочитали главы о firewall и accounting, у Вас уже не вызовет удивления, что для настройки правил IP masquerade используются знакомые команды ipfwadm, ipchains и iptables.

Правила masquerade представляют собой специальный класс правил фильтрации. Вы можете обеспечить masquerade только пакетов, которые получены на одном интерфейсе и будут направлены другому интерфейсу. Чтобы настроить masquerade надо создать правило, очень похожее на правило пересылки firewall, но со специальными параметрами, которые сообщают ядру, что надо использовать masquerade пакетов. Команда ipfwadm использует опцию -m, ipchains использует -j MASQ, а в iptables есть опция -j MASQUERADE, чтобы указать, что пакеты, соответствующие спецификации правила, должны быть masqueraded.

Давайте рассмотрим пример. Допустим, у студента университета Groucho Marx дома есть несколько машин, объединенных в маленькую сеточку Ethernet. Она использует один из зарезервированных частных сетевых адресов. Сеть доступна и другим студентам, которые имеют интерес в использовании Internet. Для доступа в Internet используется простое соединение dial-up PPP.

Студенты настраивают Linux-машину для поддержки связи dial-up и работы в качестве маршрутизатора сети. Ее IP-адрес при модемном соединении не важен. Linux-маршрутизатор конфигурируется с поддержкой IP masquerade и использует один из частных сетевых адресов для локальной сети: 192.168.1.0. При этом гарантируется, что каждый из компьютеров в этой сети имеет заданный по умолчанию маршрут, указывающий на Linux-маршрутизатор.

Чтобы запустить эту конфигурацию с помощью ipfwadm, надо только скомандовать:
# ipfwadm -F -p deny
# ipfwadm -F -a accept -m -S 192.168.1.0/24 -D 0/0

или с ipchains:
# ipchains -P forward -j deny
# ipchains -A forward -s 192.168.1.0/24 -d 0/0 -j MASQ

или с iptables:
# iptables -t nat -P POSTROUTING DROP
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Теперь всякий раз, когда любой из компьютеров сети пробует соединяться с сервисом на удаленном компьютере, их пакеты будет автоматически masqueraded Linux-маршрутизатором. Первое правило в каждом примере запрещает маршрутизацию любого другого пакета и добавляет некоторую защиту.

Чтобы посмотреть созданные правила masquerade, используйте параметр -l команды ipfwadm.

Чтобы отобразить только что созданные правила, введите:
# ipfwadm -F -l -e
вывод будет напоминать следующее:
# ipfwadm -F -l -e
IP firewall forward rules, default policy: accept
 pkts bytes type  prot opt  tosa tosx ifname  ifaddress
    0     0 acc/m all  ---- 0xFF 0x00 any     any
Здесь /m указывает, что это правило masquerade.
Посмотреть правила командой ipchains можно с опцией -L. Аналогично предыдущему примеру с ipchains:
# ipchains -L
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
target   prot opt     source           destination   ports
MASQ     all  ------  192.168.1.0/24   anywhere      n/a

Chain output (policy ACCEPT):

Все правила с адресатом MASQ являются правилами masquerade.

Наконец, то же самое можно сделать командой iptables :
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source       destination

Chain POSTROUTING (policy DROP)
target     prot opt source       destination
MASQUERADE  all  --  anywhere     anywhere     MASQUERADE

Chain OUTPUT (policy ACCEPT)
target     prot opt source       destination
Правила masquerade появляются с адресатом MASQUERADE .

Установка параметров синхронизации для IP Masquerade

Когда новое подключение установлено, программное обеспечение IP masquerade создает ассоциацию в памяти между компьютерами, связанными с подключением. Вы можете рассматривать эти ассоциации в любое время в файле /proc/net/ip_masquerade Эти ассоциации имеют время ожидания бездеятельности. После окончания этого времени связь удаляется.

Вы можете устанавливать время ожидания, используя ipfwadm. Синтаксис в общем виде такой:
ipfwadm -M -s <tcp> <tcpfin> <udp>
Для ipchains:
ipchains -M -S <tcp> <tcpfin> <udp>

Реализация iptables использует намного более длинные значения по умолчанию для таймеров и не позволяет Вам устанавливать их. Каждое из этих значений представляет таймер, используемый программным обеспечением IP masquerade. Следующая таблица описывает таймеры и их назначение:

Имя Описание
tcp

Время ожидания сеанса TCP. Задает как долго TCP-подключение может оставаться неактивным до того, как ассоциация для него удалится.

tcpfin

Время ожидания TCP после FIN. Как долго ассоциация останется после того, как TCP-подключение было разъединено.

udp

Время ожидания сеанса UDP. Как долго UDP-подключение может оставаться неактивным перед тем, как ассоциация для него удалится.