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

Исходное сообщение
"FreBSD и необычная работа с двумя внешними каналами"

Отправлено Алексей , 08-Фев-10 08:39 
Здравствуйте.
Прошу помощи.

Нужна странная маршрутизация на FreeBSD.
Есть хост, у него - два внешних канала. Белые IP. Один канал - default router. По обоим каналам будут входящие соединения.

Хочется следующего - чтобы входящее соединение продолжалось через тот интерфейс, через который пришёл первый пакет. Возможно ли это штатными средствами или с помощью каких либо дополнительных программ?


Содержание

Сообщения в этом обсуждении
"FreBSD и необычная работа с двумя внешними каналами"
Отправлено Pahanivo , 08-Фев-10 08:42 
>Здравствуйте.
>Прошу помощи.
>
>Нужна странная маршрутизация на FreeBSD.
>Есть хост, у него - два внешних канала. Белые IP. Один канал
>- default router. По обоим каналам будут входящие соединения.
>
>Хочется следующего - чтобы входящее соединение продолжалось через тот интерфейс, через который
>пришёл первый пакет. Возможно ли это штатными средствами или с помощью
>каких либо дополнительных программ?

миллион раз обсуждалось на форуме - учимся пользоваться поиском
гугле "фря + два канала"


"FreBSD и необычная работа с двумя внешними каналами"
Отправлено Алексей , 08-Фев-10 08:57 
аких либо дополнительных программ?
>
>миллион раз обсуждалось на форуме - учимся пользоваться поиском
>гугле "фря + два канала"

Блин, чукча не читатель, да?
Повторяю красными буквами - МНЕ НЕ НУЖНА БАЛАНСИРОВКА. МНЕ НЕ НУЖЕН POLICY ROUTING.
Мне вообще не нужно ВЫХОДИТЬ ЧЕРЕЗ ОБА КАНАЛА (то есть соединения, инициированные МНОЙ, иду в default без вопросов). Мне нужен адекватный ответ на вопрос - про входящие соединения.

По идее, нужно чтобы хост добавлялся в таблицу маршрутизации и всё.


"FreBSD и необычная работа с двумя внешними каналами"
Отправлено Pahanivo , 08-Фев-10 10:40 
если тебе ниочем не говорит "fwd" - лучше сюда больше не пиши


"FreBSD и необычная работа с двумя внешними каналами"
Отправлено shurik , 08-Фев-10 12:20 
Очень просто с помощью pf reply-to:
pass in quick on $ext_if1 reply-to ($ext_if1 $ext_gw1) proto icmp from any to $ext_if1
pass in quick on $ext_if2 reply-to ($ext_if2 $ext_gw2) proto icmp from any to $ext_if2

"FreBSD и необычная работа с двумя внешними каналами"
Отправлено Pahanivo , 08-Фев-10 12:36 
>Очень просто с помощью pf reply-to:
>pass in quick on $ext_if1 reply-to ($ext_if1 $ext_gw1) proto icmp from any
>to $ext_if1
>pass in quick on $ext_if2 reply-to ($ext_if2 $ext_gw2) proto icmp from any
>to $ext_if2

с fwd ipfw не сложнее )


"FreBSD и необычная работа с двумя внешними каналами"
Отправлено rr , 08-Фев-10 12:38 
пример, пожалуйста

"FreBSD и необычная работа с двумя внешними каналами"
Отправлено Аноним , 08-Фев-10 14:30 
>Здравствуйте.
>Прошу помощи.
>
>Нужна странная маршрутизация на FreeBSD.
>Есть хост, у него - два внешних канала. Белые IP. Один канал
>- default router. По обоим каналам будут входящие соединения.
>
>Хочется следующего - чтобы входящее соединение продолжалось через тот интерфейс, через который
>пришёл первый пакет. Возможно ли это штатными средствами или с помощью
>каких либо дополнительных программ?

у меня одна сетевая и два провайдера, на внутренний адрес роутеры пробрасывают NATом порты. один роутер установлен прописан defaultrouter'ом, если со второго роутера приходили пакеты, исходящие пакеты уходили на defaultrouter ессно. Повесил на интерфейс алиас со вторым айпишником в сети

# ifconfig -a
nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=10b<RXCSUM,TXCSUM,VLAN_MTU,TSO4>
        ether 00:26:18:b1:7c:fa
        inet 192.168.5.5 netmask 0xffffff00 broadcast 192.168.5.255
        inet 192.168.5.6 netmask 0xffffffff broadcast 192.168.5.6
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000


и в ipfw одно правило добавил
${fwcmd} add 10 fwd 192.168.5.1 ip from 192.168.5.6 to any

где 192.168.5.1 адрес второго роутера который не default и 192.168.5.6 айпишник куда второй роутер порты пробрасывает.


"FreBSD и необычная работа с двумя внешними каналами"
Отправлено Алексей , 08-Фев-10 17:44 
>у меня одна сетевая и два провайдера, на внутренний адрес роутеры пробрасывают
>NATом порты. один роутер установлен прописан defaultrouter'ом, если со второго роутера
>приходили пакеты, исходящие пакеты уходили на defaultrouter ессно. Повесил на интерфейс
>алиас со вторым айпишником в сети

....
>и в ipfw одно правило добавил
>${fwcmd} add 10 fwd 192.168.5.1 ip from 192.168.5.6 to any
>
>где 192.168.5.1 адрес второго роутера который не default и 192.168.5.6 айпишник куда
>второй роутер порты пробрасывает.

О, а всего то...
Спасибо Анониму, размышления над его примером вывели на нужный путь.

P.S. Любителям орать "гугл в руки": ни один гугл не заменит живого общения. А когда в радиусе 200 км нет адекватных специалистов, с которыми можно пообщаться, и не такое забудешь :(


"FreBSD и необычная работа с двумя внешними каналами"
Отправлено PavelR , 08-Фев-10 19:05 
>[оверквотинг удален]
>>
>>где 192.168.5.1 адрес второго роутера который не default и 192.168.5.6 айпишник куда
>>второй роутер порты пробрасывает.
>
>О, а всего то...
>Спасибо Анониму, размышления над его примером вывели на нужный путь.
>
>P.S. Любителям орать "гугл в руки": ни один гугл не заменит живого
>общения. А когда в радиусе 200 км нет адекватных специалистов, с
>которыми можно пообщаться, и не такое забудешь :(

На данном форуме вопрос в формулировке "скажите мне, я гуглить не люблю, я вообще хочу общаться" задается на _каждую_ частовстречающуюся задачу, вроде "я и два провайдера на одном рутере", задается несколько раз в неделю. Так что для общения со специалистами, пожалуйста, приходите с вопросами, на которые на этом форуме они еще не отвечали ну хотя бы недели две....


"FreBSD и необычная работа с двумя внешними каналами"
Отправлено XoRe , 09-Фев-10 14:08 
В целом это называется policy based routing (PBR).
Предвидя ваше "мне не нужен роутинг по умолчанию!", сразу скажу, что роутинг - это маршрутизация не только первых пакетов (инциирующих соединение), но и ответных.

На ipfw делается строчками:
ipfw add fwd 1.1.1.1 ip from 1.1.1.2 to any out
ipfw add fwd 2.2.2.1 ip from 2.2.2.2 to any out

Где
1.1.1.1 - один пров
1.1.1.2 - ваш внешний ип у него
2.2.2.1 - другой пров
2.2.2.2 - ваш внешний ип у него

Кроме того, если сей компьютер является шлюзом в интернет, то лучше перед этими правилами добавить правило вида:
ipfw add allow ip from { 1.1.1.2/32 or 2.2.2.2/32 } to 192.168.0.0/24 out

Где
192.168.0.0/24 - локалка с клиентами

Чтобы запросы клиентов на ваш сервер попадали на сервер, а не отсылались в интернет.

Такая схема работает с любым количеством внешних каналов, главное - прописать правила.


"FreBSD и необычная работа с двумя внешними каналами"
Отправлено Алексей , 09-Фев-10 21:45 
>В целом это называется policy based routing (PBR).

Спасибо, уже понятно, что PBR вообще, и её представитель ipfw fwd в частности, тут единственный помощник. Как только я наконец то задал себе вопрос о втором шлюзе, всё прояснилось.
Дело было в том, что я как то подзабыл, что маршрутизация пакетов никак не зависит от наличия интерфейсов. А 99% примеров с PBR в качестве policy оперируют внутренними адресами, а не адресом интерфейса. Вот так вот переклинило.

Всем спасибо. Даже ворчливым посылателям в поиск.