1) Основной контроллер домена (называется он olya - win2003 server);
2) Резервный контроллер домена (называется он domen - win2003 сервер);
3) Виндовый шлюз (100 МБитная оптика с выделенным IP 42.*.*.*) которая также служит и почтовым сервером с MDaemon;
4) Фряшный шлюз со 100 Мбитной оптикой и выделенным IP 81.*.*.* другого провайдера (freebsd 7.0 с файровлом pf, mpd5, proftp), которая поначалу использовался как резервный инет канал, но ввиду нестабильности виндового шлюза постепенно перерос в основной инет канал.
На виндовом шлюзе меня устраивает только MDaemon, посему было принято решение переносить функции виндового шлюза на отдельную тачку с freebsd 9.0, а на винде оставить только почтовик MDaemon (также возможно временно)
Уже существующая в моей сетке фряшный шлюз прекрасно работает лет 5. ТОнкость настройки только в нате от pf. Поскольку в моей сетке уже есть DNS сервер на контроллере домена (основном и резервном), то я не поднимал bind на фряхе, а настроил ресолвинг с резервного контроллера домена на dns сервера провайдера в оснастке DNS и добавил соответствующее правило в pf.conf. Таким образом у локальных клиентов, те которым нужен нат, в нстройкках сетевухи в поле основной шлюз стоит IP фряшного шлюза, а в поле DNS - IP резевного контроллера домена. Все работает четко как часы. Получается что при обращении к инетовским сайтам локальная тачка обращается к контроллеру домена, а он в свою очередь ресолвит внешние IP через DNS проайдера.
На новом шлюзе я поставил freebsd 9.0, но решил попробовать другой файрвол (ipfw+kernel_nat). Попытался настроить ресолвинг на внешние IP так как на старой фряхе, но через основной контроллер домена. Не получается... С основного контроллера домена не ресолвятся dns сервера провайдера... Помогите разобраться что к чему.. На старой фряхе с PF все завелось с пол оборота. Перемониторил все конфиг файлы, не могу найти ошибку. Инет у локальных юзеров (те которые ходят через нат) работает только при настройке сетевухи, где в качестве "Предпочитаемый DNS сервер" стоит IP провайдера. Доступ к локальным ресурсам сети соответственно в таком случае по именам отсутствует, только по IP. Выкладываю файлы rc.conf и firewal-nat.sh. Жду с нетерпением Ваших замечаний
rc.conf:
Код: Выделить всё
#-----------------------------------------------------------
#
#---ZFS---
zfs_enable="YES"
#-----------------------------------------------------------
#
#---НАСТРОЙКА СЕТИ---
defaultrouter="42.*.*.*"
hostname="Free2.firm.com"
ifconfig_re0="inet 192.168.100.75 netmask 255.255.255.0"
ifconfig_re1="inet 42.*.*.* netmask 255.255.255.252"
#-----------------------------------------------------------
#
# ---РАСКЛАДКА---
keymap="ua.koi8-u"
#-----------------------------------------------------------
#
# ---СИНХРОНИЗАЦИЯ ВРЕМЕНИ---
ntpdate_enable='YES'
ntpdate_flags="-b ntp.nasa.gov"
#------------------------------------------------------------
# ---SSHD---
sshd_enable="YES"
#----------------------------------------------------------
#
# ---КИРИЛЛИЧЕСКИЕ ШРИФТЫ---
font8x14="cp866-8x14"
font8x16="cp866b-8x16"
font8x8="cp866-8x8"
keymap="ru.koi8-r"
keychange="61 ^[[K"
scrnmap="koi8-r2cp866"
#-----------------------------------------------------------
# ---htop---
linux_enable="YES"
#---------------------------------------------------------
#
# ---For mpd5---
mpd_enable="YES"
#---------------------------------------------------------
# ---sqid---
#
squid_enable="YES"
#---------------------------------------------------------
#
# ---ipfw---
firewall_enable="YES"
firewall_nat_enable="YES"
dummynet_enable="YES"
firewall_script="/etc/firewall-nat.sh"
firewall_logging="YES"
#---------------------------------------------------------
powered_enable="YES"
#-----------------------------------------------------------
Код: Выделить всё
#!/bin/sh
# Переменные
fw="/sbin/ipfw -q"
inif="re0" # Внутренний интерфейс
outif="re1" # Внешний интерфейс
ipout="42.*.*.*" # Внешний IP адрес
ipin="192.168.100.75" # Внутренний IP тачки
vpn="10.189.160.0" # VPN сеть
olya="192.168.100.52" # Внетренний DNS сервер (контроллер домена Active Directory)
#
#-------------------------------------------------
# ---NAT---
#
${fw} -f flush
${fw} -f table 1 flush
${fw} table 1 add 192.168.100.112
${fw} table 1 add 192.168.100.158
${fw} table 1 add 192.168.100.99
${fw} table 1 add 192.168.100.1
${fw} table 1 add 192.168.100.159
${fw} table 1 add 192.168.100.2
${fw} table 1 add 192.168.100.14
${fw} table 1 add 192.168.100.105
${fw} table 1 add 192.168.100.148
${fw} table 1 add 192.168.100.149
${fw} table 1 add 192.168.100.32
${fw} nat 1 config log if ${outif} reset same_ports
#-------------------------------------------------
${fw} add 10 allow all from any to any via ${inif} # Позволить прохождение пакетов от всех - всем на внутренний интерфейс
${fw} add 20 nat 1 ip from table\(1\) to any via ${outif} # Прокидывать адреса с таблицы 1 всем на внешний интерфейс
${fw} add 30 nat 1 ip from any to ${ipout} via ${outif} # Прокидывать все адреса на внешний адрес внешнего и нтерфейса
#-------------------------------------------------
# ---SQUID---
#
${fw} add 40 fwd 127.0.0.1,3128 tcp from 192.168.100.0/24 to any dst-port 80 in recv ${outif} # Перенаправляти tcp пакети з порту 3128 локальної адреси внутрішньої мережі -
всім на порт 80 зовнішнього інтерфейсу
#-------------------------------------------------
# ---VPN---
#
#Разрешает входящие пакеты по протоколу tcp от любого хоста на ваш сервер по внешнему интерфейсу на порт 1723 (используется для инициации и управления GRE-соединением)
${fw} add 50 allow tcp from any to me 1723 in via ${outif}
#Разрешает исходящие пакеты от вашего сервера по пору 1723 по внешнему интерфейсу на любой хост сети
${fw} add 60 allow tcp from me 1723 to any out via ${outif}
#Разрешить исходящие пакеты по протоколу *GRE от вашего сервера на любой хост сети по внешнему интерфейсу
${fw} add 70 allow gre from me to any out via ${outif}
#Разрешить входящие пакеты по протоколу *GRE от любого хоста на ваш сервер по внешнему интерфейсу
${fw} add 80 allow gre from any to me in via ${outif}
# Разрешает все исходящие пакеты по протоколу ip от любого хоста на внутренние IP-адреса VPN-клиентов
${fw} add 90 allow ip from any to ${vpn} out
# Разрешает все входящие пакеты по протоколу ip от IP-адресов VPN-клиентов на любой хост
${fw} add 100 allow ip from ${vpn} to any in
#-------------------------------------------------
# ---DNS---
# разрешаем DNS снаружи (нам же надо узнавать IP по именам машин?)
${fw} add 110 allow udp from any 53 to any via ${outif}
# разрешаем DNS входящий снаружи - если на этой машине работает named
# и держит какую-то зону. В остальных случаях - не нужно
${fw} add 120 allow udp from any to any 53 via ${outif}
${fw} add 180 pass udp from $olya to any 53 keep-state
#-------------------------------------------------
# разрешаем UDP (для синхронизации времени - 123 порт)
${fw} add 190 allow udp from any to any 123 via ${outif}