Имеется тестовая исталляция следующего содержания: Задача: организовать 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 без добавления стат. маршрута.