Очень часто бывает ситуация, когда необходимо поднять natd на двух и более интерфейсах. Рассмотрим ситуацию для двух интерфейсов и попробуем это сделать красиво. Для этого нам совсем немного придется подредактировать скрипты, имеющиеся в системе и отвечающие за управление ipfw и natd.
Правим файл /etc/rc.d/ipfw (места подвергшиеся изменению отмечены комментарием #KMN)
Переименовываем файл /etc/rc.d/natd в /etc/rc.d/natd1 и правим его (места подвергшиеся изменению отмечены комментарием #KMN)
На основе файла natd1 создаем файл /etc/rc.d/natd2 (места подвергшиеся изменению отмечены комментарием #KMN)
Правим файл /etc/services (ниже приведен фрагмент):
...SKIPPEFD... ftp-proxy 8021/tcp # FTP proxy natd1 8668/divert # Network Address Translation #KMN edit natd->natd1 natd2 8669/divert #KMN add jetdirect 9100/tcp #HP JetDirect card ...SKIPPEFD...
В результате мы получаем:
скрипты ipfw, natd1, natd2, которые
можно использовать для ручного управления: ipfw start,
ipfw stop, natd1 start, natd2 start,
и т.д.
можно использовать следующие переменные в /etc/rc.conf:
natd1_enable="YES" natd1_interface="rl0" natd1_flags="-p natd1" natd2_enable="YES" natd2_interface="192.168.112.2" natd2_flags="-p natd2"
можно использовать следующие конструкции в /etc/ipfw.conf:
case ${natd1_enable} in
[Yy][Ee][Ss])
if [ -n "${natd1_interface}" ]; then
${fwcmd} add divert natd1 all from any to any via ${inet1_if}
fi
;;
esac
case ${natd2_enable} in
[Yy][Ee][Ss])
if [ -n "${natd2_interface}" ]; then
${fwcmd} add divert natd2 all from any to any via ${inet2_if}
fi
;;
esac
Идея взята из статьи с www.opennet.ru (параграф 3).
Дата последнего изменения документа: 11.09.09