Здравствуйте.
Прошу помощи.Нужна странная маршрутизация на FreeBSD.
Есть хост, у него - два внешних канала. Белые IP. Один канал - default router. По обоим каналам будут входящие соединения.Хочется следующего - чтобы входящее соединение продолжалось через тот интерфейс, через который пришёл первый пакет. Возможно ли это штатными средствами или с помощью каких либо дополнительных программ?
>Здравствуйте.
>Прошу помощи.
>
>Нужна странная маршрутизация на FreeBSD.
>Есть хост, у него - два внешних канала. Белые IP. Один канал
>- default router. По обоим каналам будут входящие соединения.
>
>Хочется следующего - чтобы входящее соединение продолжалось через тот интерфейс, через который
>пришёл первый пакет. Возможно ли это штатными средствами или с помощью
>каких либо дополнительных программ?миллион раз обсуждалось на форуме - учимся пользоваться поиском
гугле "фря + два канала"
аких либо дополнительных программ?
>
>миллион раз обсуждалось на форуме - учимся пользоваться поиском
>гугле "фря + два канала"Блин, чукча не читатель, да?
Повторяю красными буквами - МНЕ НЕ НУЖНА БАЛАНСИРОВКА. МНЕ НЕ НУЖЕН POLICY ROUTING.
Мне вообще не нужно ВЫХОДИТЬ ЧЕРЕЗ ОБА КАНАЛА (то есть соединения, инициированные МНОЙ, иду в default без вопросов). Мне нужен адекватный ответ на вопрос - про входящие соединения.По идее, нужно чтобы хост добавлялся в таблицу маршрутизации и всё.
если тебе ниочем не говорит "fwd" - лучше сюда больше не пиши
Очень просто с помощью 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
>Очень просто с помощью 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 не сложнее )
пример, пожалуйста
>Здравствуйте.
>Прошу помощи.
>
>Нужна странная маршрутизация на 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 айпишник куда второй роутер порты пробрасывает.
>у меня одна сетевая и два провайдера, на внутренний адрес роутеры пробрасывают
>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 км нет адекватных специалистов, с которыми можно пообщаться, и не такое забудешь :(
>[оверквотинг удален]
>>
>>где 192.168.5.1 адрес второго роутера который не default и 192.168.5.6 айпишник куда
>>второй роутер порты пробрасывает.
>
>О, а всего то...
>Спасибо Анониму, размышления над его примером вывели на нужный путь.
>
>P.S. Любителям орать "гугл в руки": ни один гугл не заменит живого
>общения. А когда в радиусе 200 км нет адекватных специалистов, с
>которыми можно пообщаться, и не такое забудешь :(На данном форуме вопрос в формулировке "скажите мне, я гуглить не люблю, я вообще хочу общаться" задается на _каждую_ частовстречающуюся задачу, вроде "я и два провайдера на одном рутере", задается несколько раз в неделю. Так что для общения со специалистами, пожалуйста, приходите с вопросами, на которые на этом форуме они еще не отвечали ну хотя бы недели две....
В целом это называется 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 - локалка с клиентамиЧтобы запросы клиентов на ваш сервер попадали на сервер, а не отсылались в интернет.
Такая схема работает с любым количеством внешних каналов, главное - прописать правила.
>В целом это называется policy based routing (PBR).Спасибо, уже понятно, что PBR вообще, и её представитель ipfw fwd в частности, тут единственный помощник. Как только я наконец то задал себе вопрос о втором шлюзе, всё прояснилось.
Дело было в том, что я как то подзабыл, что маршрутизация пакетов никак не зависит от наличия интерфейсов. А 99% примеров с PBR в качестве policy оперируют внутренними адресами, а не адресом интерфейса. Вот так вот переклинило.Всем спасибо. Даже ворчливым посылателям в поиск.