The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"freebsd, nat и redirect_port"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"freebsd, nat и redirect_port"
Сообщение от Feel emailИскать по авторуВ закладки(ok) on 01-Сен-04, 16:05  (MSK)
типичная задача - но не работает зараза...
облазил инет - масса вариантов; в манах, как обычно, есть все; да туго с примерами
суть дела:
имеем шлюз на FreeBSD 4.4 с NAT и IPFW
одна сетевуха ed0 смотрит в инет 62.114.165.35
вторая сетевуха ed1 с адресом 192.168.0.100 смотрит в локалку 192.168.0.1/24
вся локалка под виндой ходит в инет через эту машину, все работает...


Имеем
(ядро пересобрано
options IPDIVERT
options IPFIREWALL
options IPFIREWALL_FORWARD):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rc.conf

gateway_enable="YES"
firewall_enable="YES"
natd_enable="YES"
natd_interface="ed0"
natd_flags="-f /etc/natd.conf"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
natd.sh

/sbin/natd -f /etc/natd.conf -n ed0 -l
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
natd.conf

same_ports yes
use_sockets yes
log yes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rc.firewall

ipfw add 100 deny udp from any to any 137,138,139
ipfw add 300 divert natd all from any to any
#-----count section
ipfw add 400 count all from any to 192.168.0.2 in
ipfw add 500 count all from 192.168.0.2 to any in
ipfw add 600 count all from any to 192.168.0.3 in
ipfw add 700 count all from 192.168.0.3 to any in
#-----allow dns
ipfw add 800 allow udp from any 53 to any
ipfw add 900 allow udp from any to any 53
#-----allow http for 192.168.0.2
ipfw add 1000 allow tcp from any 80,443 to 192.168.0.2
ipfw add 1100 allow tcp from 192.168.0.2 to any 80,443
#-----allow pop3, smtp, pass for 192.168.0.3
ipfw add 1200 allow tcp from any 110,25,143 to 192.168.0.3
ipfw add 1300 allow tcp from 192.168.0.3 to any 110,25,143
#-----allow connect
ipfw add 2000 allow tcp from 62.114.165.35 to any
хххххххх 65535 deny ip from any to any (добавляется по умолчанию)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

повторюсь - все работает :)

поставили в локалке сервак 192.168.0.11 FreeBSD 4.10 + Apache,
к которому по локалке доступ замечательный

Задача - дать доступ к этому серваку из инета,
при этом: не нарушая доступ к нему из локалки
          не нарушая доступ из локалки в инет
          не поднимая дополнительных сервисов на шлюзе (обойдясь nat и ipfw)

кажется все просто: RTFM - добавляем в
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
natd.conf

redirect_port tcp 192.168.0.11:80 80
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rc.firewall

ipfw add 1400 allow tcp from any to 192.168.0.11 80
ipfw add 1500 allow tcp from 192.168.0.11 80 to any
ipfw add 1600 allow tcp from any to 62.114.165.35 80
ipfw add 1700 allow tcp from 62.114.165.35 80 to any
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

...ан не фурычит... пакеты будто пропадают...
выручайте братцы (чуть не плача - неделю е`бьюсь) -
что и главное куда нужно вставить (в rc.firewall ?) чтоб заработало.. ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "freebsd, nat и redirect_port"
Сообщение от Lucky emailИскать по авторуВ закладки(??) on 01-Сен-04, 16:09  (MSK)
>типичная задача - но не работает зараза...
>облазил инет - масса вариантов; в манах, как обычно, есть все; да
>туго с примерами
>суть дела:
>имеем шлюз на FreeBSD 4.4 с NAT и IPFW
>одна сетевуха ed0 смотрит в инет 62.114.165.35
>вторая сетевуха ed1 с адресом 192.168.0.100 смотрит в локалку 192.168.0.1/24
>вся локалка под виндой ходит в инет через эту машину, все работает...
>
>
>
>Имеем
>(ядро пересобрано
>options IPDIVERT
>options IPFIREWALL
>options IPFIREWALL_FORWARD):
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>rc.conf
>
>gateway_enable="YES"
>firewall_enable="YES"
>natd_enable="YES"
>natd_interface="ed0"
>natd_flags="-f /etc/natd.conf"
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>natd.sh
>
>/sbin/natd -f /etc/natd.conf -n ed0 -l
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>natd.conf
>
>same_ports yes
>use_sockets yes
>log yes
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>rc.firewall
>
>ipfw add 100 deny udp from any to any 137,138,139
>ipfw add 300 divert natd all from any to any
>#-----count section
>ipfw add 400 count all from any to 192.168.0.2 in
>ipfw add 500 count all from 192.168.0.2 to any in
>ipfw add 600 count all from any to 192.168.0.3 in
>ipfw add 700 count all from 192.168.0.3 to any in
>#-----allow dns
>ipfw add 800 allow udp from any 53 to any
>ipfw add 900 allow udp from any to any 53
>#-----allow http for 192.168.0.2
>ipfw add 1000 allow tcp from any 80,443 to 192.168.0.2
>ipfw add 1100 allow tcp from 192.168.0.2 to any 80,443
>#-----allow pop3, smtp, pass for 192.168.0.3
>ipfw add 1200 allow tcp from any 110,25,143 to 192.168.0.3
>ipfw add 1300 allow tcp from 192.168.0.3 to any 110,25,143
>#-----allow connect
>ipfw add 2000 allow tcp from 62.114.165.35 to any
>хххххххх 65535 deny ip from any to any (добавляется по умолчанию)
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>повторюсь - все работает :)
>
>поставили в локалке сервак 192.168.0.11 FreeBSD 4.10 + Apache,
>к которому по локалке доступ замечательный
>
>Задача - дать доступ к этому серваку из инета,
>при этом: не нарушая доступ к нему из локалки
>          не нарушая
>доступ из локалки в инет
>          не поднимая
>дополнительных сервисов на шлюзе (обойдясь nat и ipfw)
>
>кажется все просто: RTFM - добавляем в
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>natd.conf
>
>redirect_port tcp 192.168.0.11:80 80
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>rc.firewall
>
>ipfw add 1400 allow tcp from any to 192.168.0.11 80
>ipfw add 1500 allow tcp from 192.168.0.11 80 to any
>ipfw add 1600 allow tcp from any to 62.114.165.35 80
>ipfw add 1700 allow tcp from 62.114.165.35 80 to any
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>...ан не фурычит... пакеты будто пропадают...
>выручайте братцы (чуть не плача - неделю е`бьюсь) -
>что и главное куда нужно вставить (в rc.firewall ?) чтоб заработало.. ?
>


А зачем редирект то для нат? просто на файерволе порт открой и всех делов то.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "freebsd, nat и redirect_port"
Сообщение от Feel emailИскать по авторуВ закладки(ok) on 01-Сен-04, 16:28  (MSK)
>А зачем редирект то для нат? просто на файерволе порт открой и делов то

а как же мине перебросить запрос из инета на сервак внутри локалки?
как нат узнает - кому в локалке отдать пришедший извне пакет на 80 порт?

чет я отупел за неделю или пора увольнятся нафиг?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "freebsd, nat и redirect_port"
Сообщение от open emailИскать по авторуВ закладки on 01-Сен-04, 17:10  (MSK)
попробуй на время фаревол открыть для всего
и сразу станет понятно где собака порылась :)

>>А зачем редирект то для нат? просто на файерволе порт открой и делов то
>
>а как же мине перебросить запрос из инета на сервак внутри локалки?
>
>как нат узнает - кому в локалке отдать пришедший извне пакет на
>80 порт?
>
>чет я отупел за неделю или пора увольнятся нафиг?


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "freebsd, nat и redirect_port"
Сообщение от Feel emailИскать по авторуВ закладки(ok) on 01-Сен-04, 17:34  (MSK)
>попробуй на время фаревол открыть для всего
>и сразу станет понятно где собака порылась :)

дык время идет - я тоже не сижу:
пробовал поднимать второй нат на другом порту:
/sbin/natd -a 62.114.165.35 -p 8669 -redirect_port tcp 192.168.0.11:80 80
добавлял в rc.firewall перед 300 общим дивертом
ipfw add 200 divert 8669 tc from 192.168.0.101 to any via ed0
ipfw add 60000 allow all from any to any

безрезультатно...
что интересно - эта тема поднята на многих форумах и не по разу;
но НИГДЕ не доведена до конкретного рабочего примера...
толи люди всетаки сделали и успокоились - или забили нафик и проплатиле провайдеру 2 айпишник...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "freebsd, nat и redirect_port"
Сообщение от dravor emailИскать по авторуВ закладки on 01-Сен-04, 18:33  (MSK)
>что интересно - эта тема поднята на многих форумах и не по
>разу;
>но НИГДЕ не доведена до конкретного рабочего примера...
>толи люди всетаки сделали и успокоились - или забили нафик и проплатиле
>провайдеру 2 айпишник...
Я отношусь к их числу :)
Грабли в том, что дайверт на нат должен стоять как можно выше, до любых других разрешающих правил. Иначе приходящий пакет сразу не доходит до ната и видимо не создает "записи соответсвия" (не знаю как правильно сказать).

Попробуй запустить нат с консоли в режиме логирования без "демонизации".
Увидишь на каком шаге пакеты у тебя пропадают.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "можно попробовать ipnat - у меня работает"
Сообщение от Anastas Искать по авторуВ закладки(??) on 01-Сен-04, 17:36  (MSK)
именно так, как тебе надо

>
>Задача - дать доступ к этому серваку из инета,
>при этом: не нарушая доступ к нему из локалки
>          не нарушая
>доступ из локалки в инет
>          не поднимая
>дополнительных сервисов на шлюзе (обойдясь nat и ipfw)
>

смотреть хоть здесь
http://www.opennet.dev/base/net/ipnat_freebsd.txt.html

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "можно попробовать ipnat - у меня работает"
Сообщение от Feel emailИскать по авторуВ закладки(ok) on 01-Сен-04, 17:43  (MSK)
>можно попробовать ipnat - у меня работает
>именно так, как тебе надо

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

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "можно попробовать ipnat - у меня работает"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 01-Сен-04, 17:56  (MSK)
Был же совет, открой весь фаерволл сразу после divert дай редирект как писал, и посмотри что будет...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. ">Был же совет, открой весь фаерволл сразу после divert"
Сообщение от Feel emailИскать по авторуВ закладки(ok) on 01-Сен-04, 18:05  (MSK)
дык... эт первое - что сделал... нифига не пускает
проверяю снаружи с другого ip - syn_sent и молчание ягнят...

вот сдесь надыбил:
http://portal.sysadmins.ru/board/viewtopic.php?t=43338
но ничерта не понятно как сделать - нет примера, а в теории и так приблизительно ясна... :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. ">Был же совет, открой весь фаерволл сразу после divert"
Сообщение от A Clockwork Orange Искать по авторуВ закладки on 01-Сен-04, 18:24  (MSK)
ipfw add 300 divert natd all from any to any
ipfw add 400 allow from any to any

natd -u -s -redirect_port tcp 192.168.0.11:80 80 -n интерфейс

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. ">Был же совет, открой весь фаерволл сразу после divert"
Сообщение от Lucky emailИскать по авторуВ закладки(??) on 02-Сен-04, 07:22  (MSK)
>ipfw add 300 divert natd all from any to any
>ipfw add 400 allow from any to any
>
>natd -u -s -redirect_port tcp 192.168.0.11:80 80 -n интерфейс


Брось сюда ipfw show

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. ">Был же совет, открой весь фаерволл сразу после divert"
Сообщение от alk Искать по авторуВ закладки on 02-Сен-04, 09:42  (MSK)
строчка формата ipfw add 300 divert natd all from any to any
работает коряво

надо
my_net= "192.168.0.0/24"
${ipfw} add divert 8668(твой порт) ip from ${my_net} to any out xmit ed0
${ipfw} add divert 8668 ip from any to 62.114.165.35 in via ed0
${ipfw} add allow all from any to any (потом изменишь)

запускаем natd
natd -a 62.114.165.35 -p 8668 -redirect_port tcp 192.168.0.11:80 80

Заходим с инета
telnet 62.114.165.35 80
Все рабочее без вариантов
надеюсь DNS на твой реальный ip прописан

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. ">Был же совет, открой весь фаерволл сразу после divert"
Сообщение от alk Искать по авторуВ закладки on 02-Сен-04, 09:53  (MSK)
>строчка формата ipfw add 300 divert natd all from any to any
>
>работает коряво
>
>надо
>my_net= "192.168.0.0/24"
>${ipfw} add divert 8668(твой порт) ip from ${my_net} to any out xmit
>ed0
>${ipfw} add divert 8668 ip from any to 62.114.165.35 in via ed0
>
>${ipfw} add allow all from any to any (потом изменишь)
>
>запускаем natd
>natd -a 62.114.165.35 -p 8668 -redirect_port tcp 192.168.0.11:80 80
>
в догонку
route default на apache прописан?
пакеты до него доходят?
tcpdump на apache посмотри
>Заходим с инета
>telnet 62.114.165.35 80
>Все рабочее без вариантов
>надеюсь DNS на твой реальный ip прописан


  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "freebsd, nat и redirect_port"
Сообщение от pashca Искать по авторуВ закладки on 02-Сен-04, 10:06  (MSK)
>natd.conf
>
>redirect_port tcp 192.168.0.11:80 80
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>rc.firewall
>
>ipfw add 1400 allow tcp from any to 192.168.0.11 80
>ipfw add 1500 allow tcp from 192.168.0.11 80 to any
>ipfw add 1600 allow tcp from any to 62.114.165.35 80
>ipfw add 1700 allow tcp from 62.114.165.35 80 to any
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ipfw add 1400 allow tcp from any to me 80

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "заработало..."
Сообщение от Feel emailИскать по авторуВ закладки(??) on 02-Сен-04, 13:38  (MSK)
наконец то...
спасибо всем, принявшим посильное участие :)
работает так:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
natd.sh
# было
/sbin/natd -f /etc/natd.conf -n ed0 -l
# надо
/sbin/natd -f /etc/natd.conf -n ed0 -l -p 8668 -a 62.114.165.35 -redirect_port tcp 192.168.0.11:80 80
# почему-то из natd.conf не все цепляет, а из командной - пожалуйста...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
natd.conf

same_ports yes
use_sockets yes
log yes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rc.firewall

ipfw add 100 deny udp from any to any 137,138,139
# вот строка нукудышняя - убираем нафик:
# ipfw add 300 divert natd all from any to any
# вот что пишем вместо нее:
ipfw add 300 divert natd all from 192.168.0.1/24 to not 192.168.0.1/24 out via ed0
ipfw add 301 divert natd all from any to 62.114.165.35 in via ed0
# никаких строк, типа 302 добавлять не надо !!!
# ipfw add 302 divert natd tcp from any to 62.114.165.35 80 out
#-----count section
ipfw add 400 count all from any to 192.168.0.2 in
ipfw add 500 count all from 192.168.0.2 to any in
# правило типа 501 ноже никчему - счетчики нулевые, пакет уже просунут внутрь
# ipfw add 501 count all from any to 192.168.0.11 in
#-----allow dns
ipfw add 800 allow udp from any 53 to any
ipfw add 900 allow udp from any to any 53
#-----allow http for 192.168.0.2
ipfw add 1000 allow tcp from any 80,443 to 192.168.0.2
ipfw add 1100 allow tcp from 192.168.0.2 to any 80,443
# строки типа 1200 - никчему тоже...
ipfw add 1200 allow tcp from 192.168.0.11 to any
#-----allow connect
ipfw add 2000 allow tcp from 62.114.165.35 to any # обязательно должно быть
# или так: перечислить разрешенные порты
# ipfw add 2000 allow tcp from 62.114.165.35 to any 53,80,443
ipfw add 3000 log deny all from any to any # не помешает :)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

т.е. вся вообщем заковыка была в natd.sh
почему.. неясно :)

и еще...
найдено в интернете - все четко и ясно (не то что маны :)
1. Пакеты проходят правила в прямом порядке, т.е. по номерам, от меньшего к большему
2. При простейшем случае роутинга - две сетевухи, пакет проходит файрвол 3 раза - на входе одной сетевухи (recv in), на ее выходе (recv out), на выходе другой сетевухи (xmit out)
3. Divert, равно как Forward, равно как и Tee может запулить пакет (почти) куда угодно - и согласно ограничениям

  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "заработало..."
Сообщение от DENNN emailИскать по авторуВ закладки(??) on 02-Сен-04, 13:50  (MSK)

>найдено в интернете - все четко и ясно (не то что маны
Вообще-то это есть все в манах и handbook, просто нужно читать внимательно
  Рекомендовать в FAQ | Cообщить модератору | Наверх

17. "есть все в манах"
Сообщение от Feel emailИскать по авторуВ закладки(??) on 02-Сен-04, 14:06  (MSK)
согласен на 100 прц, но зато как четко, лаконично, доступно и по русски Ж)


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру