2014-12-18 Internet свързаността на initlab

by Vasil Kolev

(алтернативното заглавие беше “мизерии, които правим като нямаме BGP”)

След доста мъки с onlinedirect в initlab си пуснахме втора връзка, през TBC.bg. За да можем да ползваме и двете, се наложи малко бърникане по setup-а и забавни неща, които съм описал по-долу, разделени на v4 и v6.

Преди всичко може да погледнете схемата на мрежата.

За IPv4 имаше два проблема: трафикът, влизащ от един доставчик трябва да излиза пак през него (нормален policy routing), и трябва по някакъв начин да се избира през кой интерфейс да се излиза (чрез gwping).

Policy routing-а е стандартен, описан е на хиляда места и за това без много подробности, идеята е че се прави routing таблица за всеки доставчик, в нея се вкарват пътя до самия доставчик, default през него и пътищата към локалните вътрешни мрежи, след което се слагат правила, че ip адреса от тоя доставчик изходящия трафик ползва определената таблица. Или, погледнато на cassie:

vasil@cassie:~$ cat /etc/iproute2/rt_tables|grep -v #
255     local
254     main
253     default
0       unspec

2       od
3       tbc

vasil@cassie:~$ ip r show table od
default via 93.152.128.1 dev eth0.5
93.152.128.0/17 dev eth0.5  scope link
172.31.190.0/24 dev eth0.2  scope link

vasil@cassie:~$ ip r show table tbc
default via 94.26.100.129 dev eth0.6
94.26.100.128/27 dev eth0.6  scope link
172.31.190.0/24 dev eth0.2  scope link

vasil@cassie:~$ ip rule
0:      from all lookup local
32764:  from 94.26.100.155 iif lo lookup tbc
32765:  from 93.152.143.66 iif lo lookup od
32766:  from all lookup main
32767:  from all lookup default

За изходящия трафик проблемът се решава чрез gwping (който намерих от тук и ми спести час-два писане на нещо такова). Това е прост скрипт, който ping-ва през двете връзки нещо определено (например google) и ако през едната го няма, я маха от routing-а, а иначе държи два default route-а с различна тежест, т.е.

vasil@cassie:~$ ip r
default
        nexthop via 93.152.128.1  dev eth0.5 weight 1
        nexthop via 94.26.100.129  dev eth0.6 weight 2
...

(докато чертаех схемата, едната връзка падна за малко и като гледам никой не го е усетил)

За IPv6 нещата се оказаха малко по-сложни (но по-изчистени), понеже свързаността ни идва от един тунел до моя машина в telepoint (бяхме на HE.net, ама ни омръзна да ни се отваря немския google). От там имаме една наша /64, която се появява във вътрешната мрежа на лаба. За да мога да прекарам тунела да работи и през двете връзки, просто пуснах два отделни тунела от cassie до tyler през двата доставчика, след което в/у тях пуснах с quagga OSPFv3. В него от страната на cassie announce-вам префикса на локалната мрежа, от другата страна – default route. В общи линии в конфигурацията имам следните неща:

cassie (тук вътрешния ми интерфейс е eth0.2):

interface vk-ipv6-od
 ipv6 ospf6 priority 0
!
interface vk-ipv6-tbc
 ipv6 ospf6 priority 0
!
router ospf6
 router-id 255.1.1.1
 redistribute connected route-map internal
 interface vk-ipv6-od area 0.0.0.0
 interface vk-ipv6-tbc area 0.0.0.0
!
route-map internal permit 10
 match interface eth0.2
!
route-map internal deny 20

tyler (тук външния ми интерфейс за IPv6 е eth1, а правя redistribute kernel, понеже default route се вижда като такъв):

interface lab-ipv6-od
 ipv6 ospf6 priority 0
!
interface lab-ipv6-tbc
 ipv6 ospf6 priority 0
!
router ospf6
 router-id 255.1.1.2
 redistribute kernel route-map external
 redistribute connected route-map external
 interface lab-ipv6-od area 0.0.0.0
 interface lab-ipv6-tbc area 0.0.0.0
!
route-map external permit 10
 match interface eth1
!
route-map external deny 20

Учудващо, но работи и даже не успях да си отрежа клона, докато го подкарвах. Има няколко дребни момента, например че OSPFv3 няма auth. на пакетите (или поне го няма реализиран в quagga) и ще му трябва ipsec в един момент, или че може да е по-интересно да вземем от двата доставчика IPv6 адреси, да ги раздаваме на потребителите и те да избират от кой да излизат (което ще е интересно да се тества колко добре работи, ако работи изобщо).

Tags: ,

8 Responses to “2014-12-18 Internet свързаността на initlab”

  1. Neter Says:

    Малко встрани от основната тема, но все пак да те питам… И при мен OnlineDirect в последно време се превърнаха от перфектния ми доставчик в редовен кореспондент по телефона, та взеха да ми минават мисли за смяна. Имаш ли добър опит с TBC.bg, че избра(хте) тях, или е експеримент? За сефте ги виждам, но от пръв поглед изглеждат добре. Ако пък в крайна сметка реша да се вържа към тях, може да спомена подходящия човек, че ми е препоръчал услугата, за да се възползва initLab от 10% отстъпка “Доведи приятел” :)

  2. Vasil Kolev Says:

    @Neter, от един ден ги имаме, избрахме ги, щото бяха едни от малкото, които можеха да ни пуснат свързаност до лаба. Ще ги видим как се държат (то може да се гледа и на pnag.ludost.net) и ще можем да кажем нещо.

  3. Neter Says:

    Мерси, ще почакам, пък и трудно се сменя доставчик, който ползваш от създаването му :) Между другото (макар че това си е повече по темата), ако не пропускам нещо от целта на сините кутийки, на схемата на мрежата се съмнявам, че информацията за eth0.5 е вярна.

  4. Vasil Kolev Says:

    @Neter, вярно, оправих я.

  5. Drago Says:

    Въпросът е кога админите на тези доставчици ще им мине мързела и ще почнат да раздават IPv6 адреси.

  6. Neter Says:

    Всъщност, OnlineDirect известно време раздаваха, макар че се водеше тестово и само при поискване (стига да разбереш някак, че има). Аз се възползвах, услугата беше много стабилна, беше на ръба на официалното пускане, засилих IP-та и към вътрешната ми мрежа и DNS-ите на няколко домейна при мен, но… в един момент някой реши, че е ненужна услуга, и угасна :)

  7. v7000 Says:

    Утре, събота, има ли някъде откъдето мога да си взема/или да отида на място за лайф/рескю сд за линукс-десктоп машина? Намират ли се такива мили хора в София в събота? :)

  8. Vasil Kolev Says:

    @v7000, по принцип в initlab (initlab.org) може да има някой, погледни на https://fauna.initlab.org/ и така. Не съм сигурен, ама може да се търкалят някакви такива cd-та или някой да ти напише едно такова нещо я на cd, я на flash-ка (щото на flash-ка е по-лесно).

Leave a Reply