URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 13442
[ Назад ]

Исходное сообщение
"2-е FreeBSD6.2 и 2-а GRE туннеля между ними"

Отправлено cj_nik , 27-Апр-07 23:29 
Имеем стенд из 2-х FreeBSD 6.2, условно router-office и router-sklad1
В каждой по 3-и сетевухи. По два канала внешних и один в локалку
Цель сделать между ними балансировку и отказоустойчивость сетевого трафика...

Проблема:
Пока эти роуторы соединены напрямую эзернет кабелями всё вроде нормально. И видно по обоим Ипишникам и GRE-туннели строятся и средствами quagg-и маршруты меняются...
Для одного из каналов делаем промежуточный роутер с двумя сетевухами, одна на router-office вторая на router-sklad.
И тут поджидает засада. пинг между роуторами идёт а gre-туннель не строится...
Отключил уже первый канал с которым как бы всё нормально и который представляет из себя прямой эзернет кабель между роуторами. отключил quagga строю только GRE.
Конфиги:
router-office
cat /etc/rc.conf

defaultrouter="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 0xfffffffc

netstat -rn
Routing tables

Internet:
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 tables

Internet:
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 tables

Internet:
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

...
Не пойму почему?
пока напрямую, всё работает, а как через дополнительный роутер никак... скоро посетит "беляк" :(
Помогите кто чем может, натолкните на путь истинный!


Содержание

Сообщения в этом обсуждении
"2-е FreeBSD6.2 и 2-а GRE туннеля между ними"
Отправлено cj_nik , 29-Апр-07 18:14 
Ребята, ну кто нить хоть скажите в какую сторону копать?

"2-е FreeBSD6.2 и 2-а GRE туннеля между ними"
Отправлено cj_nik , 29-Апр-07 19:48 
>Ребята, ну кто нить хоть скажите в какую сторону копать?


причём GIF туннель строится и работает нормально
что же за ограничения такие на gre туннели!?


"2-е FreeBSD6.2 и 2-а GRE туннеля между ними"
Отправлено andreyka459 , 30-Апр-07 12:08 
>>Ребята, ну кто нить хоть скажите в какую сторону копать?
>
>
>причём GIF туннель строится и работает нормально
>что же за ограничения такие на gre туннели!?

а файрвол включен? может gre не разрешены на промежуточном роутере?


"2-е FreeBSD6.2 и 2-а GRE туннеля между ними"
Отправлено Nikky , 02-Май-07 00:00 
>
>а файрвол включен? может gre не разрешены на промежуточном роутере?


Там его вообще ещё нет. в смысле не пересобирал ядро вообще.


"2-е FreeBSD6.2 и 2-а GRE туннеля между ними"
Отправлено Dimkus , 02-Май-07 10:57 
>Ребята, ну кто нить хоть скажите в какую сторону копать?


Я думаю это поможет. у меня заработало!

- 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"


"2-е FreeBSD6.2 и 2-а GRE туннеля между ними"
Отправлено cj_nik , 02-Май-07 14:03 
Вот эт блин даа...
похоже так получится...
в ручную добавляю тунель, как в мане 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.214

2-й роутер
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!


"2-е FreeBSD6.2 и 2-а GRE туннеля между ними"
Отправлено cj_nik , 02-Май-07 21:23 
Действительно работает...
просто создал скрипт в /usr/local/etc/rc.conf/
и усё работает! Ура