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

Исходное сообщение
"один интерфейс - два входящих NAT"

Отправлено oklas , 28-Май-10 20:42 
FreeBSD 7.2, вертится под WMvare, как bridged, в железе думаю ситуация не изменится. Какие настройки приводить? не знаю что тут может иметь значение, настроена очень просто, чуть больше чем просто поставлена, NAT на ней не поставлено, одна сетевая карта, соответственно может слушать один интерфейс допустим с адресом 10.0.0.3.
Должен работать например веб сервер, таким простым образом чтобы отвечал на запросы пришедшие из разных каналов. А именно в той-же сети стоит два ADSL, с адресами 10.0.0.1 и 10.0.0.10, имеющие какие-то внешние ip например 77.7.7.1 и 77.7.7.10 на обоих ADSL включен проброс 80 порта на 10.0.0.3.
Если точнее то так:
10.0.0.1:80 -> 10.0.0.3:81
10.0.0.10:80 -> 10.0.0.3:90
веб сервер слушает 10.0.0.3:81 и 10.0.0.3:90
Проблема выглядит так что,
если на сервере 10.0.0.3 включен маршрут по умолчанию 10.0.0.1 то доступ есть только http://77.7.7.1/,
если на сервере 10.0.0.3 включен маршрут по умолчанию 10.0.0.10 то доступ есть только http://77.7.7.10/
аналогично прочие сервисы.
Вопрос, как обработать на одном интерфейсе - два входящих NAT проброса.
Можно поставить еще сетевуху, но хотелось бы обойтись одной, поскольку проблема чисто вычислительная.
Надо ВОЗВРАЩАТЬ TCP ответ по маршруту на тот гейт (10.0.0.1 или 10.0.0.10) от которого пришло обращение.
Это или роутинг специальный прописать или какой демон ставить, желательно минимально страндартными средствами. Подскажите какой именно ключ какой утили определяет маршрут по умолчанию, в зависимости от того откуда пришло NAT. Или если не в этом дело, то какие настройки привести.
PS: гуглил, звонил обоим провайдерам, решения нет.

Содержание

Сообщения в этом обсуждении
"один интерфейс - два входящих NAT"
Отправлено Аноним , 28-Май-10 21:05 
интересный случай.
сразу на ум приходит небольшое извращение: не пробрасывать порты натом, а проксировать (в этом месте меня пинает недовольный народ :)). я бы поставил 3proxy на маршрутизаторах и написал на каждом, что-то типа:

daemon
log /var/log/3proxy.log
tcppm -s -i10.0.0.1 80 10.0.0.3 80


"один интерфейс - два входящих NAT"
Отправлено PavelR , 28-Май-10 21:30 
>PS: гуглил, звонил обоим провайдерам, решения нет.

Ну раз решения нет, то что же вы тогда хотите :-)

>не поставлено, одна сетевая карта, соответственно может слушать один интерфейс допустим
>с адресом 10.0.0.3.

а в голову не приходит такой мысли, что адресов на карте может быть несколько?
Пробрасываете с разных модемов порты на разные IP, на freebsd разруливаете через, к примеру, ipfw fwd ответы с разных айпи отправлять на соответствующие шлюзы.


Тут краем глаза замечено следующее, цитирую:

>Если точнее то так:
>10.0.0.1:80 -> 10.0.0.3:81
>10.0.0.10:80 -> 10.0.0.3:90
>веб сервер слушает 10.0.0.3:81 и 10.0.0.3:90

Так вот, ipfw fwd можно задействовать не только по IP, но и по портам.


Гуглите на тему "фрибзд и два провайдера".


"один интерфейс - два входящих NAT"
Отправлено oklas , 29-Май-10 08:58 
провайдер1                провайдер2
     |                        |
---------------        ----------------
| 77.7.7.1:80 |        | 77.7.7.10:80 |
|     adsl    |        |     adsl     |
|   10.0.0.1  |        |  10.0.0.10   |
---------------        ----------------
       |                       |
       -----------LAN-----------
                   |
         --------------------
         | 10.0.0.3:(81,90) |
         |      server      |
         --------------------          

"один интерфейс - два входящих NAT"
Отправлено PavelR , 29-Май-10 11:11 

Картинка ясна. Еще вопросы ?



"один интерфейс - два входящих NAT"
Отправлено oklas , 08-Июн-10 10:58 
решение:
ipfw fwd 10.0.0.10 tcp from me 90 to any

(прописать в конфиг файрвола или выполнить)

и все. На удивление мало, деже rc.conf править не надо, после персборки ядра файрвол по умолчанию включен. defaultroute не меняем (10.0.0.1)

всем спасибо!
файрвол задействован:
> не только по IP, но и по портам.

PS:
есть еще второй способ с помощью openbsd'шного pf (package filter)
оба способа требуют пересборки ядра с включением в него по меньшей мере опции файрвола IPFIREWALL_FORWARDING, которая не работает если файрвол грузить как модуль.
второй IP не нужен, тк. чуть больше возьни


Ссылки:
ядро:
http://www.freebsd.org/doc/ru/books/handbook/kernelconfig.html
файрвол:
http://www.opennet.me/base/net/2_channel_balancing.txt.html
http://www.samag.ru/cgi-bin/go.pl?q=articles;n=12.2006;a=06