Имеем стенд из 2-х FreeBSD 6.2, условно router-office и router-sklad1
В каждой по 3-и сетевухи. По два канала внешних и один в локалку
Цель сделать между ними балансировку и отказоустойчивость сетевого трафика...Проблема:
Пока эти роуторы соединены напрямую эзернет кабелями всё вроде нормально. И видно по обоим Ипишникам и GRE-туннели строятся и средствами quagg-и маршруты меняются...
Для одного из каналов делаем промежуточный роутер с двумя сетевухами, одна на router-office вторая на router-sklad.
И тут поджидает засада. пинг между роуторами идёт а gre-туннель не строится...
Отключил уже первый канал с которым как бы всё нормально и который представляет из себя прямой эзернет кабель между роуторами. отключил quagga строю только GRE.
Конфиги:
router-office
cat /etc/rc.confdefaultrouter="82.116.44.189"
gateway_enable="YES"
hostname="router-office.serabbat"
################### Phisical ###################
### local-office Net ##
ifconfig_sk0="inet 192.168.2.11/24"
### SAN vpn net ##
ifconfig_xl0="inet 10.1.1.1/30"
### RENET net ##
ifconfig_xl1="inet 82.116.44.190/30"
##################################################
################### GRE tunnel level 1 ###########
cloned_interfaces="gre11 gre12"#ifconfig_gre11="inet 10.10.0.1/30 10.10.0.2 tunnel 10.1.1.1 10.1.1.2 link1 up"
ifconfig_gre12="inet 10.10.0.1/30 10.10.0.2 tunnel 82.116.44.190 82.116.36.214 link1 up"получаем
ifconfig -a
sk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet 192.168.2.11 netmask 0xffffff00 broadcast 192.168.2.255
ether 00:0e:a6:4b:31:de
media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>)
status: active
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 10.1.1.1 netmask 0xfffffffc broadcast 10.1.1.3
ether 00:60:08:65:2c:46
media: Ethernet autoselect (none)
status: no carrier
xl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 82.116.44.190 netmask 0xfffffffc broadcast 82.116.44.191
ether 00:60:08:10:0c:8e
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
gre11: flags=9010<POINTOPOINT,LINK0,MULTICAST> mtu 1476
gre12: flags=b011<UP,POINTOPOINT,LINK0,LINK1,MULTICAST> mtu 1476
tunnel inet 82.116.44.190 --> 82.116.36.214
inet 10.10.0.1 --> 10.10.0.2 netmask 0xfffffffcnetstat -rn
Routing tablesInternet:
Destination Gateway Flags Refs Use Netif Expire
default 82.116.44.189 UGS 0 230 xl1
10.1.1/30 link#2 UC 0 0 xl0
10.10.0.2 10.10.0.1 UH 0 31 gre12
82.116.44.188/30 link#3 UC 0 0 xl1
82.116.44.189 00:02:44:28:68:5a UHLW 2 106 xl1 574
127.0.0.1 127.0.0.1 UH 0 0 lo0
192.168.2 link#1 UC 0 0 sk0
192.168.2.10 00:14:78:02:21:d5 UHLW 1 31 sk0 1102
192.168.2.52 00:0e:a6:4b:32:7a UHLW 1 817 sk0 1189...
router-sklad1
cat /etc/rc.conf
defaultrouter="82.116.36.213"
gateway_enable="YES"
hostname="router-sklad1.serabbat"
################### Phisical ###################
### local-sklad1 Net ###
ifconfig_bfe0="inet 192.168.5.1/24"### SAN vpn net ##
ifconfig_rl0="inet 10.1.1.2/30"
### RENET net ##
ifconfig_rl1="inet 82.116.36.214/30"##################################################
################### GRE tunnel level 1 ###########
cloned_interfaces="gre11 gre12"#ifconfig_gre11="inet 10.10.0.2/30 10.10.0.1 tunnel 10.1.1.2 10.1.1.1 link1 up"
ifconfig_gre12="inet 10.11.0.2/30 10.11.0.1 tunnel 82.116.36.214 82.116.44.190 link1 up"...
получаем
ifconfig -a
bfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 192.168.5.1 netmask 0xffffff00 broadcast 192.168.5.255
ether 00:0c:6e:72:59:e8
media: Ethernet autoselect (none)
status: no carrier
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 10.1.1.2 netmask 0xfffffffc broadcast 10.1.1.3
ether 00:c0:df:10:f4:70
media: Ethernet autoselect (none)
status: no carrier
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 82.116.36.214 netmask 0xfffffffc broadcast 82.116.36.215
ether 00:e0:4c:5a:d6:11
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
gre11: flags=9010<POINTOPOINT,LINK0,MULTICAST> mtu 1476
gre12: flags=b011<UP,POINTOPOINT,LINK0,LINK1,MULTICAST> mtu 1476
tunnel inet 82.116.36.214 --> 82.116.44.190
inet 10.10.0.2 --> 10.10.0.1 netmask 0xfffffffc
netstat -rn
Routing tablesInternet:
Destination Gateway Flags Refs Use Netif Expire
default 82.116.36.213 UGS 0 235 rl1
10.1.1/30 link#2 UC 0 0 rl0
10.10.0.1 10.10.0.2 UH 0 57 gre12
82.116.36.212/30 link#3 UC 0 0 rl1
82.116.36.213 00:e0:4c:d9:00:b0 UHLW 2 0 rl1 519
127.0.0.1 127.0.0.1 UH 0 0 lo0
192.168.5 link#1 UC 0 0 bfe0...
Промежуточный роутер:
cat /etc/rc.conf
gateway_enable="YES"
hostname="router-renet.serabbat"
ifconfig_rl0="inet 82.116.44.189 netmask 255.255.255.252"
ifconfig_rl1="inet 82.116.36.213 netmask 255.255.255.252"
router_enable="YES"получаем
ifconfig -a
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 82.116.44.189 netmask 0xfffffffc broadcast 82.116.44.191
ether 00:02:44:28:68:5a
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
rl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=8<VLAN_MTU>
inet 82.116.36.213 netmask 0xfffffffc broadcast 82.116.36.215
ether 00:e0:4c:d9:00:b0
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
netstat -rn
Routing tablesInternet:
Destination Gateway Flags Refs Use Netif Expire
82.116.36.212/30 link#2 UC 0 0 rl1
82.116.36.214 00:e0:4c:5a:d6:11 UHLW 1 338 rl1 401
82.116.44.188/30 link#1 UC 0 0 rl0
82.116.44.190 00:60:08:10:0c:8e UHLW 1 377 rl0 401
127.0.0.1 127.0.0.1 UH 0 52 lo0...
Тестируем:Пингуем с router-office -> router-sklad1
ping 82.116.36.214
PING 82.116.36.214 (82.116.36.214): 56 data bytes
64 bytes from 82.116.36.214: icmp_seq=0 ttl=63 time=0.621 ms
64 bytes from 82.116.36.214: icmp_seq=1 ttl=63 time=0.465 msПингуем с router-sklad1 -> router-office
ping 82.116.44.190
PING 82.116.44.190 (82.116.44.190): 56 data bytes
64 bytes from 82.116.44.190: icmp_seq=0 ttl=63 time=0.385 ms
64 bytes from 82.116.44.190: icmp_seq=1 ttl=63 time=0.556 ms...
Пробуем пинговать через ГРЕ с router-office -> router-sklad1
ping 10.10.0.2
PING 10.10.0.2 (10.10.0.2): 56 data bytes
ping: sendto: Network is down
ping: sendto: Network is downПробуем пинговать через ГРЕ с router-sklad1 -> router-office
ping 10.10.0.1
PING 10.10.0.1 (10.10.0.1): 56 data bytes
ping: sendto: Network is down
ping: sendto: Network is down...
Не пойму почему?
пока напрямую, всё работает, а как через дополнительный роутер никак... скоро посетит "беляк" :(
Помогите кто чем может, натолкните на путь истинный!
Ребята, ну кто нить хоть скажите в какую сторону копать?
>Ребята, ну кто нить хоть скажите в какую сторону копать?
причём GIF туннель строится и работает нормально
что же за ограничения такие на gre туннели!?
>>Ребята, ну кто нить хоть скажите в какую сторону копать?
>
>
>причём GIF туннель строится и работает нормально
>что же за ограничения такие на gre туннели!?а файрвол включен? может gre не разрешены на промежуточном роутере?
>
>а файрвол включен? может gre не разрешены на промежуточном роутере?
Там его вообще ещё нет. в смысле не пересобирал ядро вообще.
>Ребята, ну кто нить хоть скажите в какую сторону копать?
Я думаю это поможет. у меня заработало!- when configured via ifconfig_gre0="" with all appropriate parameters the interface does appear with 'LINK1' flag, but requires an additional 'ifconfig gre link1' command for the tunnel to start working;
- when configured via 'start_if.gre0' script with all additional parameters, for example
===Cut===
#!/bin/sh/sbin/ifconfig gre0 192.168.1.1 192.168.1.2 netmask 255.255.255.255 10.10.10.1 10.10.10.5 mtu 1480
# even when sleep 10
sleep 10
/sbin/ifconfig gre0 link1
===Cut==the system still requires 'ifconfig gre0 link1' for the tunnel to start working;
>How-To-Repeat:
Create a gre tunnel with link1 set in configuration files; in rc.conf or even in start_if.gre0.
Reboot the machine.
Try to ping remote.
>Fix:
echo gre_enable="YES" >> /etc/rc.conf
echo gre_flags="greX link1" >> /etc/rc.conf(according to your configuration)
and place the following script to /usr/local/etc/rc.d/:
#!/bin/sh
##
# gre startup script by drookie, 14/04/2007 12:38
# to avoid link1 bug when it is configured in earlier scripts :/
#
# PROVIDE: gre
# REQUIRE: LOGIN NETWORKING
#
#name=gre
command=/sbin/ifconfig
gre_enable=${gre_enable:-"NO"}. /etc/rc.subr
rcvar=`set_rcvar`
load_rc_config ${name}run_rc_command "$1"
Вот эт блин даа...
похоже так получится...
в ручную добавляю тунель, как в мане man gre:
1-й роутер
ifconfig gre12 create
ifconfig gre12 10.11.0.1/32 10.11.0.2 link1 up
ifconfig gre12 tunnel 82.116.44.190 82.116.36.2142-й роутер
ifconfig gre12 create
ifconfig gre12 10.11.0.2/32 10.11.0.1 link1 up
ifconfig gre12 tunnel 82.116.36.214 82.116.44.190и всё работает... :(
вет ведь бывает
Спасибо те большое Dimkus!
Действительно работает...
просто создал скрипт в /usr/local/etc/rc.conf/
и усё работает! Ура