Автор Тема: Настройка на 3 мрежови интерфейса  (Прочетена 1833 пъти)

eden159

  • Напреднали
  • *****
  • Публикации: 27
    • Профил
Здравейте,

Създал съм следната мрежа:

Имам 3 интерфейса. eth1 - първия ми ISP1, eth2 - втория ми ISP2 и eth3 - локална мрежа. Целта ми е при да използвам ISP1, а когато той падне автоматично сървъра да ми използва ISP2. Следвах инструкциите от този линк: http://www.linux.com/archive/feature/113988 . Рутира си през ISP1, но когато извадя кабела на eth1 имам пинг до мрежата на ISP2, но линукса ми не рутира през нея. Някакви идеи, насоки, линкове...?
Активен

vlad_ko

  • Напреднали
  • *****
  • Публикации: 23
  • Distribution: Slackware 11
  • Window Manager: xfce
    • Профил
Re: Настройка на 3 мрежови интерфейса
« Отговор #1 -: Aug 18, 2011, 19:24 »
Аз съм го реализирал малко дървено, но работи :)
В кронтаба съм сложил баш скрипт, който следи за пинг до gateway-a на основния доставчик, и ако той прекъсне добавя като default gw този на другия доставчик и т.н.
Съответно с полиси рутинг правиш така, че въпросните gateway-и да могат да се пингват през съответният им интерфеис (понеже често са реални ип-та). Това като идея. Утре мога да ти пейстна скриптовете.
Активен

bgip.rezko.net

vlad_ko

  • Напреднали
  • *****
  • Публикации: 23
  • Distribution: Slackware 11
  • Window Manager: xfce
    • Профил
Re: Настройка на 3 мрежови интерфейса
« Отговор #2 -: Aug 19, 2011, 14:57 »
Този скрипт се пуска при стартиране на машината и на 15 секунди проверява свързаността

Код
GeSHi (Bash):
  1. #!/bin/bash
  2. #status 1 -> ISP1
  3. #status 2 -> ISP2
  4. #GW_VIA_ISP1 = 195.138.149.25
  5. #GW_VIA_ISP1 = 212.50.27.229
  6.  
  7. status=1
  8. while [ 1 ]
  9. do
  10. if [ "$status" = "1" ]
  11.        then
  12.                #echo "route ISP1"
  13.                ping -c 4 195.138.149.25>/dev/null
  14.                if [ "$?" -ne "0" ]
  15.                then
  16.                        route del default gw 195.138.149.25
  17.                        route add default gw
  18.                        status=2
  19.                        (date ;echo "route via spnet")>>/var/log/dgd.log
  20.                fi
  21.        else
  22.                #echo "route ISP2"
  23.                ping -c 4 195.138.149.25>/dev/null
  24.                if [ "$?" = "0" ]
  25.                then
  26.                        route del default gw 212.50.27.229
  27.                        route add default gw 195.138.149.25
  28.                        status=1
  29.                        (date;echo "route back to tpn") >>/var/log/dgd.log
  30.                fi
  31. fi
  32. sleep 15
  33. done

В случай че отпадне връзката до ISP1 превключва през ISP2 и започва да дебне дали не се е оправила връзката до ISP1 (понеже ип-то което пингва за да провери е реално и връзка до него може да им и през другият доставчик се прави тази схема)

Код
GeSHi (Bash):
  1. #!/bin/bash
  2. P1_NET=195.138.149.24/29
  3. P2_NET=212.50.27.228/30
  4. IF1=eth1.234
  5. IF2=eth1.423
  6. P1=195.138.149.25
  7. P2=212.50.27.229
  8. IP1=195.138.149.26
  9. IP2=212.50.27.230
  10. P0_NET=192.168.1.0/24
  11. P10_NET=192.168.10.0/24
  12. IF0=eth2
  13. IF10=eth0
  14.          ip route add $P1_NET dev $IF1 src $IP1 table T1
  15.          ip route add default via $P1 table T1
  16.          ip route add $P2_NET dev $IF2 src $IP2 table T2
  17.          ip route add default via $P2 table T2
  18.            ip route add $P1_NET dev $IF1 src $IP1
  19.            ip route add $P2_NET dev $IF2 src $IP2
  20.            ip rule add from $IP1 table T1
  21.            ip rule add from $IP2 table T2
  22. ip route add $P10_NET     dev $IF10 table T1
  23. ip route add $P0_NET     dev $IF0 table T1
  24. ip route add $P2_NET     dev $IF2 table T1
  25. ip route add 127.0.0.0/8 dev lo   table T1
  26. ip route add $P10_NET     dev $IF10 table T2
  27. ip route add $P0_NET     dev $IF0 table T1
  28. ip route add $P1_NET     dev $IF1 table T2
  29. ip route add 127.0.0.0/8 dev lo   table T2
  30.  
« Последна редакция: Aug 19, 2011, 15:47 от VladSun »
Активен

bgip.rezko.net

eden159

  • Напреднали
  • *****
  • Публикации: 27
    • Профил
Re: Настройка на 3 мрежови интерфейса
« Отговор #3 -: Aug 19, 2011, 22:06 »
Благодаря ти за отговора и скриптовете!
Активен

Astor

  • Напреднали
  • *****
  • Публикации: 332
    • Профил
Re: Настройка на 3 мрежови интерфейса
« Отговор #4 -: Aug 20, 2011, 11:37 »
Здравейте,

аз си мисля за вариант с два маршрута с различни/еднакви метрики? Ако са с различни метрики винаги ще минава през единият маршрут, няма как да се разбере дали е наличен другия без маршрутизиращ протокол...този вариант май отпада.
А ако са с еднакви метрики в една и съща routing table? Тогава няма ли да се очаква да минава един пакет през единия gw а друг през другия? При отпадането на единия gw половината пакети ще се загубят???

Сега забелязвам, че дори и при изваден кабел интерфейсът в linux стои UP, и съответния маршрут в routing table също си соти, което не е добре. Този "проблем" евентуално има ли решение? При отпадане на връзката (прекъснат кабел напр.) интерфейсът да отива down?
Активен

Няма начин, да няма начин!