URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 46419
[ Назад ]

Исходное сообщение
"Как организовать доступ к серверу во внутренней сети"

Отправлено Victor , 23-Июл-04 11:40 
Подскажите, куда копать? Ситуация такая:
Есть сеть с адресами 192.168.хх.хх, выходит в интернет через шлюз на FreeBSD ( наружу смотрит адрес yy.yy.yy.yy, а внутрь - 192.168.хх.1 ) , на котором работает natd. Внутри сети есть машина 192.168.хх.2, на ней стоят web и ftp сервера.

Теперь вопрос: Можно ли сделать так, чтобы входящие запросы на yy.yy.yy.yy на порты 80, 21 перенаправлялись на этот внутренний сервер и его ответы уходили наружу от адреса yy.yy.yy.yy?

Пробывал говорить ipfw add xx fwd 192.168.хх.2 tcp from any to yy.yy.yy.yy 80, пакеты конечно прилетают на внутренний сервер, но что с ними потом делать? Они же не на адрес внутреннего сервера - он с ними делает "deny"

Или ткните носом - что почитать. Я дошел только до того, что мне, по идее нужен "двойной нат": у приходящих на yy.yy.yy.yy пакетов нужно заменить источник на 192.168.хх.1, а назначение на 192.168.хх.2. Это же бред? А как нормальные люди делают?


Содержание

Сообщения в этом обсуждении
"Как организовать доступ к серверу во внутренней сети"
Отправлено _Vic_ , 24-Июл-04 18:10 
Пробую использовать ipf

Делаю
kldload ipl
/sbin/ipnat -F -f /etc/ipnat.rules

В ipnat.rules стоят правила:

rdr rl0 10.104.0.85/32 port 80 -> 192.168.52.2 port 80
map rl1 from 0/0 to 192.168.52.2/32 -> 192.168.52.1/32


10.104.0.85 -  на rl0 внешний адрес моего роутера
192.168.52.1 - на rl1 внутренний адрес моего роутера
192.168.52.2 - собственно сервер внутри сети с www, ftp и т.д.

Картина такая:
-------------------------------------------
ipmon -v -o NSI
24/07/2004 18:14:59.042866 @1 NAT:RDR 192.168.52.2,80 <- -> 10.104.0.85,80 [10.104.1.41,3008]
24/07/2004 18:14:59.042903 @2 NAT:MAP 10.104.1.41,3008 <- -> 192.168.52.1,3008 [192.168.52.2,80]
24/07/2004 18:19:22.936104 @2 NAT:EXPIRE 10.104.1.41,3008 <- -> 192.168.52.1,3008 [192.168.52.2,80] Pkts 9 Bytes 396
24/07/2004 18:19:22.936117 @1 NAT:EXPIRE 192.168.52.2,80 <- -> 10.104.0.85,80 [10.104.1.41,3008] Pkts 9 Bytes 396

-------------------------------------------
tcpdump -i rl1 -n host 192.168.52.2
18:15:02.040982 192.168.52.1.3008 > 192.168.52.2.80: S 363172358:363172358(0) win 57344 <mss 1460> (DF)
18:15:02.041109 192.168.52.2.80 > 192.168.52.1.3008: S 1400372720:1400372720(0) ack 363172359 win 57344 <mss 1460> (DF)

то есть до сервера пакеты доходят и он отвечает чего-то, но наружу через роутер ничего не выходит.

У меня на машине стоит файервол ipfw, на нем правила для выхода сетки наружу.

Как между собой ipfw и ipf взаимодействуют? Может ipfw резать пакеты, которые должен обрабатывать ipf? Или они независимо работают? В логах ipfw нет строк, что он пакет от 192.168.52.2 запретил.

Что можно еще сделать, чтобы ответы наружу пошли?


"Как организовать доступ к серверу во внутренней сети"
Отправлено RaZOR , 24-Июл-04 23:05 
а не пробовал пользовать что-то одно - или ipf, или ipfw?

"Как организовать доступ к серверу во внутренней сети"
Отправлено Victor , 26-Июл-04 10:17 
>а не пробовал пользовать что-то одно - или ipf, или ipfw?

Сейчас на этой машине у меня настроено подключение по vpn к провайдеру и идет статисика пользователей через ipfw, поэтому не могу от него отказаться. ipf только начал смотреть. Но судя по тому, что внешние пакеты внутрь пролетают, при этом с заменой нужных адресов, ipf и ipfw работают независимо.

Но может кто-то подскажет, как в ipfw сделать так, чтобы пакеты, которые прилетают на внешний интерфес на порты 20, 21, 80 пробрасывались на внутреннюю машину на эти же порты, но на адрес внутренней машины, а ответы  обранто выдавались наружу с обратной заменой адресов?


"Как организовать доступ к серверу во внутренней сети"
Отправлено RaZOR , 26-Июл-04 10:30 
natd?

"Как организовать доступ к серверу во внутренней сети"
Отправлено Victor , 26-Июл-04 11:58 
>natd?

пробывал натить пакеты, приходящие на внешний интерфейс на порт 80.

На внутреннюю машину приходят пакеты, у которых адрес истрочника - внутренний адрес роутера, а адрес назначения - внешний адрес роутера. А дальше непонятно, что с ними делать.


"Как организовать доступ к серверу во внутренней сети"
Отправлено Shadow , 24-Июл-04 22:13 
а что про такой порт как rinetd все забыли?
прост в настройке как "ДВА БАЙТА ПЕРЕДАТЬ"
или тебе надо еще и UDP прокидывать ?

"Как организовать доступ к серверу во внутренней сети"
Отправлено cray , 26-Июл-04 13:16 
>Подскажите, куда копать? Ситуация такая:
>Есть сеть с адресами 192.168.хх.хх, выходит в интернет через шлюз на FreeBSD
>( наружу смотрит адрес yy.yy.yy.yy, а внутрь - 192.168.хх.1 ) ,
>на котором работает natd. Внутри сети есть машина 192.168.хх.2, на ней
>стоят web и ftp сервера.
>
>Теперь вопрос: Можно ли сделать так, чтобы входящие запросы на yy.yy.yy.yy на
>порты 80, 21 перенаправлялись на этот внутренний сервер и его ответы
>уходили наружу от адреса yy.yy.yy.yy?
>
>Пробывал говорить ipfw add xx fwd 192.168.хх.2 tcp from any to yy.yy.yy.yy
>80, пакеты конечно прилетают на внутренний сервер, но что с ними
>потом делать? Они же не на адрес внутреннего сервера - он
>с ними делает "deny"
>
>Или ткните носом - что почитать. Я дошел только до того, что
>мне, по идее нужен "двойной нат": у приходящих на yy.yy.yy.yy пакетов
>нужно заменить источник на 192.168.хх.1, а назначение на 192.168.хх.2. Это же
>бред? А как нормальные люди делают?

Я сделал по проще, из локалки у меня работает NATD, а в локалку IPNAT, и причём IPNAT не натит выход в инет, он тока редиректит ао внутрению сетку.
Пример из ipnat
rdr rl0 xxx.xxx.xxx.xxx/32 port 53 -> 192.168.1.2 port 53 udp
rdr rl0 xxx.xxx.xxx.xxx/32 port 80 -> 192.168.1.2 port 80 tcp
как видно из инета (внешний IP-адрес моего шлюза) прокидывается соединение на локальный IP с портом 53 и 80 соответственно указывается протокол UDP или TCP. Плюс к этому у меня работает firewall на IPFW и считалка трафика, работает без замечаний.


"Как организовать доступ к серверу во внутренней сети"
Отправлено Xeon , 26-Июл-04 13:27 
Вот здесь отлично описано: http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/netwo...

"Как организовать доступ к серверу во внутренней сети"
Отправлено Victor , 27-Июл-04 09:46 
>Вот здесь отлично описано: http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/netwo...

Моя ситуация такая: есть 2 сети ( от 2 провайдеров ) с пересекающимися адресами из сетей 10.х.х.х . Я хочу сделать так, чтобы ресурсы ( www, ftp ) были доступны из обеих сетей. Для этого я ставлю одну машинку к одному провайдеру и все запросы от него хочу преобразовать, чтобы они преобразовывались в запросы от этой машинки с ее внутреннего адреса ко второй машинке, подключенной к сети другого провайдера. Вторая машинка отвечает первой, а первая перекидывает все в сеть первого провайдера как свой ответ.

Я такое решение придумал, так как не представляю, как сделать на одной машинке, чтобы у нее на разные интерфейсы приходили запросы из сетей с одинаковыми ip и чтобы она еще и правильно ( с того интерфейса, с которого пришел запрос ) отдавла ответ.



"Как организовать доступ к серверу во внутренней сети"
Отправлено Victor , 27-Июл-04 09:38 

>Я сделал по проще, из локалки у меня работает NATD, а в
>локалку IPNAT, и причём IPNAT не натит выход в инет, он
>тока редиректит ао внутрению сетку.
>Пример из ipnat
>rdr rl0 xxx.xxx.xxx.xxx/32 port 53 -> 192.168.1.2 port 53 udp
>rdr rl0 xxx.xxx.xxx.xxx/32 port 80 -> 192.168.1.2 port 80 tcp
>как видно из инета (внешний IP-адрес моего шлюза) прокидывается соединение на локальный
>IP с портом 53 и 80 соответственно указывается протокол UDP или
>TCP. Плюс к этому у меня работает firewall на IPFW и
>считалка трафика, работает без замечаний.

Вот и я так сделал - см. немного выше. Но у меня ответы от внутренней машины не выходят наружу. Т.е. на внутреннюю машину запросы приходят и она выдает ответы, но наружу они не вылетают. Значит, где-то в ipnat что-то не работеат при моих настройках.

Я и спрашиваю ( сейчас, потому что с начала разговора уже ситуация меняется от моих изысканий): где я не прав в конфиге для ipnat?


"Как организовать доступ к серверу во внутренней сети"
Отправлено _Vic_ , 27-Июл-04 15:56 
>Вот и я так сделал - см. немного выше. Но у меня
>ответы от внутренней машины не выходят наружу. Т.е. на внутреннюю машину
>запросы приходят и она выдает ответы, но наружу они не вылетают.
>Значит, где-то в ipnat что-то не работеат при моих настройках.
>
>Я и спрашиваю ( сейчас, потому что с начала разговора уже ситуация
>меняется от моих изысканий): где я не прав в конфиге для
>ipnat?


Итак, заработала следующая связка правил:

map rl1 from 0/0 to 192.168.52.2/32 -> 192.168.52.1/32
rdr rl0 10.104.0.85/32 port 80 -> 192.168.52.2 port 80

просто правило map поставил перед правилом rdr. На внутреннюю машину приходят пакеты со шлюза и шлюз ответы оправляет от своего имени.

Оказался важен порядок правил!


"Как организовать доступ к серверу во внутренней сети"
Отправлено HFSC , 27-Июл-04 18:44 
>>Вот и я так сделал - см. немного выше. Но у меня
>>ответы от внутренней машины не выходят наружу. Т.е. на внутреннюю машину
>>запросы приходят и она выдает ответы, но наружу они не вылетают.
>>Значит, где-то в ipnat что-то не работеат при моих настройках.
>>
>>Я и спрашиваю ( сейчас, потому что с начала разговора уже ситуация
>>меняется от моих изысканий): где я не прав в конфиге для
>>ipnat?
>
>
>Итак, заработала следующая связка правил:
>
>map rl1 from 0/0 to 192.168.52.2/32 -> 192.168.52.1/32
>rdr rl0 10.104.0.85/32 port 80 -> 192.168.52.2 port 80
>
>просто правило map поставил перед правилом rdr. На внутреннюю машину приходят пакеты
>со шлюза и шлюз ответы оправляет от своего имени.
>
>Оказался важен порядок правил!

ipfw add divert natd tcp from $int_net to $ext_ip 80 in via $int_int
ipfw add divert natd tcp from $int_net to $web_ip 80 out via $int_int
ipfw add divert natd tcp from any to $ext_ip 80 in via $ext_int
ipfw add divert natd tcp from $web_ip 80 to $int_net out via $int_int
ipfw add divert natd tcp from $web_ip 80 to $ext_ip in via $int_int
ipfw add divert natd tcp from $web_ip 80 to any out via $ext_int