народ.. кто шарит в теме, откликнитесь пжл. больше не могу заниматься садомазой (есть локалка, далее шлюз на фряхе с выходом в локаль и в нет. там настроен нат и фаер. в локале есть www сервак. в нате он настроен (переадресация идет... вроде )).. нужно чтобы народ из локали обращаясь к нему по _ВНЕШЕНЕМУ_ айпи переадрессовывался на внутренний айпи делаю так, но не работает:
00300 fwd 192.168.112.2,80 tcp from 192.168.112.0/24 to xxx.xxx.xxx.xxx dst-port 80 via ed0xxx.xxx.xxx.xxx - внешний айпи
ed0 - внутренний фейс
>[оверквотинг удален]
>есть локалка, далее шлюз на фряхе с выходом в локаль и в
>нет. там настроен нат и фаер. в локале есть www сервак.
>в нате он настроен (переадресация идет... вроде )).. нужно чтобы народ
>из локали обращаясь к нему по _ВНЕШЕНЕМУ_ айпи переадрессовывался на внутренний
>айпи делаю так, но не работает:
>00300 fwd 192.168.112.2,80 tcp from 192.168.112.0/24 to xxx.xxx.xxx.xxx dst-port 80 via ed0
>
>
>xxx.xxx.xxx.xxx - внешний айпи
>ed0 - внутренний фейстакс... ошибка ьыла в интерфейсе.. =) ed0 - был внешний фейс, но все ранво не работает до конца.... т.е. пакеты всетаки попадают под правило. но все равно коннекта нету.
подсказали тему: /usr/ports/net/redir
работает.. но все-таки... может это можно сделать через NAT?
вот:
ipfw show:
01500 640 30720 fwd 192.168.112.2,80 tcp from 192.168.112.0/24 to xxx.xxx.xxx.xxx dst-port 80 via vr0но все равно не работает - Время ожидания ответа от сервера xxx.xxx.xxx.xxx истекло.
или здесь нужен не форвардинг а нат?p.S. извините за несколько сообщений
Будем считать, что твой домен www.pfox.ru, и юзеры ходят по доменному имени.
внутри сети создаешь свутреннюю DNS зону pfox.ru с указанием внутреннего ип.
>Будем считать, что твой домен www.pfox.ru, и юзеры ходят по доменному имени.
>
>внутри сети создаешь свутреннюю DNS зону pfox.ru с указанием внутреннего ип.не вариант - так как есть еще ФТП сервер, он расположен на другой внутренней тачке и еще несколько, тоже на других. и поэтому если сделать так, то будет только один айпи.
т.е. задача такая если из локали запрашивают внейшний айпи, то:
1) если порт 80 то форвардить на 192.168.112.2
2) если порт 21 то форвардить на 192.168.112.3
3) ну и так далее еще на пару адрессов.
>[оверквотинг удален]
>>
>>внутри сети создаешь свутреннюю DNS зону pfox.ru с указанием внутреннего ип.
>
>не вариант - так как есть еще ФТП сервер, он расположен на
>другой внутренней тачке и еще несколько, тоже на других. и поэтому
>если сделать так, то будет только один айпи.
>т.е. задача такая если из локали запрашивают внейшний айпи, то:
>1) если порт 80 то форвардить на 192.168.112.2
>2) если порт 21 то форвардить на 192.168.112.3
>3) ну и так далее еще на пару адрессов.zone pfox.ru
ORIGIN pfox.ru
www 192.168.112.2
ftp 192.168.112.3и никаких проблем.
вы меняете адрес назначения, а адрес источника я так понимаю нет, и так как клиент и сервера в одной подсети, то сервера ответят напрямую клиенту, клиент эти пакеты отбросит, потому что ждет ответ от шлюза.
>zone pfox.ru
>ORIGIN pfox.ru
> www 192.168.112.2
> ftp 192.168.112.3
>
>и никаких проблем.ну это получаются разные домены.
раньше в организации стоял Керио фаервол на винде. там как раз так все и работало. хочется также сделать на ipfw.
т.е.: нужны правила
- если идет запрос на xxx.xxx.xxx.xxx:80, то переадресовывать его на 192.168.112.2:80
- если идет запрос на xxx.xxx.xxx.xxx:21, то переадресовывать его на 192.168.112.3:21как я понимаю, тут надо все-таки использовать nat. пожалуйста подскажите, как?
>[оверквотинг удален]
>>и никаких проблем.
>
>ну это получаются разные домены.
>раньше в организации стоял Керио фаервол на винде. там как раз так
>все и работало. хочется также сделать на ipfw.
>т.е.: нужны правила
>- если идет запрос на xxx.xxx.xxx.xxx:80, то переадресовывать его на 192.168.112.2:80
>- если идет запрос на xxx.xxx.xxx.xxx:21, то переадресовывать его на 192.168.112.3:21
>
>как я понимаю, тут надо все-таки использовать nat. пожалуйста подскажите, как?Нужно использовать редирект для переадресации, а если клиент в одной подсети с серверами , то и нат, что бы ответы возвращались правильно. Но правильней было бы вынести сервера в отдельную, от локалки, физическую подсеть (DMZ) и тогда нат не нужен, а только редирект.
>Нужно использовать редирект для переадресации, а если клиент в одной подсети с
>серверами , то и нат, что бы ответы возвращались правильно. Но
>правильней было бы вынести сервера в отдельную, от локалки, физическую
>подсеть (DMZ) и тогда нат не нужен, а только редирект.да мне так и надо.. вот только как ?
как я понимаю в natd.conf
кроме redirect_port tcp 192.168.112.2:80 80 больше ничего и не надо..
а какие правила нужно добавить для ipfw?
нужно чтобы народ
>из локали обращаясь к нему по _ВНЕШЕНЕМУ_ айпи переадрессовывался на внутренний
>айпи делаю так, но не работает:
>00300 fwd 192.168.112.2,80 tcp from 192.168.112.0/24 to xxx.xxx.xxx.xxx dst-port 80 via ed0
>
>
>xxx.xxx.xxx.xxx - внешний айпи
>ed0 - внутренний фейспо-моему задача сформулирована немного криво
нужно, чтобы локалка ходила на родной сервак через локалку, а не жрала траф в инете, так?
вопрос: причём тут НАТ? он вообще здесь фигурировать не должен
в апаче прописываешь listen 192.168.112.2:80 (синтаксис может быть другой - смотри на строку, где он слушает инет 80)
перезапустить апач на всякий случай
далее
во 1, проверить - есть ли выход на сервер, если явно указать в строке браузера его внутренний IP 192.168.112.2:80
добиться, чтобы был
во 2, в ipfw: fwd 192.168.112.2,80 ip from any to _домен сайта_ (а не IP. тут кстати можно поколдовать - подобавлять http://www. или http:// или www.) via ed0
если работает, можно any заменить на локалку, а ip на tcp
и убедись, что эта строка стоит ДО allow ip from any to any via ed0
>[оверквотинг удален]
>далее
>во 1, проверить - есть ли выход на сервер, если явно указать
>в строке браузера его внутренний IP 192.168.112.2:80
>добиться, чтобы был
>во 2, в ipfw: fwd 192.168.112.2,80 ip from any to _домен сайта_
>(а не IP. тут кстати можно поколдовать - подобавлять http://www. или
>http:// или www.) via ed0
>если работает, можно any заменить на локалку, а ip на tcp
>и убедись, что эта строка стоит ДО allow ip from any to
>any via ed01) апач работает прекрасно.
2) задача сформулирована не криво - нужно настроить НАТ, чтобы при запросе на внешний айпи из локалки нат подменял адреса также, как и при запросе на внешний айпи из инетернета.
>1) апач работает прекрасно.
>2) задача сформулирована не криво - нужно настроить НАТ, чтобы при запросе
>на внешний айпи из локалки нат подменял адреса также, как и
>при запросе на внешний айпи из инетернета.так..
для начала разберись в себе
или ты просто помощник сисадмина?
твоя локалка не запрашивает внешний IP, коим ты величаешь адрес твоего внешнего интерфейса. он ей не сдался.
локалка лезет в интернет на внешние адреса (не путать с адресом твоего внешнего интерфейса lol) ЧЕРЕЗ адрес твоего внешнего интерфейса
далее
НАТ висит на внешнем интерфейсе и тупо подменяет в пакетах адреса IP_ИЗ_ТВОЕЙ_ЛОКАЛКИ на IP_АДРЕС_ВНЕШНЕГО_ИНТЕРФЕЙСА
а ты работаешь с внутренним интерфейсом (via ed0) lol x2кстати, родился ещё вариант: сквидом всех засылать на твой сайт по локалке
итого 4 варианта уже
1 ipfw
2 squid
3 dns (про него кто-то писал выше)
4 продолжать стоять на своём, пытаясь поймать локалку, у которой в destination указан адрес твоего внешнего интерфейса, но это больно - на _своём_ стоять.
там после lol x2 забыл ещё lol x3 вставить:
"не криво" сформулированная тобой задача: выпустить ИЗ ЛОКАЛКИ всех в инет (перетранслировав адреса на адрес внешнего интерфейса), потом впустить их обратно (перетранслировав адреса снова) и завернуть их оттуда на ЛОКАЛЬНЫЙ сервер
теперь я тебя правильно понял?
шютка, не обижайся, просто ты сажаешь лес там, где должно быть поле.P.S. тут днс-ом то кстати даже быстрее получится, чем ipfw
самым первым делом с бинда ведь спросят, а потом уже в сеть будут ломиться по адресу, который он выдал
>[оверквотинг удален]
>
>кстати, родился ещё вариант: сквидом всех засылать на твой сайт по локалке
>
>итого 4 варианта уже
>1 ipfw
>2 squid
>3 dns (про него кто-то писал выше)
>4 продолжать стоять на своём, пытаясь поймать локалку, у которой в destination
>указан адрес твоего внешнего интерфейса, но это больно - на _своём_
>стоять.я не над кем не смеялся и не издевался. хотелось бы, что бы и в мой адрес также этого не было.
я благодарен за объяснения, но как уже писал _выше_, вариант со squid'ом и ДНСкой не поможет, так как я имею дело не только с http протоколом, а также с большим количеством других. т.е. будем отталкиваться не от имени домена, а ip адреса.
и именно с первым вариантом (ipfw) я и просил помочь. мне подсказали, что также можно использовать программу redir. я ее поставил из портов. и она прекрасно работает.
Но хотелось бы разобраться и с IPFW и NATD, так как это более стандартные средства. Не хочется вешать что-то еще сверх, дополнительно.
>я не над кем не смеялся и не издевался. хотелось бы, что
>бы и в мой адрес также этого не было.да брось, грузиться предлагаешь? или тебе не смешно? :) ну извини тогда, я пытался разрядить обстановку
>я благодарен за объяснения, но как уже писал _выше_, вариант со squid'ом
>и ДНСкой не поможет, так как я имею дело не только
>с http протоколом, а также с большим количеством других. т.е. будем
>отталкиваться не от имени домена, а ip адреса.отталкиваться можно и от домена, просто добавив ему порт
тебе про это написали, но ты сказал, что "это разные домены"
создай зону для каждого домена, в чём проблема?
повторюсь - я не рассматривал изначально вариант с днс, но он должен быть гораздо изящнее и чуть быстрее, т.к. именно к нему запрос идёт в первую очередь
я бы копал в этом направлении.
если это сложно (а днс, это сложно. порядком сложнее ipfw и нат вместе взятых), то через ipfw:
domain.ru 80
domain.ru 20,21
domain.ru 25,110
domain2.ru 80
domain2.ru 20,21
domain2.ru 25,110
указываешь после 'to'>и именно с первым вариантом (ipfw) я и просил помочь. мне подсказали,
>что также можно использовать программу redir. я ее поставил из портов.
>и она прекрасно работает.
>Но хотелось бы разобраться и с IPFW и NATD, так как это
>более стандартные средства. Не хочется вешать что-то еще сверх, дополнительно.вот это правильно. *nix заточен как раз на то, чтобы ничего сверх и дополнительно вешать не приходилось
но разобраться тебе сначала надо в себе. ТЕБЕ НЕ НУЖЕН НАТ!
сформулируй себе в мозгу задачу правильно уже. у тебя какая-то каша там
ты хочешь ЛОКАЛКУ отправить В ЛОКАЛКУ на ВНУТРЕННИЕ сервера
для ЛОКАЛКИ ближе по ЛОКАЛКЕ
причём тут НАТ?!
ЛОКАЛКА на ВНУТРЕННЕМ интерфейсе
НАТ на ВНЕШНЕМ и задачи у него другие.
объясню ещё подробнее
скорее для себя..
сидит у тебя юзер в локалке
пишет в браузере
http://www.domain.ru
браузер глядит в настройки TCP/IP на адрес шлюза
идёт на шлюз с адресом назначения + 53 порт (ему нужен днс-сервер, чтобы преобразовать domain.ru в цифры)
втыкается в ipfw сразу и без вариантов, считывает правила для внутренних интерфейсов (тут ipfw надо использовать первый раз, чтобы fwd его на IP_днс_сервера 53 - прозрачный днс)
далее, с полученным IP, он опять считывает правила в ipfw для внутренних интерфейсов и тут его можно использовать второй раз для заворотов куда угодно либо просто пропускать (при этом, во втором разе у него фигурирует в пакете И имя домена И его IP)и вот только после ДВУХ возможностей его завернуть ещё в локалке (1 раз через bind, 2 раз через ipfw) он добирается до ВНЕШНЕГО ИНТЕРФЕЙСА и читает правила ipfw для ВНЕШНИХ ИНТЕРФЕЙСОВ, где уже указана трансляция пакета через НАТ и прочие внешние приблуды.
>вот это правильно. *nix заточен как раз на то, чтобы ничего сверх
>и дополнительно вешать не приходилось
>но разобраться тебе сначала надо в себе. ТЕБЕ НЕ НУЖЕН НАТ!
>сформулируй себе в мозгу задачу правильно уже. у тебя какая-то каша там
>
>ты хочешь ЛОКАЛКУ отправить В ЛОКАЛКУ на ВНУТРЕННИЕ сервера
>для ЛОКАЛКИ ближе по ЛОКАЛКЕ
>причём тут НАТ?!
>ЛОКАЛКА на ВНУТРЕННЕМ интерфейсе
>НАТ на ВНЕШНЕМ и задачи у него другие.блин... мне нужна банальная маршрутизация, но только "по портам".. попробую объяснить по-порядку:
дано:1) сеть 192.168.112/24
2) шлюз с внутренним интерфейсом 192.168.112.1 и внешним 99.99.99.99
3) http сервер 192.168.112.2:80
4) ftp сервер 192.168.112.3:21нужно, чтобы какой-то внутренний клиент сети (например, 192.168.112.25) обращаясь на 99.99.99.99:80 форвардился на 192.168.112.2:80, а обращаясь на 99.99.99.99:21 форвардился на 192.168.112.3:21.
вот и все.
>[оверквотинг удален]
>дано:
>
>1) сеть 192.168.112/24
>2) шлюз с внутренним интерфейсом 192.168.112.1 и внешним 99.99.99.99
>3) http сервер 192.168.112.2:80
>4) ftp сервер 192.168.112.3:21
>
>нужно, чтобы какой-то внутренний клиент сети (например, 192.168.112.25) обращаясь на 99.99.99.99:80 форвардился
>на 192.168.112.2:80, а обращаясь на 99.99.99.99:21 форвардился на 192.168.112.3:21.
>вот и все.Так тебе и говорят, что достаточно внутренний DNS-сервер поднять, и все.
Никакая маршрутизация нафиг не нужна.
Ну ни по ip же юзеры с сервисам у тебя обращаются (если да, то ССЗБ), вот и пропиши домены www.domain.ru, ftp.domain.ru etc. И сообщи пользователям, чтоб отныне по данным адресам обращались, оно так и легче и идеалогически правильнее.
>Так тебе и говорят, что достаточно внутренний DNS-сервер поднять, и все.
>Никакая маршрутизация нафиг не нужна.
>Ну ни по ip же юзеры с сервисам у тебя обращаются (если
>да, то ССЗБ), вот и пропиши домены www.domain.ru, ftp.domain.ru etc. И
>сообщи пользователям, чтоб отныне по данным адресам обращались, оно так и
>легче и идеалогически правильнее.блин. если бы все так было просто - сделал __так__ уже давно.
если кто знает как сделать так, как мне надо, просьба ответьте. вопрос все еще открыт, блин :( с ДНС'сом не пройдет, как я говорил уже не раз. да, сейчас я поменял фаервол - поставил PF.
>[оверквотинг удален]
>>да, то ССЗБ), вот и пропиши домены www.domain.ru, ftp.domain.ru etc. И
>>сообщи пользователям, чтоб отныне по данным адресам обращались, оно так и
>>легче и идеалогически правильнее.
>
>блин. если бы все так было просто - сделал __так__ уже давно.
>
>если кто знает как сделать так, как мне надо, просьба ответьте. вопрос
>все еще открыт, блин :( с ДНС'сом не пройдет, как я
>говорил уже не раз. да, сейчас я поменял фаервол - поставил
>PF.показывайте конфиг pf, если все еще не работает
>показывайте конфиг pf, если все еще не работает# конфигурация
ext_if="ed0" # Внешний интерфейс
int_if="vr0" # Внутренний интерфейс
external_addr="91.122.47.93" # Внешний IP-адрес
int_net="{192.168.100.0/24, 192.168.112.0/24, 192.168.128.0/24, 192.168.200.0/24}" # Сети# опции
set fingerprints "/etc/pf.os"
set loginterface $ext_if
set debug urgent
set block-policy drop
set skip on lo0
scrub in on ! lo0 all fragment reassemblerdr on $int_if proto tcp from $int_net to $external_addr port 80 -> 192.168.112.2 port 80
# вот этой строкой пытаюсь редиректнуть - не работает. (
# внешний NAT
nat on $ext_if from $int_net -> $ext_if# внутренний NAT
#nat on $int_if from $int_net to $external_addr port 80 -> $int_if# пересылка снаружи на внутренние сервера
rdr on $ext_if proto tcp from any to $external_addr port 80 -> 192.168.112.2 port 80 # http
rdr on $ext_if proto tcp from any to $external_addr port 25 -> 192.168.112.2 port 25 # smtp
rdr on $ext_if proto tcp from any to $external_addr port 110 -> 192.168.112.2 port 110 # pop3
rdr on $ext_if proto tcp from any to $external_addr port 143 -> 192.168.112.2 port 143 # imap4
rdr on $ext_if proto tcp from any to $external_addr port 10245 -> 192.168.112.3 port 10245 # torrent
rdr on $ext_if proto tcp from any to $external_addr port 1723 -> 192.168.112.5 port 1723 # pptp
rdr on $ext_if proto gre from any to $external_addr -> 192.168.112.5 # pptp
rdr on $ext_if proto tcp from any to $external_addr port 1701 -> 192.168.112.5 port 1701 # l2tp
rdr on $ext_if proto udp from any to $external_addr port 1701 -> 192.168.112.5 port 1701 # l2tp# правила
pass quick on lo0
pass quick on $int_if
antispoof log quick for $ext_if
block on $ext_if
block in quick from any os NMAP
pass out on $ext_if proto udp keep state
pass out on $ext_if proto tcp flags S/SA keep state
pass on $ext_if inet proto icmp icmp-type echoreq code 0 keep state # icmp# сервисы шлюза
pass in on $ext_if inet proto udp from any to port 53 keep state # dns
pass in on $ext_if inet proto tcp from any to port 53 flags S/SA keep state # dns
pass in on $ext_if inet proto tcp from any to port 22 flags S/SA keep state # ssh# пересылка снаружи на внутренние сервера
pass in on $ext_if inet proto tcp from any to 192.168.112.2 port 80 flags S/SA synproxy state # http
pass in on $ext_if inet proto tcp from any to 192.168.112.2 port 25 flags S/SA keep state # smtp
pass in on $ext_if inet proto tcp from any to 192.168.112.2 port 110 flags S/SA keep state # pop3
pass in on $ext_if inet proto tcp from any to 192.168.112.2 port 143 flags S/SA keep state # imap4
pass in on $ext_if inet proto tcp from any to 192.168.112.3 port 10245 flags S/SA keep state # torrent
pass in on $ext_if inet proto tcp from any to 192.168.112.5 port 1723 flags S/SA keep state # pptp
pass in on $ext_if inet proto gre from any to 192.168.112.5 # pptp
pass in on $ext_if inet proto tcp from any to 192.168.112.5 port 1701 flags S/SA keep state # l2tp
pass in on $ext_if inet proto udp from any to 192.168.112.5 port 1701 keep state # l2tp#pass on $ext_if inet proto tcp from $int_net to $external_addr port 80 flags S/SA keep state #(это я уже извращался с редиректом, ставил и внутренний интерфейс, и внешний, а для этого разрешение делал)
1
>[оверквотинг удален]
>бы и в мой адрес также этого не было.
>я благодарен за объяснения, но как уже писал _выше_, вариант со squid'ом
>и ДНСкой не поможет, так как я имею дело не только
>с http протоколом, а также с большим количеством других. т.е. будем
>отталкиваться не от имени домена, а ip адреса.
>и именно с первым вариантом (ipfw) я и просил помочь. мне подсказали,
>что также можно использовать программу redir. я ее поставил из портов.
>и она прекрасно работает.
>Но хотелось бы разобраться и с IPFW и NATD, так как это
>более стандартные средства. Не хочется вешать что-то еще сверх, дополнительно.если не хочется ничего навешивать, то с помощью DNS было бы проще, если конечно клиенты не предпочитают в адресной строке браузера писать IP адреса :) .
По поводу IPFW и NATD не подскажу, не пользовался. Душа больше к PF тянется, там firewall и NAT вместе.
Может уже поздно...Насколько я понял тебе нужно просто прописать в конфиге для natd /etc/natd.conf если указан в настройках его использовать
прописать строчку типа
redirect_port tcp 192.168.112.3:80 99.99.99.99:80и заодно вопрос, т.к. я не могу настроить именно чтоб форвардились пакеты извне т.е. с внешнего интерфейса на локальную машину ipfw add fwd пишет ошибку чтобы туда не писал ((
вопрос закрыт.все решил, наконец-то.rdr on $int_if proto tcp from $int_net to $ext_if port 80 -> $server
no nat on $int_if proto tcp from $int_if to $int_net
nat on $int_if proto tcp from $int_net to $server port 80 -> $int_ifНо сделав так, я подумал и решил перенести серевер в DMZ )