ipfw+nat+перенаправление внутри локальной сети

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
KAS
рядовой
Сообщения: 27
Зарегистрирован: 2009-08-12 21:32:10
Откуда: Orenburg
Контактная информация:

ipfw+nat+перенаправление внутри локальной сети

Непрочитанное сообщение KAS » 2012-04-27 16:39:02

Добрый день!
Имеется шлюз на FreeBSD с настроенным ipfw и kernel nat, на нем вертится еще DNS для зоны sitename.edu.ru, почтовые сервер, локальный ip - 192.168.1.1,
DNS имеет view'ы отдельно для внешки и отдельно для локалки, и соответственно резолвит sitename.edu.ru для внешки как 195.xx.yy.zz, для локалки как 192.168.1.1,
имеется Windows Server 2003 (AD/DC) ip - 192.168.1.2,
имеется web-сервер (Apache 2.2) ip - 192.168.1.5.
для внешки настроен NAT:

Код: Выделить всё

ipfw nat 1 config if fxp0 log deny_in same_ports unreg_only reset \
redirect_port tcp 192.168.1.2:3389 54444 \
redirect_port tcp 192.168.1.5:80 80
И из вне сайт и rdp работают. Из локалки ни хочет. Т.е. при обращении к sitename.edu.ru из локалки происходит ошибка "Хост не доступен"
и при подключении по rdp к sitename.edu.ru тоже самое, типа "ПК выключен или не доступен"
Пытался настроить NAT для внутреннего интерфейса вот так:

Код: Выделить всё

ipfw nat 2 config if em0 log reset reverse proxy_only \
redirect_port tcp 192.168.1.2:3389 3389 \
redirect_port tcp 192.168.1.5:80 80
Но не работает. Что можно сделать?
Полные правила:
в table 1 сети из RFC 1918
в table 2 ip кому можно в инет

Код: Выделить всё

00100 check-state
00200 allow ip from any to any via lo0
00300 allow ip from any to any via tun0
00400 deny log logamount 1000 ip from 127.0.0.0/8 to any
00500 deny log logamount 1000 ip from any to 127.0.0.0/8
00600 deny log logamount 1000 ip from any to not me in via fxp0
00700 deny log logamount 1000 ip from table(1) to 195.xx.yy.zz in via fxp0
00800 deny log logamount 1000 ip from 195.xx.yy.zz to table(1) out via fxp0
00900 deny log logamount 1000 ip from 192.168.1.0/24 to any dst-port 25
01000 nat 2 log logamount 1000 tcp from 192.168.1.0/24 to 192.168.1.1 dst-port 3389,80 via em0
01099 skipto 1700 log logamount 1000 tcp from 192.168.1.0/24 to 192.168.1.5 dst-port 80 via em0
01100 skipto 1700 log logamount 1000 tcp from 192.168.1.0/24 to 192.168.1.2 dst-port 3389 via em0
01200 fwd 127.0.0.1,3129 tcp from 192.168.1.0/24 to any dst-port 80 in via em0
01300 reass ip from any to any in via fxp0
01400 nat 1 ip from any to any via fxp0
01500 allow ip from not 192.168.1.0/24 to table(2) in via fxp0
01600 allow ip from 195.xx.yy.zz to any out via fxp0
01700 allow log logamount 1000 tcp from any to any via em0
01800 allow udp from any to any via em0
01900 deny log logamount 1000 ip from any to any
65535 deny ip from any to any
Ткните носом где косяк.

PS: http://www.lissyara.su/articles/freebsd ... /ipfw_nat/ читал, но, к сожалению, озарение не посетило...
Если хочешь, чтобы что-то было сделано хорошо - сделай это сам!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
KAS
рядовой
Сообщения: 27
Зарегистрирован: 2009-08-12 21:32:10
Откуда: Orenburg
Контактная информация:

Re: ipfw+nat+перенаправление внутри локальной сети

Непрочитанное сообщение KAS » 2012-04-28 6:23:57

Я думаю, что для решения проблемы лучше перенастроить зону ДНС, что бы адрес сразу резолвился в правильный ip-адрес, но боюсь возникнут какие-нибудь подводные камни. Например, если мы пропишем в ДНС резолвить sitename.edu.ru в ip, допустим, web-сервера 192.168.1.5, то по rdp по этому же адресу (sitename.edu.ru) мы не зайдем из локалки на Windows Server.
Поэтому пока поставил из портов portfwd, небольшой демон прекрасно справляющийся с поставленной задачей.
Если я не ошибаюсь, здесь же на форуме есть комитеры в исходники FreeBSD, может вы предложите внести функционал portfwd в ipfw fwd? Было бы просто замечательно.
Если хочешь, чтобы что-то было сделано хорошо - сделай это сам!