Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей. |
Пример пакетных фильтров в ОС FreeBSD 6.0
IPNAT
Правила NAT загружаются с помощью команды ipnat. Обычно правила NAT хранятся в /etc/ipnat.rules.
При внесении изменений в правила NAT после того, как NAT запущен, следует отредактировать файл, содержащий правила NAT, затем выполнить команду NAT ipnat с флагами –CF для удаления существующих правил NAT и очистки всех записей в таблице трансляции.
Для перезагрузки правил NAT следует выполнить команду
# ipnat -CF -f /etc/ipnat.rules
Чтобы посмотреть статистику NAT, следует выполнить
# ipnat -s
Чтобы посмотреть список текущих отображений в таблице NAT, следует выполнить
# ipnat -l
Для включения режима, который показывает большое количество информации, относящейся к обработке правил и записям в таблице, следует выполнить:
# ipnat –v
Правила IPNAT
Правила NAT являются очень гибкими и могут использоваться для разных целей.
Синтаксис, представленный здесь, — упрощенный. Полный синтаксис следует искать в соответствующей man странице.
Синтаксис правила NAT выглядит аналогичным образом:
map IF LAN_IP_RANGE -> PUBLIC_ADDRESS
Правило начинается с ключевого слова map.
Следует заменить IF на внешний интерфейс.
LAN_IP_RANGE – это те IP-адреса, которыми пользуются внутренние клиенты.
PUBLIC_ADDRESS может быть либо внешним IP-адресом, либо специальным значением 0/32, которое означает использование IP-адреса, связанного с IF.
Как работает NAT
Пакет поступает в пакетный фильтр из локальной сети с адресом получателя, расположенным в Интернете. Он пропускается через правила фильтрации для исходящего трафика. Затем получает пакет NAT и просматривает свои правила сверху вниз; применяется первое правило, которому соответствует пакет. NAT проверяет каждое свое правило на соответствие имени интерфейса и IP-адресу источника в пакете. Когда имя интерфейса пакета соответствует правилу NAT, то IP-адрес источника (т.е. в данном случае IP-адрес локальной сети) в пакете проверяется, чтобы выяснить, не попал ли он в диапазон IP-адресов, указанный слева от символа стрелки в правиле NAT. Если это так, то его IP-адрес источника заменяется IP-адресом, указанным справа от стрелки в правиле NAT. При этом NAT создает запись в своей внутренней таблице. Поэтому, когда пакет возвращается из Интернет, он может быть отображен обратно в свой исходный IP-адрес в локальной сети и затем передан правилам фильтрации для дальнейшей обработки.
Запуск NAT
Чтобы указать необходимость NAT, следует добавить определенные утверждения в /etc/rc.conf.
Для запуска роутинга трафика между интерфейсами:
gateway_enable="YES"
Для автоматического запуска IPNAT:
ipnat_enable="YES"
Для указания файла, в котором определены правила:
ipnat_rules="/etc/ipnat.rules"
NAT для очень больших LAN
В сетях, которые имеют большое число рабочих станций или подсетей, отображение всех локальных IP-адресов в единственный публичный IP-адрес вызывает проблемы, связанные с тем, что одни и те же номера портов могут использоваться одновременно на разных рабочих станциях, расположенных за пакетным фильтром, и это приведет к коллизиям. Существует два способа решения данной проблемы.
Указание порта
Обычное правило NAT выглядит таким образом:
map dc0 192.168.1.0/24 -> 0/32
В приведенном выше правиле порт источника в пакете не изменяется при прохождении пакета через IPNAT. Добавление ключевого слова portmap означает, что IPNAT будет использовать порты источника в указанном диапазоне. Например, следующее правило требует, чтобы IPNAT модифицировал порт источника в указанном диапазоне:
map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:60000
Также существует возможность упростить использование этого отображения, указав ключевое слово auto. Это будет означать, что IPNAT сам определит, какие порты доступны для использования:
map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp auto
Использование пула публичных адресов
В очень больших локальных сетях существует очень большое количество локальных адресов, которые отображаются в единственный публичный адрес. Мы имеем правило
map dc0 192.168.1.0/24 -> 204.134.75.1
Данное правило отображает все соединения в 204.134.75.1. Это может быть изменено указанием диапазона
map dc0 192.168.1.0/24 -> 204.134.75.1-10
Или можно указать подсеть, используя CIDR-нотацию:
map dc0 192.168.1.0/24 -> 204.134.75.0/24
Port Redirection
Очень распространенной практикой является иметь web-сервер, e-mail сервер, сервер баз данных и DNS-сервер, каждый из которых расположен на отдельной машине в локальной сети. В этом случае трафик от этих серверов также может использовать NAT, но должен существовать способ перенаправить входящий трафик к нужным компьютерам в локальной сети. IPNAT имеет такую возможность перенаправления и может решить данную проблему. Пусть имеется web-сервер в локальной сети с адресом 10.0.10.25 и существует единственный публичный IP-адрес, который равен 20.20.20.5. Следует использовать правило
rdr dc0 20.20.20.5/32 port 80 -> 10.0.10.25 port 80
или
rdr dc0 0/32 port 80 -> 10.0.10.25 port 80
или, для DNS-сервера, расположенного в локальной сети с адресом 10.0.10.33, которому необходимо получать публичные DNS-запросы,
rdr dc0 20.20.20.5/32 port 53 -> 10.0.10.33 port 53 udp