gif, pf и маршрутизация
Добавлено: 2012-12-12 14:00:54
Всех приветствую.
Имеется тестовая исталляция следующего содержания: Задача: организовать vpn между сетями 192.168.10.0/24 и 192.168.20.0/24. Одна сторона имеет два канала наружу (в интернет). Промежуточный маршрутизатор из рассмотрения исключаем, он заменяет интернет. Для организации канала использовал gif. Альтернативные варианты буду рассматривать если не разберусь с проблемой.
Проблема: туннель работает только через канал с дефолт рутом, на "запасном" канале работает только если прописать маршрут. Мне нужна возможность работать на обоих каналах.
Теперь подробнее. Все машины FreeBSD 9.0-RELEASE-p3 #0.
Первый шлюз:
Второй шлюз:
Включен pf. pf.conf:
Пакеты на vlan3 приходят (и возвращаются ответы на исходящие соединения). Но потом где-то отбрасываются. Не могу понять где.
Если меняю default route или прописываю статический маршрут (route add 192.168.1.2 192.168.0.5), то туннель начинает работать.
Можно, конечно прописать статический маршрут, но если "резервный" канал отваливается, то через основной я смогу работать только после удаления этого самого маршрута. Не больно сложная задача, но ведь все должно работать с помощью pf без добавления стат. маршрута.
Имеется тестовая исталляция следующего содержания: Задача: организовать 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
Код: Выделить всё
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
Если меняю default route или прописываю статический маршрут (route add 192.168.1.2 192.168.0.5), то туннель начинает работать.
Можно, конечно прописать статический маршрут, но если "резервный" канал отваливается, то через основной я смогу работать только после удаления этого самого маршрута. Не больно сложная задача, но ведь все должно работать с помощью pf без добавления стат. маршрута.