Здравейте,
Преди няколко дни ми се наложи да сглобя набързо една BGP сесия и се оказа, че автономната система, която са предоставили от RIPE на клиента е с 6, а не с 5 цифри.
Пиша тази публикация, за да предупредя всички, които не знаят за поддръжката на 6 цифрени автономни системи в Linux. Трябва версията ви на quagga да е минимум 0.99.15, за да можете да направите сесията.
border ~ # zebra -v
zebra version 0.99.15
Copyright 1996-2005 Kunihiro Ishiguro, et al.
Ако не сте с тази версия просто ще ви даде грешка и няма да се стартира BGP демона.
Надявам се да съм бил полезен.
С няколко стъпки ще Ви покажа как да делите трафика на клиентите си на Български и Международен с един интерфейс.
Да предположим, че получавате вашия трафик от 2 vlan-a, 1 за българския и 1 за международния трафик.
Правите следното нещо за да маркирате пакетите:
/sbin/iptables -A PREROUTING -t mangle -i ${bg_interface} -j DSCP --set-dscp 0x0
/sbin/iptables -A PREROUTING -t mangle -i ${int_interface -j DSCP --set-dscp 0x2e
С тази команда току що сложихте ToS(0×0) за българския и ToS(0xb8) за международния.
Вие пускате на вашият клиент български и международен по 1 vlan, но не знаете как да разграничите скоростите? Ето един лесен вариант:
/sbin/tc qdisc add dev ${client_vlan) root handle 1: htb default 60
/sbin/tc class add dev ${client_vlan) parent 1: classid 1:1 htb rate 100Mbit(общ капацитет)
/sbin/tc class add dev ${client_vlan) parent 1:1 classid 1:30 htb rate \
70Mbit ceil 70Mbit prio 0
/sbin/tc qdisc add dev ${client_vlan) parent 1:30 sfq perturb 10
/sbin/tc filter add dev ${client_vlan) protocol ip parent 1:0 prio 1 u32 \
match ip tos 0x0(български трафик) 0xff flowid 1:30
/sbin/tc class add dev ${client_vlan) parent 1:1 classid 1:31 htb rate \
30Mbit ceil 30Mbit prio 0
/sbin/tc qdisc add dev ${client_vlan) parent 1:31 sfq perturb 10
/sbin/tc filter add dev ${client_vlan) protocol ip parent 1:0 prio 1 u32 \
match ip tos 0xb8(международен трафик) 0xff flowid 1:31
Това е само за даунлинк трафика, можете да шейпнете ъплинк трафика на клиента по същия начин, но използвайки ingress( аз не маркирам международен и ползвам общ ъплинк шейп)
/sbin/tc qdisc add dev ${client_vlan) handle ffff: ingress
/sbin/tc filter add dev ${client_vlan) parent ffff: protocol ip prio 7 u32 match ip dst 0.0.0.0/0 police rate 50Mbit burst 128k drop flowid :1
Така вашият клиент вече не може да се възползва от по-ниския ви межународен трафик
Ето вариант да следите колко български и международен прави рисувайки проста графика:
Добавяме следните таблици:
/sbin/iptables -t mangle -N CLIENT_IN
/sbin/iptables -t mangle -N CLIENT_OUT
/sbin/iptables -t mangle -A PREROUTING -j CLIENT_IN
/sbin/iptables -t mangle -A POSTROUTING -j CLIENT_OUT
/sbin/iptables -t mangle -A CLIENT_IN -m dscp --dscp 0x0 -j RETURN -o ${client_vlan)
/sbin/iptables -t mangle -A CLIENT_OUT -m dscp --dscp 0x0 -j RETURN -i ${client_vlan)
/sbin/iptables -t mangle -A CLIENT_IN -m dscp --dscp 0x2e -j RETURN -o ${client_vlan)
/sbin/iptables -t mangle -A CLIENT_OUT -m dscp --dscp 0x2e -j RETURN -i ${client_vlan)
По този начин виждате колко бг и международен трафик прави вашият клиент и със помощта на туулове като rrdtool/mrtg можете да го следите.
Надявам се да съм бил полезен.
Послепис: По този начин можете да маркирате не само български/международен, но и всякакъв трафик:
Пример:
/usr/sbin/iptables -A POSTROUTING -t mangle -s 192.168.0.0/16 -j DSCP --set-dscp 0x0d
/usr/sbin/iptables -A POSTROUTING -t mangle -s 10.0.0.0/8 -j DSCP --set-dscp 0x0d
/usr/sbin/iptables -A POSTROUTING -t mangle -s 169.254.0.0/16 -j DSCP --set-dscp 0x0d
/usr/sbin/iptables -A POSTROUTING -t mangle -s 172.16.0.0/12 -j DSCP --set-dscp 0x0d
—-
Маркиране на локалния трафик и просто добавяте следния ред в шейп скрипта:
/sbin/tc class add dev ${client_vlan} parent 1:1 classid 1:32 htb rate \
100Mbit ceil 100Mbit(като разбутвате главния клас да е 200Mbps) prio 0
/sbin/tc qdisc add dev ${client_vlan} parent 1:32 sfq perturb 10
/sbin/tc filter add dev ${client_vlan} protocol ip parent 1:0 prio 1 u32 \
match ip tos 0x34(dscp 0x0d) 0xff flowid 1:32
Всеки уважаващ себе си администратор правил някога безжични линкове на дълги разстояние се е сблъсквал с продуктите на MikroTik и е разбрал, че с нищо друго не може да направи 50+ км.
НО когато опира до другите неща, с които се хвалят, че са невероятни се оказва просто глупав маркетингов трик…
През ръцете ми са преминали всичките им серии рутърборди и съм ги тествал на почти всички рутиращи протоколи вклчае и тестинг версиите им. След всичките главоболия и настройки, тунингования и терзания се оказва, че МикроТик не струва за border router.
Ето и тестовете, за които говоря:
RouterBoard 4xx series(not AH) – PPPoE, OSPF, NAT + Firewall -> MAX 29Mbps (микротик се хвалят, че можел 50+ -> е не може!)
RouterBoard 4xxAH series – PPPoE, OSPF, NAT + Firewall -> MAX 39Mbps(680Mhz)/52Mbps(800Mhz).
RouterBoard 333 – PPPoE, OSPF, NAT + Firewall -> MAX 60Mbps( O, чудо! По-добро от 4хх сериите им!)
RouterBoard 600/A – PPPoE, OSPF, NAT + Firewall -> MAX 100Mbps( След като си оправиха firmware тръгнаха добре нещата.)
RouterBoard 1000 – PPPoE, OSPF, BGP, NAT + Firewall -> MAX 200Mbps, 260 connected users!!! – невероятно голяма реклама – невероятно голямо разочарование!!! – с Penitum III Dual 1Ghz прокарвам 2 пъти по-голям трафик!
Dual Xeon 2.4Ghz 1GB DDR PC2700 ECC – 400Mbps с конфигурацията на RB1000.
Излиза, че продуктите на МикроТик стават само и единствено за домашни потребители и безжични връзки…
Факт е, че с машина от рода на Xeon duo 1.86Ghz /w 1GB of DDR2 ram и линукс slackware 12.0, като на него съм пуснал Quagga(BGP,OSPF) и Firewall + Shaping към вътрешните интерфейси + 2 пълни BGP таблици процесора ми стои почти свободен.
up 70 days, 10:34, 1 user, load average: 0.09, 0.05, 0.01
И трафика, който върви е учудващо голям….( в Килобайта в секунда)
Monitoring eth0… (press CTRL-C to stop)
rx: 24601.38 kB/s 25662 p/s tx: 6253.35 kB/s 20468 p/s
Единственото хубаво нещо е, че поне опитах и видях, че не струват…дано други не са си изпатили като мен.
Ще се радвам ако някой успее да ме обори в разсъжденията ми и покаже реални тестове, за съжаление аз не мога да постна тестовете, поради съображения за сигурност.
ФОРУМИ
Използвайте го ако имате въпроси, там ще могат и други да дискутират.
Ето малко снимки от домашното ми „сървърно“
Хардуера, който имам е RB600 – първа генерация.
Atheros 5413 – TP-Link a/b/g miniPCI.
Prism 2.5 miniPCI 200mW 802.11b.
RouterStation/Pro на Ubiquity Networks пристига!
За сумата от $79 получавате устройство с 256 памет, достатъчно за да пуснете пълна BGP сесия, 3 miniPCI слота и 2 Гигабит/4 Гигабит(Pro) лан порта. Процесора разбира се е от новото поколение на Atheros 71xx 680Mhz MIPS 24k. С две думи идеалната платформа за тестове( а защо не и за комерсиални цели ).
Ето малко снимки от устройството:
Eто как да конфигурираме cisco рутер като PPPoE сървър с динамичнo рутиране(OSPF).
Като за начало ще трябва да намерите достъп до самия рутер, най-често става с конзолен кабел.
След като успешно се логнете трябва да настроите aaa и bba(vpdn при старите).
aaa new-model
!
!
aaa authentication login default local
aaa authentication ppp home group radius local
aaa authorization network home group radius
aaa accounting exec home start-stop group radius
aaa accounting network home start-stop group radius
aaa session-id common

Ето моят firewall скрипт.
/ip firewall filter
add action=jump chain=forward comment=“" disabled=no in-interface=intif jump-target=INTERNET

Вчера успешно успях да свържа две трасета използвайки Линукс с 802.11n карти, а не МикроТик с a/b/g карти.
За съжаление проблемът с производителността все още си остава…максималния рейт, който постигнах беше 43Mbps, което на фона на MikroTik Nstreme е нищожен.
Занапред ще поствам информация относно подобрения в производителността и нека най-после дочакаме такава от порядъка на 100+ Mbps
За целта първо трябва да пачнете ядрото и iptables с l7-filter.
Изтегляте си последната версия на пача и пишете следното:
cd /usr/src/linux
patch -p1 –dry-run < /path-to-netfilter-layer7-dir/kernel-2.6.20..patch
Ако всичко мине добре значи може да махнете –dry-run и да стартирате наново.
После влизате в сорса на iptables и пишете следното:
patch -p1 –dry-run < /path-to-netfilter-layer7-dir/iptables-1.3/1.4.x.x.patch
Ако всичко мине добре значи може да махнете отново –dry-run и отново да стартирате командата.
Остава да компилирате модула като го маркирате в настройките на ядрото.
Не забравяйте да поставите дефинициите в /etc/.
Ето и един примерен скрипт, който използвам за да маркирам пакети:
Ако нещо не ви е ясно – питайте!
Ако ви е помогнала статията чувствайте се свободни да подкрепите каузата.
←По стари