natd

natd [-unregistered_only | -u] [-log | -l] [-proxy_only] [-reverse] [-deny_incoming | -d] [-use_sockets | -s] [-same_ports | -m] [-verbose | -v] [-dynamic] [-in_port | -i port] [-out_port | -o port] [-port | -p port] [-alias_address | -a address] [-target_address | -t address] [-interface | -n interface] [-proxy_rule proxyspec] [-redirect_port linkspec] [-redirect_proto linkspec] [-redirect_address linkspec] [-config | -f configfile] [-log_denied] [-log_facility facility_name] [-punch_fw firewall_range]

ОПИСАНИЕ

Эта программа осуществляет трансляцию сетевых адресов (Network Address Translation, NAT), как средство для использования с divert(4)-сокетами, прелназначен для использования с NICs - если Вы хотите использовать NAT совместно с соединением типа PPP, то используйте переключатель -nat в ppp(8).

natd в большинстве случаем запускается в фоновом режиме (background) как демон. Он передает необработанные IP-пакеты как они проходят в машину и из нее, а также может при этом изменять их снова перед повторным вводом в поток IP-пакетов.

natd изменяет все пакеты, предназначенные для других хостов, так, что исходный IP-адрес заменяется адресом текущей машины. Для каждого измененного таким образом пакета в специальной внутренней таблице происходит запись этого факта. Значение исходного порта также изменяется c указанием таблицы, по отношению к пакету. Пакеты, полученные с адресом назначения текущего хоста, проверяются по внутренней таблице. Если соответстьвие найдено, то оно используется для определения адресата IP адреса и номера порта для дальнейшей передачи пакета адресату.

Опции командной строки

-log | -l

Регистрация статистики в файле /var/log/alias.log. Этот файл усекается каждый раз при старте natd.

 

deny_incoming | -d

Не передавать входящие пакеты, которые не имеют входа (соответствия) во внутренней таблице преобразования.

Если эта опция не используется, то такие пакеты будут изменяться с использованием правил в -target_address (см. ниже), а также будет сделан вход во внутреннюю таблицу преоразованя.

 

-log_denied

Запись в журнал о входящих пакетах через syslog(3)не производится. См. также -log_facility.

 

-log_facility facility_name

Использовать специфические средства протоколирования при записи информации через syslog(3). Аргумент facility_name - одно из ключевых слов, определенных в файле syslog.conf.

 

-use_sockets | -s

B стандартный вывод. Эта опция используется только в целях отладки.

 

-unregistred_only | -u

Изменять только исходящие пакеты, с частными адресами источника. Частные IP-адреса определяются RFC 1918 и к ним относятся 10.0.0.0/8, 172.16.0.0./12 и 192.168.0.0/16

 

-redirect_port proto targetIP:targetPORT  [-targetPORT] [aliasIP:] aliasPORT [-aliasPORT] [remoteIP[remotePORT[-remotePORT] ] ]

Перенаправить входящие соединения, поступающие на данный(е) порт(ы) на другой(ие) хост(ы) и порт(ы). Аргумент proto принимает значения tcp или udp, targetIP - это IP-адрес желаемого адресата, targetPORT - значение порта или диапазона портов желаемого адресата, aliasPORT - требуемый номер порта (диапазона портов) и aliasIP - псевдоним адреса. Аргументы remoteIP и remotePORT могут быть использованы для более точного определения соединения, если это необходимо. Номера портов в диапазоне не обязательно должны совпадать, но число портов должно быть одинаковым. Если remotePORT неопределен, то он будет "привязан" ко всем портам. Если remotePORT определен, он должен соответствовать диапазону targetPORT или быть равен 0, что означает все порты. Например, аргумент tcp inside1:telnet 6666 приводит к тому, что входящие TCP-пакеты, предназначенные для порта 6666, на этом хосте, будут посланы на порт telnet хоста inside1.

tcp inside2:2300-2399 3300-3399 будет перенаправлять входящие соединения на портах 3300-3399 на хост inside2 и порты 2300-2399. При этом соблюдается соответствие 1:1, а именно: порт 3300 будет соответствовать порту 2300, 3301 - > 2301 и т. д.

 

-redirect_proto proto localIP [publicIP [remoteIP]]

Перенаправляет входящие IP-пакеты протокола proto (см. protocols(5)), предназначенные для хоста с адресом publicIP, на хост с адресом iocalIP и наоборот. Если remoteIP не указан, то используется замена адресов по умолчанию. Если remoteIP указан, то только пакеты приходящие с этого адреса и уходащие на него будут соответствовать этому правилу.

 

-redirect_address localIP publicIP

Перенаправить трафик с публичного (реального) IP-адреса на хост с частным IP-адресом в локальной сети. Эта функция известна как статический NAT. Как правило, статический NAT используется, когда вышестоящий Internet-провайдер распределил малый блок IP-адресов, но в принципе это может быть использовано и в случае одного адреса: частный адрес 192.168.0.4, но исходящий трафик с первых двух адресов будет определен как public_addr. Но в общем случае при статическом NAT каждому частному адресу должен соответствовать адрес реальный.

 

-redirect_port proto targetIP:targetPORT [, tergetIP:targetPORT[,. . .]] [aliasIP:]aliasPORT [remoteIP [:remotePORT] ]

Эти формы аргументов -redirect_port и -redirect_address используются для создания своеобразного кластера, который позволяет распределить нагрузку между пулом серверов. Эта функция известна как LSNAT (RFC 2391). Например, аргумент

tcp www1:http, www2:http, www3:http www:http

приводит к тому, что приходящие на хост www http-запросы будут прозрачно перенаправляться  на один их хостов www1, www2 или www3, где хост выбирается циклически, чтобы загрузить оптимально сеть.

 

-dynamic

Если используются опции -n или -interface, то natd будет следить за сокетом маршрутизации для изменения прохождения через interface. Если изменился IP-адрес интерфейса, то natd будет будет динамически изменять соответствующие алиасы.

 

-in_port | -i port

Читать из (и писать туда же) порта port divert(4) сокета; обработка всех пакетов "incoming" - входящих.

 

-out_port | -o port

Читать из (и писать туда же) порта port divert(4) сокета; обработка всех пакетов "outgoing" - иcходящих.

 

-port | -p port

Читать из и писать туда же в порт port divert(4) сокета с различением пакетов как "входящие", так и "исходящие", используя правила, определенные в divert(4). Если номер порта  не указан, он ищется в БД services(5). Если эта опция не указана, используется порт natd по умолчанию.

 

-alias_address | -a address

Использовать адрес address как псевдоним. Исли эта опция не указана, то должна использоваться опция -interface. Указанный адрес обычно соответвует адресу "внешнего" интерфейса, т. е., который "смотрит" в Internet.

Все данные выходящие наружу будут перезаписаны с адресом источника, равному address. Все данные, приходящие "снаружи" будут проверены на соответствие с существующим соединением. Если соответствие найдено, пакет изменяется в соответствии с ним. Если нет, все соответствия -redirect_port, -redirect_proto и -redirect_address проверяются и активируются. Если никакое другое соединение не моджет быть 0.0.0.0, то все новые входящие пакеты отправляются по адресу, который определен в самом пакете. Это позволяет внешним хостам общаться напрямую с внутренними хостами если они маршрутизируют пакеты по запросу.

 

-interface | -n interface

Использовать interface для определения адресов алиасов. Если имеется возможность, что IP-адрес, связанный с interface может измениться, то тогда должна также использоваться опция -dynamic. Если эта опция не определена, то должна быть использована опция -alias_address. Этот интерфейс обычно является внешним, т. е. он смотрит в Internet.

 

-config | -f file

Использовать альтернативный конфигурационный файл file. file должен содержать список опций в той же форме, что и в командной строке. Например, строка alias_address 158.152.17.1 будет определять алиас 158.152.17.1. Опции, которые не имеют аргументов, определяются с помощью аргумента yes или no. Например, строка log yes аналогична -log. Пробелы и пустые строки игнорируются. Строки с комментариями начинаются со ззначка #

 

-reverce

Эта опция заставляет natd полностью изменить на обратный путь, по которому он обрабатывает "входящие" и "исходящие" пакеты, позволяя оперировать внешним интерфейсом как внутренним. Это может быть полезно в некоторых прозрачных прокси, когда исходящие транзакции перенаправляются на локальных хост, а natd запускается на внутреннем интерфейсе, тогда как обычно запусается на внешнем.

 

-proxy-only

Используется в случае, когда natd представляет собой исключительно прозрачный прокси. Обычная трансляция адресов не производится.

 

-proxy_rule [type encode_ip_hdr | encode_tcp_stream] port xxxx server a.b.c.d: yyyy

Включено прозрачное проксирование. Исходящие TCP-пакеты с данным портом проходят через этот хост на любой другой хост и перенаправляются на данный сервер или порт. Произвольно исходный адрес назначения может быть закодирована в пакет. Использование encode_ip_hdr помещает эти данные в поле заголовка IP, а encode_tcp_stream помещает в начало TCP-потока.

 

-log_ipfw_denied

Протоколировать, когда пакет не может быть повторно введен, потому что вход блокируется ipfw. Это значение устанавливается по умолчанию с опцией -verbose.

 

-punch_fw basenumber:count

Эта опция "режиссирует" natd как "punch holes", в основанном на ipfirewall(4) брандмауер для соединений FTP/IRC DCC. Это выполняется динамически путем временныз установок правил брандмауера, которые разрешают специфические соединения (и только эти соединения) через брандмауер. Закрытие данных соединению удаляет и эти правила. Максимальное число count правил (подсчета) начинающееся с basenumber будет использова6но для создания "дыр" в брандмауере для сетевого устройства. При запуске весь диапазон очищается.

Об особенностях запуска natd смотрите здесь и здесь.

 

На главную страницу