gif, pf и маршрутизация

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
maximos
рядовой
Сообщения: 20
Зарегистрирован: 2012-12-12 10:40:30

gif, pf и маршрутизация

Непрочитанное сообщение maximos » 2012-12-12 14:00:54

Всех приветствую.
Имеется тестовая исталляция следующего содержания:
схема.jpg
Задача: организовать vpn между сетями 192.168.10.0/24 и 192.168.20.0/24. Одна сторона имеет два канала наружу (в интернет). Промежуточный маршрутизатор из рассмотрения исключаем, он заменяет интернет. Для организации канала использовал gif. Альтернативные варианты буду рассматривать если не разберусь с проблемой.
Проблема: туннель работает только через канал с дефолт рутом, на "запасном" канале работает только если прописать маршрут. Мне нужна возможность работать на обоих каналах.
Теперь подробнее. Все машины FreeBSD 9.0-RELEASE-p3 #0.
Первый шлюз:

Код: Выделить всё

ae0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=82018<VLAN_MTU,VLAN_HWTAGGING,WOL_MAGIC,LINKSTATE>
        ether 00:1f:c6:3a:d0:25
        inet 192.168.1.2 netmask 0xfffffffc broadcast 192.168.1.3
        inet6 fe80::21f:c6ff:fe3a:d025%ae0 prefixlen 64 scopeid 0x1
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
        tunnel inet 192.168.1.2 --> 192.168.0.6
        inet 192.168.20.1 --> 192.168.10.1 netmask 0xffffff00
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        options=1<ACCEPT_REV_ETHIP_VER>

Код: Выделить всё

# netstat -nrf inet
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.1.1        UGS         0    35189    ae0
127.0.0.1          link#8             UH          0      312    lo0
192.168.1.0/30     link#1             U           0    25674    ae0
192.168.1.2        link#1             UHS         0        0    lo0
192.168.10.1       link#10            UH          0      225   gif0
192.168.20.0/24    link#9             U           0        0    ue0
192.168.20.1       link#9             UHS         1        0    lo0
Второй шлюз:

Код: Выделить всё

re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=389b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_UCAST,WOL_MCAST,WOL_MAGIC>
        ether 00:1f:c6:c9:1c:90
        inet6 fe80::21f:c6ff:fec9:1c90%re0 prefixlen 64 scopeid 0x1
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
vlan2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:1f:c6:c9:1c:90
        inet 192.168.0.2 netmask 0xfffffffc broadcast 192.168.0.3
        inet6 fe80::21f:c6ff:fec9:1c90%vlan2 prefixlen 64 scopeid 0x9
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 2 parent interface: re0
vlan3: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:1f:c6:c9:1c:90
        inet 192.168.0.6 netmask 0xfffffffc broadcast 192.168.0.7
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 3 parent interface: re0
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
        tunnel inet 192.168.0.6 --> 192.168.1.2
        inet 192.168.10.1 --> 192.168.20.1 netmask 0xffffff00
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        options=1<ACCEPT_REV_ETHIP_VER>

Код: Выделить всё

# netstat -nrf inet
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.0.1        UGS         0      236  vlan2
127.0.0.1          link#8             UH          0      312    lo0
192.168.0.0/30     link#9             U           0    30825  vlan2
192.168.0.2        link#9             UHS         0        0    lo0
192.168.0.4/30     link#10            U           0        4  vlan3
192.168.0.6        link#10            UHS         0        0    lo0
192.168.10.0/24    link#11            U           0        0    ue0
192.168.10.1       link#11            UHS         1        0    lo0
192.168.20.1       link#12            UH          0      183   gif0
Включен pf. pf.conf:

Код: Выделить всё

if_wan_pr="vlan2"
if_wan_se="vlan3"
gate_pr="192.168.0.1"
gate_se="192.168.0.5"


pass in on $if_wan_se reply-to ($if_wan_se $gate_se) \
        to $if_wan_se

pass out on $if_wan_pr route-to ($if_wan_se $gate_se) \
        from $if_wan_se
Пакеты на vlan3 приходят (и возвращаются ответы на исходящие соединения). Но потом где-то отбрасываются. Не могу понять где.
Если меняю default route или прописываю статический маршрут (route add 192.168.1.2 192.168.0.5), то туннель начинает работать.
Можно, конечно прописать статический маршрут, но если "резервный" канал отваливается, то через основной я смогу работать только после удаления этого самого маршрута. Не больно сложная задача, но ведь все должно работать с помощью pf без добавления стат. маршрута.
Последний раз редактировалось f_andrey 2012-12-12 14:46:45, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

maximos
рядовой
Сообщения: 20
Зарегистрирован: 2012-12-12 10:40:30

Re: gif, pf и маршрутизация

Непрочитанное сообщение maximos » 2012-12-13 8:24:27

Забыл описать поведение туннеля. Исправляюсь.

Пингую снаружи:

Код: Выделить всё

# ping -c3 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 data bytes

--- 192.168.10.1 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
На проблемном шлюзе:

Код: Выделить всё

# tcpdump -npi vlan3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan3, link-type EN10MB (Ethernet), capture size 65535 bytes
09:14:58.640359 ARP, Request who-has 192.168.0.6 tell 192.168.0.5, length 46
09:14:58.640380 ARP, Reply 192.168.0.6 is-at 00:1f:c6:c9:1c:90, length 28
09:14:58.640461 IP 192.168.1.2 > 192.168.0.6: IP 192.168.20.1 > 192.168.10.1: ICMP echo request, id 56065, seq 0, length 64 (ipip-proto-4)
09:14:59.641345 IP 192.168.1.2 > 192.168.0.6: IP 192.168.20.1 > 192.168.10.1: ICMP echo request, id 56065, seq 1, length 64 (ipip-proto-4)
09:15:00.642356 IP 192.168.1.2 > 192.168.0.6: IP 192.168.20.1 > 192.168.10.1: ICMP echo request, id 56065, seq 2, length 64 (ipip-proto-4)
На остальных интерфейсах (gif0, vlan2) тишина.

Пингую изнутри (с проблемного шлюза).

Код: Выделить всё

# ping -c3 192.168.20.1
PING 192.168.20.1 (192.168.20.1): 56 data bytes

--- 192.168.20.1 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss

Код: Выделить всё

# tcpdump -npi gif0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on gif0, link-type NULL (BSD loopback), capture size 65535 bytes
09:19:31.854187 IP 192.168.10.1 > 192.168.20.1: ICMP echo request, id 39178, seq 0, length 64
09:19:32.854444 IP 192.168.10.1 > 192.168.20.1: ICMP echo request, id 39178, seq 1, length 64
09:19:33.855442 IP 192.168.10.1 > 192.168.20.1: ICMP echo request, id 39178, seq 2, length 64

Код: Выделить всё

# tcpdump -npi vlan3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vlan3, link-type EN10MB (Ethernet), capture size 65535 bytes
09:19:31.854210 IP 192.168.0.6 > 192.168.1.2: IP 192.168.10.1 > 192.168.20.1: ICMP echo request, id 39178, seq 0, length 64 (ipip-proto-4)
09:19:31.854486 IP 192.168.1.2 > 192.168.0.6: IP 192.168.20.1 > 192.168.10.1: ICMP echo reply, id 39178, seq 0, length 64 (ipip-proto-4)
09:19:32.854457 IP 192.168.0.6 > 192.168.1.2: IP 192.168.10.1 > 192.168.20.1: ICMP echo request, id 39178, seq 1, length 64 (ipip-proto-4)
09:19:32.854746 IP 192.168.1.2 > 192.168.0.6: IP 192.168.20.1 > 192.168.10.1: ICMP echo reply, id 39178, seq 1, length 64 (ipip-proto-4)
09:19:33.855453 IP 192.168.0.6 > 192.168.1.2: IP 192.168.10.1 > 192.168.20.1: ICMP echo request, id 39178, seq 2, length 64 (ipip-proto-4)
09:19:33.855747 IP 192.168.1.2 > 192.168.0.6: IP 192.168.20.1 > 192.168.10.1: ICMP echo reply, id 39178, seq 2, length 64 (ipip-proto-4)
На vlan2 тишина.

maximos
рядовой
Сообщения: 20
Зарегистрирован: 2012-12-12 10:40:30

Re: gif, pf и маршрутизация

Непрочитанное сообщение maximos » 2012-12-17 9:43:18

up

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: gif, pf и маршрутизация

Непрочитанное сообщение skeletor » 2012-12-17 14:38:28

1) Используйте только in ... reply-to ... для обеих направлений (у меня так 2 канала инета работают)
2) Зачем этот изврат с gif'ом? Используйте openvpn. Он простой и даст больше, чем ожидаешь.

maximos
рядовой
Сообщения: 20
Зарегистрирован: 2012-12-12 10:40:30

Re: gif, pf и маршрутизация

Непрочитанное сообщение maximos » 2012-12-17 14:59:08

skeletor писал(а):1) Используйте только in ... reply-to ... для обеих направлений (у меня так 2 канала инета работают)
Я так и хочу сделать. Можно, конечно, шлюз по умолчанию убрать и полностью pf-ом маршрутизировать. Но это не сильно влияет на проблему...
skeletor писал(а):2) Зачем этот изврат с gif'ом? Используйте openvpn. Он простой и даст больше, чем ожидаешь.
Да, как запасной вариант я держу в голове openvpn. Но пока я альтернативные варианты не рассматриваю. Хочу попробовать разобраться с проблемой. Потому как всё, по идее, должно работать. Но либо я что-то где-то в упор не вижу, либо где-то есть баг.
Если уж не получится решить проблему, буду реализовывать другие варианты, благо их несколько.

Аватара пользователя
vintovkin
ВДВ
Сообщения: 1288
Зарегистрирован: 2007-05-11 9:39:11
Откуда: CSKA

Re: gif, pf и маршрутизация

Непрочитанное сообщение vintovkin » 2012-12-18 23:49:33

коллеги, если я не ошибаюсь, то вы хотите использовать оба канала, для этого они должны быть оба в тавлице маршрутизации в идеале с одинаковыми метриками, тогда будет load-balancing (однако я не уверен, может ли быть на фре 2 маршрута в дефолт 0.0.0.0\32 , на хостах типа винды это не возможно). так вот, можно поднять OSPF\RIP - демон quagga на всех железках.
Junos OS kernel based on FreeBSD UNIX.

RAGNAR
ст. прапорщик
Сообщения: 530
Зарегистрирован: 2009-07-10 22:12:06
Откуда: Ржев
Контактная информация:

Re: gif, pf и маршрутизация

Непрочитанное сообщение RAGNAR » 2012-12-23 0:35:50

как и говарил предыдущий товарищь . в руки вам Quagga :smile:
настрой хоть по 3 каналам и отбалансеруешь и при потере одного поможет.

правая часть рисунка подымаеться на ура за 15 мин
... Да освятится имя твое и pасшиpение твое, Господи...

maximos
рядовой
Сообщения: 20
Зарегистрирован: 2012-12-12 10:40:30

Re: gif, pf и маршрутизация

Непрочитанное сообщение maximos » 2013-01-16 19:50:42

gre-туннель в этих же условиях работает (без каких-либо манипуляций с пакетным фильтром и маршрутами).