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

Исходное сообщение
"два шлюза, ipfw, natd, вебсервер внутри"

Отправлено Oppofan , 22-Дек-05 18:17 
Приветствую всех.
Виндовая сеть, два шлюза на FreeBSD 4.x один из них шлюз по умолчанию для сети. Вебсервер внутри сети. Через тот шлюз, который по умолчанию, прокинут порт внутрь на этот самый веб-сервер, всё работает без проблем, но появилась необходимость сделать такой же вход через второй шлюз... (раньше на нем работал только прокси тоже всё работало без проблем). natd & ipfw настроены аналогично.... проблема в том, что веб-сервер, судя по всему, пытается ответить на этот запрос через шлюз по умолчанию и, соответственно, коннект у клиента с сервером не устанавливается...
Мои думки зашли в тупик... и закрадывается мысль - а вообще так можно сделать? Поможет ли перенос линков от обоих провайдеров на один системник, запустив на нем парочку натов на каждый из внешних интерфейсов? Или Фря не справится с такой задачей? Тогда кто?
Линки по теме тоже приветствуются :-)

Содержание

Сообщения в этом обсуждении
"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено fa , 22-Дек-05 21:29 
>Приветствую всех.
>Виндовая сеть, два шлюза на FreeBSD 4.x один из них шлюз по
>умолчанию для сети. Вебсервер внутри сети. Через тот шлюз, который по
>умолчанию, прокинут порт внутрь на этот самый веб-сервер, всё работает без
>проблем, но появилась необходимость сделать такой же вход через второй шлюз...
>(раньше на нем работал только прокси тоже всё работало без проблем).
>natd & ipfw настроены аналогично.... проблема в том, что веб-сервер, судя
>по всему, пытается ответить на этот запрос через шлюз по умолчанию
>и, соответственно, коннект у клиента с сервером не устанавливается...
Попробуйте посмотреть tcpdump-ом, так ли это. Должно быть так, если веб-сервер и второй шлюз находятся в разных подсетях. Если адреса фейковые и проброс идет через нат, добавьте веб-серверу второй ip из той же подсети, что и второй шлюз.
>Мои думки зашли в тупик... и закрадывается мысль - а вообще так
>можно сделать? Поможет ли перенос линков от обоих провайдеров на один
>системник, запустив на нем парочку натов на каждый из внешних интерфейсов?
>Или Фря не справится с такой задачей? Тогда кто?
>Линки по теме тоже приветствуются :-)
Справится. У многих (у меня в том числе) 2 канала в инет. Работают 2 ната и трафик дивертится то на один, то на второй в зависимости от айпи пользователя. Наберите в поиске что-то типа "два канала в инет"



"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено Oppofan , 22-Дек-05 22:12 
>>natd & ipfw настроены аналогично.... проблема в том, что веб-сервер, судя
>>по всему, пытается ответить на этот запрос через шлюз по умолчанию
>>и, соответственно, коннект у клиента с сервером не устанавливается...
>Попробуйте посмотреть tcpdump-ом, так ли это. Должно быть так, если веб-сервер и
>второй шлюз находятся в разных подсетях. Если адреса фейковые и проброс
>идет через нат, добавьте веб-серверу второй ip из той же подсети,
>что и второй шлюз.
по поводу tcpdump'a - никого знакомых снаружи нет - это до завтра, посмотрю обязательно (как сам не догадался...), но настроено одинаково - проблем быть не должно... внутри одна подсеть, так что это не то...

>>Мои думки зашли в тупик... и закрадывается мысль - а вообще так
>>можно сделать? Поможет ли перенос линков от обоих провайдеров на один
>>системник, запустив на нем парочку натов на каждый из внешних интерфейсов?
>>Или Фря не справится с такой задачей? Тогда кто?
>>Линки по теме тоже приветствуются :-)
>Справится. У многих (у меня в том числе) 2 канала в инет.
>Работают 2 ната и трафик дивертится то на один, то на
>второй в зависимости от айпи пользователя. Наберите в поиске что-то типа
>"два канала в инет"
Ага - изнутри выпустить наружу не проблема, это в курсе, а вот снаружи впустить внутрь! Суть такая, что у наших клиентов стоит наша (естественно :-)) программа, которая лезет на наш сайт. Задача стоит в том, чтобы при запросе на любой из внешних ip (снаружи подсети разные) ответ клиентом был получен... а сервер внутри.
Если оба канала воткнуть в одну машину (как в общем то и планируется вскорости), а не как сейчас в разные, два ната на шлюзе с этим справятся, или ответ будет уходить всё равно по default_router для веб-сервера (напомню, что он внутри)?


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено Oppofan , 23-Дек-05 14:01 
Про обещаный tcpdump - так и есть - есть приходящие пакеты на внешнем интерфейсе второго шлюза, они же уходят с внутреннего внутрь сети, и вот оно! ответные пакеты идут через первый шлюз... который по умолчанию....
Если для веб-сервера установить шлюзом по умолчанию второй шлюз, работает... А хочется работать через любой...

"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено Beginner , 23-Дек-05 14:29 
>Про обещаный tcpdump - так и есть - есть приходящие пакеты на
>внешнем интерфейсе второго шлюза, они же уходят с внутреннего внутрь сети,
>и вот оно! ответные пакеты идут через первый шлюз... который по
>умолчанию....
>Если для веб-сервера установить шлюзом по умолчанию второй шлюз, работает... А хочется
>работать через любой...

У меня похожая ситуация: есть 2 сети у 2 провайдеров, у обих одинаковые адреса в сетях 10.х.х.х

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

Сейчас так: на одной машине сервер, он смотрит на одного провайдера. Вторая машина смотрит на второго провайдера и соединена с первой по внутренней сети. Для второй машины в нейм сервере прописал адрес сайта как адрес первой машины во внутренней сети.

На второй пробывал поставить web сервер и чтоб он запросы перенаправлял на первый. Пробывал так:

Создал .htaccess такого содержания:

RewriteEngine on
Options +FollowSymlinks
RewriteRule (.*) http://adress_1_servera/$1 [P]

Все работало, за исключением одной штуки: когда в адресе появлялись адреса вида %DD%DA , то на сервре запрос приходил в виде что-то типа \xdd\xda (точно не помню). Побороть не мог.

Потом сделал так:

%cat /usr/local/etc/rc.d/ipf.sh
#!/bin/sh

if [ "x$1" = "x" -o "x$1" = "xstart" ]; then
        echo " ipfilter start "
        /sbin/kldload ipl
        /sbin/ipnat -F -C -f /etc/ipnat.rules
        /sbin/ipnat -l -v
elif [ "x$1" = "xstop" ]; then
        /sbin/kldunload ipl
fi

%cat /etc/ipnat.rules
# rl0 - external
# rl1 - internal

map rl1 from 0/0 to internal_ip_1_mashiny/32 -> internal_ip_2_mashiny/32
rdr rl0 external_ip_2_mashiny/32 port 80 -> internal_ip_1_mashiny port 80

Все работет, только проблема - запросы на сервер приходят уже от второй машины, поэтому определить реальный ip пользователя не могу :(

На всякий случай - у меня FreeBSD


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено fa , 23-Дек-05 15:14 
>Про обещаный tcpdump - так и есть - есть приходящие пакеты на
>внешнем интерфейсе второго шлюза, они же уходят с внутреннего внутрь сети,
>и вот оно! ответные пакеты идут через первый шлюз... который по
>умолчанию....
>Если для веб-сервера установить шлюзом по умолчанию второй шлюз, работает... А хочется
>работать через любой...


Странно, конечно. Попробую за Вас схему сети нарисовать :-)

1.1.1.1-шлюз1-192.168.0.254\
                             |свич|-192.168.0.1-webserver
2.2.2.2-шлюз2-192.168.0.253/

Так? При такой схеме пакеты полученные от 192.168.0.253 ну никак не должны уходить на 192.168.0.254. Скорей всего веб-сервер видит пакет, пришедший не от 192.168.0.253 а от машины в интернете.
Возможно Вам поможет програмка datapipe (есть в портах). Установите на втором шлюзе.


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено Oppofan , 23-Дек-05 15:53 
>Странно, конечно. Попробую за Вас схему сети нарисовать :-)
>
> 1.1.1.1-шлюз1-192.168.0.254\
>            
>          
>      |свич|-192.168.0.1-webserver
> 2.2.2.2-шлюз2-192.168.0.253/
>
>Так? При такой схеме пакеты полученные от 192.168.0.253 ну никак не должны
>уходить на 192.168.0.254. Скорей всего веб-сервер видит пакет, пришедший не от
>192.168.0.253 а от машины в интернете.
>Возможно Вам поможет програмка datapipe (есть в портах). Установите на втором шлюзе.
>

Опуская тонкости, именно так :-) вот только разве natd не должен, впуская пакет внутрь сети, подменять адрес отправителя своим? пока читаю ман, с моим знанием аглицкого и дневными пробежками по офису это сложно - жду вечера :-)
#/etc/natd.conf
same_ports yes
use_sockets yes
redirect_port tcp 192.168.0.1:80 80

#/etc/rc.conf
gateway_enable="YES"
router_enable="YES"
firewall_enable="YES"
natd_enable="yes"
natd_interface="xl0"
natd_flags="-f /etc/natd.conf"
firewall_script="/etc/firewall.cnf"

Вот примерно так...
Может надо что в natd.conf подправить? :-)


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено fa , 23-Дек-05 16:14 
>Опуская тонкости, именно так :-) вот только разве natd не должен, впуская
>пакет внутрь сети, подменять адрес отправителя своим?

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


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено YuryD , 23-Дек-05 16:19 
>>Странно, конечно. Попробую за Вас схему сети нарисовать :-)
>>
>> 1.1.1.1-шлюз1-192.168.0.254\
>>            
>>          
>>      |свич|-192.168.0.1-webserver
>> 2.2.2.2-шлюз2-192.168.0.253/
>>

  как идет обращение к серверу - по имени ? тогда DNS1 должен выдать 1.1.1.1
  а DNS 2-й сети должен выдать 2.2.2.2 , если же IP один и тот-же, то с маршрутизацией вам придется очень туго. Пакет идет на шлюз2 к IP 1.1.1.1
шлюз2 зная где 1.1.1.1 нормально его туда и завернет, как уж тут nat-у быть не знаю


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено Oppofan , 25-Дек-05 16:29 
Обращение идет по ip и они разные
Второй айпи вообще безымянный, вернее к моему домену не привязан - ADSL
зону держит провайдер на первом айпишнике
Видать не судьба...
А другой файрволл-нат, другая ось? неужто ни у кого нет похожей ситуации?

"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено fa , 26-Дек-05 12:45 
>Обращение идет по ip и они разные
>Второй айпи вообще безымянный, вернее к моему домену не привязан - ADSL
>
>зону держит провайдер на первом айпишнике
>Видать не судьба...
>А другой файрволл-нат, другая ось? неужто ни у кого нет похожей ситуации?
>

datapipe пробовали?


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено emercom , 26-Дек-05 16:08 
может быть так получиться:
сейчас, к примеру, вот так :
                   - шлюз1 (192.168.0.254) IP провайдера1
веб (192.168.0.1)-
                   - шлюз2 (192.168.0.253) IP провайдера2

добавляем 2-ю сетевую карту на веб сервер. и делаем, к примеру, вот так:

                   - шлюз1 (192.168.0.254) IP провайдера1
веб (192.168.0.1)-
    (192.168.1.1)-
                   - шлюз2 (192.168.1.254) IP провайдера2
ну и естесно для сети 192.168.0.0 - шлюз по умолчанию 192.168.0.254, а для сети 192.168.1.0 - шлюз по умолчанию 192.168.1.254
мне кажется все должно получиться ))


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено YuryD , 26-Дек-05 16:30 
> ну и естесно для сети 192.168.0.0 - шлюз по умолчанию 192.168.0.254,
>а для сети 192.168.1.0 - шлюз по умолчанию 192.168.1.254

Где бывают два шлюза по умолчанию ?


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено emercom , 26-Дек-05 16:46 
>> ну и естесно для сети 192.168.0.0 - шлюз по умолчанию 192.168.0.254,
>>а для сети 192.168.1.0 - шлюз по умолчанию 192.168.1.254
>
> Где бывают два шлюза по умолчанию ?
на каждом интефейсе будет свой шлюз


"два шлюза, ipfw, natd, вебсервер внутри"
Отправлено Oppofan , 27-Дек-05 10:10 
>на каждом интефейсе будет свой шлюз
Урррряяя!!! Заработало!!!!
Всё гениальное просто.... добавил вторую сетевуху и вуаля!
Спасибо, emercom!!!
Веб сервер, в силу некоторых скриптов работает под виндой... там на каждый интерфейс дать свой шлюз без проблем
Спасибо ещё раз!!!! Вы мне очень помогли :-)