Linux Network Administrators Guide | ||
---|---|---|
Назад | Глава 11. IP Masquerade и Network Address Translation | Вперед |
Если Вы уже прочитали главы о 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 -P forward -j deny # ipchains -A forward -s 192.168.1.0/24 -d 0/0 -j MASQ |
# iptables -t nat -P POSTROUTING DROP # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE |
Чтобы посмотреть созданные правила 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 |
Посмотреть правила командой 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 |
Когда новое подключение установлено, программное обеспечение 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-подключение может оставаться неактивным перед тем, как ассоциация для него удалится. |
Назад | Глобальное оглавление | Вперед |
Configuring the Kernel for IP Masquerade | Локальное оглавление | Handling Name Server Lookups |