Load balancing – Споделяне на Интернет от два или повече доставчика
Има един процент хора които твърдят, че Интернет и е жизненоважен и ако спре за 5 минути за тях идва края на света. В такива авариини случаи тези хора стават особенно нервни и страшни най вече по телефона а някои дори отправят директни заплахи към съпорта на доставчика все едно нарочно и е спрян достъпа. Истината е, че все пак такъв процент хора а в повечето случаи фирми има, макар тои да е много по малък от задклавиатурните бабаити които “чатат” с комшииката или “геймат Це-Ес” в локала.
Нека да споделя моя опит само в три случая в който Интернет е жизненоважен и е нужно решение като load balancing.
Наскоро бях в една фирма която се занимава със спедиция и ползва основно две приложения които са web базирани. На едното чрез GPS следят през google map къде се намират товарните и автомобили които се движат в Европа а другото е нещо като чат където си обменят информация с други такива фирми като тях. Още от птичи поглед е ясно, че на тази фирма като и спре достъпа до Интернет тя спира да работи.
Друг подобен случай е един голям хранителен магазин в който през деня отзад на рампата му идват постоянно автомобили които разтоварват стока и за да става бързо и да не чакат следващите са избегнали бумащината да плащат на място. Самото плащане става по банков път в 4:30 следобяд и сумите както се предполага хич не са малки. Самият магазин на няколко пъти има проблем с доставчиците си защото те не приемат факта, че не и е заплатено с причина ,че не е имало Интернет.
Аз лично съм много далече от хазарта но познавам хора които изглеждат нормални но онлайн залаганията са техния живот. Тези хора сякаш се изхранват с това но нямам представа как. Не искам дори за момент да си представя на такъв човек като му се срине достъпа до Интернет какво му е.
Разбира се има и други случаи на които може да се обърне внимание но посоката е ясна – как да реализираме решение в което да не пропада Интернет без ние дори да разберем, че е имало някакъв проблем ? И вместо да търсим шамани които да се молят да няма гръмотевици за да ни предпазят от сривове в мрежата или да се молим някой багерист да не скъса оптиката на доставчика ни просто трябва да намерим оптималният вариант. Мисля, че всеки човек който чете това и е стигнал до тук трябва да е наясно, че такова решение с един доставчик на Интернет не може да има защото никой досега не е успял да се пребори с природната стихия – гръмотевиците или физичния закон – скъсан кабел. Дори авариината група на доставчика да е с Ферари и да са по бързи от механиците на Макларън в F1 пак се изисква технологично време за отстраняване на повредата така, че точката от която започваме са два доставчика на Интернет без значение какви са те стига да не ползват една и съща преносна среда.
Като за начало първо се опитах да намеря хардуерно решение но се оказа, че единствения продукт който няма лоши отзиви за него е dual wan на Cisco но цената му е около 900 лева което за мен не е оправдано още повече, че типично в стила на Cisco има много ограничения и това не е пълнофункционален а един орязан рутер който освен load balancing май друго не може да прави. След това се ориентирах към Микротик движейки се по ръба на хардуера и софтуера с един routerboard но подводния камък тук също е голям. Оказа се, че в Микротик няма идеалното решение на load balancing а има няколко различни такива според изискванията на клиента http://itservice-bg.net/?p=230 В един случай имаме удвояване на скороста на канала но на всеки 10 минути route таблицата се flush което чупи ssh и ssl сесия а в друг когато има много клиенти просто ги разпреледя по равно и на двата канала но в този случай клиента зад рутера ползва винаги само единия канал. Ако пак се върнем на трите примера по горе който дадох само в първия можем да си позволим вариант с Микротик с флушване на таблицата но при другите два имаме имаме https и следене на връзките от сървъра и няма как един и същи човек да работи с банковата си сметка или да залага от две различни места в Интернет тоест Микротик не е решение защото не следи състоянието на връзките. За предпоследно се борих с един Debian и постигнах някакво решение но нещото което не ми стигаше е автоматизацията на задачата, не трябваше да пипа човек при срив и връзките на падналия доставчик да се пренасочват автоматично към другия както и въстановяване на конфигурацията в нормален режим.
Това което търсех го намерих във Vyatta и то толкова изпипано решение, че не мога да повярвам. За да направим елементарен анализ как работи системата ще показа кода само на модула load balancing
vyatta@home# show load-balancing wan { disable-source-nat interface-health eth0 { failure-count 5 nexthop 10.125.3.1 test 1 { resp-time 5 target 93.155.131.1 type ping } } interface-health tun1 { failure-count 5 nexthop 192.168.188.1 test 1 { resp-time 5 target 192.168.1.1 type ping } } rule 5 { destination { address 93.155.130.0/23 } exclude inbound-interface eth1 } rule 10 { inbound-interface eth1 interface eth0 { weight 1 } interface tun1 { weight 1 } } } [edit] |
Синтаксиса на Vyatta е много интуитивен и прилича много на Juniper но всъщност дистрибуцията е построена върху Debian и без поддръжка от създателите и е напълно безплатен софтуер. Ще обърна внимание само на основните неща.
disable-source-nat – Във Vyatta load balancing автоматично генерира NAT правила към доставчиците и с този ред аз изключвам това правило защото към втория доставчик tun1 това не ми е нужно а към първия ще си го създам отделно.
interface-health eth0 – Добавяне на eth0 към първия доставчик. От тук започва конструкцията която ще следи състоянието на интерфейса.
failure-count 5 – брояча на изгубени пакети, опцията е от 1 до 10. Опцията 5 всъщност значи, че ако имаме 5 поредни изгубени пакета Vyatta ще пренасочи целия трафик към другия работещ интерфейс.
nexthop 10.125.3.1 – Е рутера на първия доставчик тоест default gateway към него.
target 93.155.131.1 – Тук добавям ип адреса който искам да следя през този доставчик. 93.155.131.1 е адрес който съм рутирал през default gateway 10.125.3.1 на този доставчик като по този начин следя не дали му е паднал рутера а дали въобще има свързаност с Интернет през него.
type ping – типа с който ще следим рутнатия адрес през този доставчик.
resp-time 5 – е времето за което ще се провери паднал доставчик въстановил ли ни е достъпа до Интернет и ако е, ще се допускат нови връзки към него.
exclude – Е изключващо правило за порт мрежа и адрес в load balancing като така оставя маршрута да е само един който си е по подразбиране.
inbound-interface eth1 – Е интерфейса към локалната ни мрежа където се намират нашите клиенти.
interface eth0 – По този начин описваме интерфеисите към доставчиците ни, разбира се може да са повече от два.
weight 1 – Е съотношението на пакетите насочени към доставчиците и е с опция от 1 до 255. weight е тежеста кой доставчик да се използва повече и ако съотношението е 2:1 то доставчика с weight 2, ще има поток от данни 67% спрямо 33% на другия който е с weight 1.
Хубавото на всичко това е, че има и някакъв мониторинг:
vyatta@home# run show wan-load-balance Interface: eth0 Status: active Last Status Change: Mon Jan 24 01:00:01 2011 +Test: ping Target: 93.155.131.1 Last Interface Success: 0s Last Interface Failure: n/a # Interface Failure(s): 0 Interface: tun1 Status: active Last Status Change: Mon Jan 24 01:00:01 2011 +Test: ping Target: 192.168.1.1 Last Interface Success: 0s Last Interface Failure: 3m1s # Interface Failure(s): 0 [edit] |
От горното става ясно, че и двата доставчика са онлайн защото имаме знака + преди “Test: ping Target:” ако е паднал ще е –. От “Last Interface Success: 0s” виждаме, че на доставчика не е въстановявана връзката което ще рече, че не и падала а от “Last Interface Failure: 3m1s” , че преди 3 минути и 1 секунда е имало изгубен пакет.
vyatta@home# run show wan-load-balance status Chain WANLOADBALANCE_PRE (1 references) pkts bytes target prot opt in out source destination 191 24848 ACCEPT all -- eth1 any anywhere 93.155.130.0/23 18455 1675K ISP_eth0 all -- eth1 any anywhere anywhere state NEW statistic mode random probability 0.500000 18683 1674K ISP_tun1 all -- eth1 any anywhere anywhere state NEW 857K 109M CONNMARK all -- eth1 any anywhere anywhere CONNMARK restore [edit] |
Тук виждаме как Vyatta следи връзките.
От анализа до тук ни става ясно, че Vyatta ни предлага най добрия вариант на load balancing защото следи състоянието на връзките, състоянието на доставчиците и автоматично без да има каквато и да е намеса от администратор балансира интернет достъпа.
Хардуер
Аз инсталирах Vyatta на стар компютър с Pentium III процесор, 128 MB RAM и 2GB HDD. Добавих PCI wi-fi карта, LAN карта и един usb swich. Всичкия този наличен хардуер изглежда така.
Инсталация и начин на работа
Тъй като Vyatta е live CD след като зареди се логваме с тривиалното:
user: vyatta
password: vyatta
А ако пожелаем да я инсталираме на хард диска си за да продължим да работим с нея трябва да изпълним:
install-system
след което ще последва съветник за инсталация.
При вече инсталирана система преди да започнем да работим с нея трябва да знаем няколко основни неща. За да влезем в режим “конфигурация на системата” трябва да изпълним configure в противен случай се намираме в обикновен bash terminal. set се използва за ъзпълняване на команди а delete за изтриване. След това трябва да се запознаем с commit който запазва текущата конфигурация и save който прави същото след рестарт. А за излизане от конфигурационен режим ползваме exit.
Конфигуриране на системата
Секция WAN – Интернет
Конфигуриране на WAN интерфейса eth0 (първия доставчик)
set interfaces ethernet eth0 address 10.125.3.2/24 set interfaces ethernet eth0 description WAN1 set interfaces ethernet eth0 mac '00:0C:42:54:F4:CB' |
След като вкараме правилата за да влязат те в сила трябва да изпълним commit
А за да ги прегледаме можем да използваме командата show
vyatta@home# show interfaces ethernet eth0 address 10.125.3.2/24 description WAN1 hw-id 00:b0:d0:d7:88:74 mac 00:0C:42:54:F4:CB [edit] |
Вдигаме маршрут по подразбиране.
set protocols static route 0.0.0.0/0 next-hop 10.125.3.1 |
Конфигурираме нашите DNS сървъри
set system name-server 93.155.131.1 set system name-server 93.155.130.14 |
Конфигурираме име и времева зона на рутера
set system host-name home set system time-zone Europe/Sofia |
Вдигаме тунел за WAN2 втори интефейс към Интернет
set interfaces tunnel tun1 address 192.168.188.2/30 set interfaces tunnel tun1 description WAN2 set interfaces tunnel tun1 encapsulation ipip set interfaces tunnel tun1 local-ip 10.125.3.2 set interfaces tunnel tun1 remote-ip 10.129.3.7 set interfaces tunnel tun1 ttl 255 |
Вдигаме маршрут по подразбиране и през tun1 (втория ни доставчик)
set protocols static route 0.0.0.0/0 next-hop 192.168.188.1 |
Конфигуриране на Load balancing
set load-balancing wan disable-source-nat set load-balancing wan interface-health eth0 failure-count 5 set load-balancing wan interface-health eth0 nexthop 10.125.3.1 set load-balancing wan interface-health eth0 test 1 target 93.155.131.1 set load-balancing wan interface-health eth0 test 1 type ping set load-balancing wan interface-health tun1 failure-count 5 set load-balancing wan interface-health tun1 nexthop 192.168.188.1 set load-balancing wan interface-health tun1 test 1 target 192.168.1.1 set load-balancing wan interface-health tun1 test 1 type ping set load-balancing wan rule 4 destination address 212.233.128.0/17 set load-balancing wan rule 4 exclude set load-balancing wan rule 4 inbound-interface eth1 set load-balancing wan rule 5 destination address 93.155.130.0/23 set load-balancing wan rule 5 exclude set load-balancing wan rule 5 inbound-interface eth1 set load-balancing wan rule 10 inbound-interface br0 set load-balancing wan rule 10 interface eth0 weight 1 set load-balancing wan rule 10 interface tun1 weight 1 |
Тъи като в Load balancing сме задали 93.155.131.1 ип адрес за мониторинг чрез ping на първия доставчик и 192.168.1.1 за втория е редно да рутираме през target маршрутите по подразбиране.
set protocols static route 93.155.131.1 next-hop 10.125.3.1 set protocols static route 192.168.1.1 next-hop 192.168.188.1 |
В Load balancing също сме описали и мрежите 212.233.128.0/17 и 93.155.130.0/23 с опцията exclude. Това е така защото и двете мрежи са съседни на маршрутизатора на първия интерфейс eth0. След като тези мрежи са по близки през този марщрут ще бъде твърде нефунционално пакетите който изпращаме към тях да излизат и през другия интерфейс и да заобикалят половината Интернет за да се върнат при нас. След като сме ги изключили от Load balancing за да пращаме пакети за тези мрежи винаги през този интерфейс също трябва да ги рутираме през eth0.
set protocols static route 93.155.130.0/23 next-hop 10.125.3.1 set protocols static route 212.233.128.0/17 next-hop 10.125.3.1 |
Секция LAN – Локалната ни мрежа
За да свържем eth1 и wlan0 в един общ LAN за нашите потребители които се намират в локалната ни мрежа ще създадем bridge br0
set interfaces bridge br0 address 192.168.88.1/24 set interfaces bridge br0 description LAN |
Добавяме eth1 в bridge
set interfaces ethernet eth1 bridge-group bridge br0 set interfaces ethernet eth1 description LAN |
Добавяме waln0 в bridge и го конфигурираме за нашите нужди
set interfaces wireless wlan0 bridge-group bridge br0 set interfaces wireless wlan0 channel 2 set interfaces wireless wlan0 description LAN set interfaces wireless wlan0 mode g set interfaces wireless wlan0 security wpa mode wpa2 set interfaces wireless wlan0 security wpa passphrase 12345678 set interfaces wireless wlan0 ssid vyatta set interfaces wireless wlan0 type access-point |
Секция услуги
Конфигурираме NAT към локалната ни мрежа 192.168.88.0/24
set service nat rule 1 outbound-interface eth0 set service nat rule 1 outside-address address 10.125.3.2 set service nat rule 1 source address 192.168.88.0/24 set service nat rule 1 type source |
А това е конфигурацията на DHCP сървъра. Тук изниква въпроса откъде разбрах кои са мак адресите на потребителите ? Vyatta има инструмент за това: run show dhcp leases който показва логове на клиенти получили автоматично ип адрес от DHCP сървъра. Правя всички адреси които виждам в локалната си мрежа статични за да мога после да и ограничавам скороста.
set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 default-router 192.168.88.1 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 dns-server 208.67.222.222 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 dns-server 208.67.220.220 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 domain-name itservice-bg.net set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 lease 86400 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 start 192.168.88.2 stop 192.168.88.254 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping DELLD830 ip-address 192.168.88.130 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping DELLD830 mac-address 00:1c:23:95:39:08 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping Desi-PC ip-address 192.168.88.134 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping Desi-PC mac-address 00:21:63:09:c2:8e set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping Eli-PC ip-address 192.168.88.129 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping Eli-PC mac-address 00:26:9e:31:8b:29 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping Malinka-PC ip-address 192.168.88.138 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping Malinka-PC mac-address 00:21:00:00:de:bc set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping Nelly-PC ip-address 192.168.88.137 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping Nelly-PC mac-address 00:1b:9e:12:3f:f1 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping sami ip-address 192.168.88.131 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping sami mac-address c4:46:19:a9:40:f1 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping teri ip-address 192.168.88.132 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping teri mac-address 94:0c:6d:80:fa:9e set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping winxp-75bf52102 ip-address 192.168.88.251 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping winxp-75bf52102 mac-address 00:50:fc:ef:d4:a2 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping yani ip-address 192.168.88.133 set service dhcp-server shared-network-name HOME subnet 192.168.88.0/24 static-mapping yani mac-address 00:1b:77:d6:db:3e |
Тъй като искам MRTG да ми чертае графика през snmp от отдалечена машина прилагам следните правила.
set service snmp community public authorization ro set service snmp community public client 93.155.130.14 set service snmp contact support@itservice-bg.net set service snmp location Bulgaria |
Стартиране на услугата SSH за отдалечено администриране на рутера.
set service ssh port 22 |
Макар и да не ни е нужно в случая ще активирам DNS маскиране.
set service dns forwarding cache-size 300 set service dns forwarding listen-on br0 |
Секция Firewall – Глобални правила
set firewall all-ping enable
set firewall conntrack-table-size 50000000
Секция Firewall – верига local
set firewall all-ping enable set firewall conntrack-table-size 50000000 |
Създаване на верига и подразбираща се политика drop – отхвърляне.
set firewall name eth0local default-action drop |
Тъй като политиката ни е отхвърляне трябва да разрежим портове и услуги който ще използваме от вън.
set firewall name eth0local rule 1 action accept set firewall name eth0local rule 1 destination port 22 set firewall name eth0local rule 1 protocol tcp set firewall name eth0local rule 2 action accept set firewall name eth0local rule 2 destination port 53 set firewall name eth0local rule 2 protocol udp set firewall name eth0local rule 3 action accept set firewall name eth0local rule 3 protocol icmp |
Създавам access листа на адресите от който ще приемам пакети безусловно.
set firewall group address-group ACCESS-ADDRESS address 10.129.3.7 set firewall group address-group ACCESS-ADDRESS address 93.155.131.1 set firewall group address-group ACCESS-ADDRESS address 93.155.130.14 set firewall group address-group ACCESS-ADDRESS address 93.155.131.20 set firewall group address-group ACCESS-ADDRESS address 208.67.222.222 set firewall group address-group ACCESS-ADDRESS address 208.67.220.220 set firewall name eth0local rule 4 action accept set firewall name eth0local rule 4 source group address-group ACCESS-ADDRESS |
Създавам droped листа на адресите на които ще отхвърлям пакетите.
set firewall group address-group DROP-ADDRESS address 61.191.56.245 set firewall group address-group DROP-ADDRESS address 61.180.72.5 set firewall group address-group DROP-ADDRESS address 109.169.64.19 set firewall group address-group DROP-ADDRESS address 78.186.20.224 set firewall group address-group DROP-ADDRESS address 222.73.177.245 set firewall group address-group DROP-ADDRESS address 173.200.42.226 set firewall group address-group DROP-ADDRESS address 212.156.4.6 set firewall group address-group DROP-ADDRESS address 113.130.71.75 set firewall group address-group DROP-ADDRESS address 113.12.94.101 set firewall group address-group DROP-ADDRESS address 86.125.34.207 set firewall group address-group DROP-ADDRESS address 61.234.37.173 set firewall group address-group DROP-ADDRESS address 218.95.37.148 set firewall group address-group DROP-ADDRESS address 202.70.36.26 set firewall group address-group DROP-ADDRESS address 67.205.111.22 set firewall name eth0local rule 5 action drop set firewall name eth0local rule 5 source group address-group DROP-ADDRESS |
Въпреки, че сме задали правилата те не влизат в сила. Ще влязат когато ги асоциираме с интефейса. Важно е да се каже, че веригата “local” е само за самата машина тоест рутера а за влизащи пакети по долу ще използваме “in”
set interfaces ethernet eth0 firewall in name eth0in |
Секция Firewall – верига in
set firewall name eth0in default-action accept
set firewall name eth0in rule 1 action drop
set firewall name eth0in rule 1 protocol tcp
set firewall name eth0in rule 1 source port 137,138,139,445
set firewall name eth0in rule 2 action drop
set firewall name eth0in rule 2 protocol udp
set firewall name eth0in rule 2 source port 137,138,139,445
set interfaces ethernet eth0 firewall in name eth0in
Секция QOS – изходящ трафик
set traffic-policy limiter SHAPER-IN class 2 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 2 match DELLD830 ip source address 192.168.88.130/32
set traffic-policy limiter SHAPER-IN class 3 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 3 match Desi-PC ip source address 192.168.88.134/32
set traffic-policy limiter SHAPER-IN class 4 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 4 match Eli-PC ip source address 192.168.88.129/32
set traffic-policy limiter SHAPER-IN class 5 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 5 match teri ip source address 192.168.88.132/32
set traffic-policy limiter SHAPER-IN class 6 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 6 match yani ip source address 192.168.88.133/32
set traffic-policy limiter SHAPER-IN class 7 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 7 match Nelly-PC ip source address 192.168.88.137/32
set traffic-policy limiter SHAPER-IN class 8 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 8 match Malinka-PC ip source address 192.168.88.138/32
set traffic-policy limiter SHAPER-IN class 9 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 9 match winxp-75bf52102 ip source address 192.168.88.251/32
set traffic-policy limiter SHAPER-IN class 10 bandwidth 4mbit
set traffic-policy limiter SHAPER-IN class 10 match sami ip source address 192.168.88.131/32
set firewall name eth0in default-action accept set firewall name eth0in rule 1 action drop set firewall name eth0in rule 1 protocol tcp set firewall name eth0in rule 1 source port 137,138,139,445 set firewall name eth0in rule 2 action drop set firewall name eth0in rule 2 protocol udp set firewall name eth0in rule 2 source port 137,138,139,445 |
set interfaces ethernet eth0 firewall in name eth0in |
set traffic-policy limiter SHAPER-IN class 2 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 2 match DELLD830 ip source address 192.168.88.130/32 set traffic-policy limiter SHAPER-IN class 3 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 3 match Desi-PC ip source address 192.168.88.134/32 set traffic-policy limiter SHAPER-IN class 4 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 4 match Eli-PC ip source address 192.168.88.129/32 set traffic-policy limiter SHAPER-IN class 5 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 5 match teri ip source address 192.168.88.132/32 set traffic-policy limiter SHAPER-IN class 6 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 6 match yani ip source address 192.168.88.133/32 set traffic-policy limiter SHAPER-IN class 7 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 7 match Nelly-PC ip source address 192.168.88.137/32 set traffic-policy limiter SHAPER-IN class 8 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 8 match Malinka-PC ip source address 192.168.88.138/32 set traffic-policy limiter SHAPER-IN class 9 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 9 match winxp-75bf52102 ip source address 192.168.88.251/32 set traffic-policy limiter SHAPER-IN class 10 bandwidth 4mbit set traffic-policy limiter SHAPER-IN class 10 match sami ip source address 192.168.88.131/32 |
За да влязат правилата на трафик контрола на веригата SHAPER-IN трябва да я закачим към интерфейса eth1
set interfaces ethernet eth1 traffic-policy in SHAPER-IN |
Секция QOS – входящ трафик
set traffic-policy shaper SHAPER-OUT class 2 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 2 match DELLD830 ip destination address 192.168.88.130/32 set traffic-policy shaper SHAPER-OUT class 3 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 3 match Desi-PC ip destination address 192.168.88.134/32 set traffic-policy shaper SHAPER-OUT class 4 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 4 match Eli-PC ip destination address 192.168.88.129/32 set traffic-policy shaper SHAPER-OUT class 5 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 5 match teri ip destination address 192.168.88.132/32 set traffic-policy shaper SHAPER-OUT class 6 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 6 match yani ip destination address 192.168.88.133/32 set traffic-policy shaper SHAPER-OUT class 7 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 7 match Nelly-PC ip destination address 192.168.88.137/32 set traffic-policy shaper SHAPER-OUT class 8 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 8 match Malinka-PC ip destination address 192.168.88.138/32 set traffic-policy shaper SHAPER-OUT class 9 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 9 match winxp-75bf52102 ip destination address 192.168.88.251/32 set traffic-policy shaper SHAPER-OUT class 10 bandwidth 20mbit set traffic-policy shaper SHAPER-OUT class 10 match sami ip destination address 192.168.88.131/32 set traffic-policy shaper SHAPER-OUT default bandwidth 10mbit |
За да влязат правилата на трафик контрола на веригата SHAPER-OUT трябва да я закачим към интерфейса eth1
set interfaces ethernet eth1 traffic-policy out SHAPER-OUT |
Секция Мониторинг
Преглед на мрежовите интерфейси
vyatta@home# run show interfaces Interface IP Address State Link Description br0 192.168.88.1/24 up up LAN eth0 10.125.3.2/24 up up WAN1 eth1 - up up LAN lo 127.0.0.1/8 up up lo ::1/128 up up tun1 192.168.188.2/30 up up WAN2 tunl0 - admin down down wlan0 - up up LAN [edit] |
Преглед на маршрутната таблица
vyatta@home# run show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route S>* 0.0.0.0/0 [1/0] via 10.125.3.1, eth0 C>* 10.125.3.0/24 is directly connected, eth0 C>* 127.0.0.0/8 is directly connected, lo S>* 192.168.1.0/24 [1/0] via 192.168.188.1, tun1 C>* 192.168.88.0/24 is directly connected, br0 S>* 192.168.122.0/24 [1/0] via 192.168.188.1, tun1 C>* 192.168.188.0/30 is directly connected, tun1 S>* 212.233.129.250/32 [1/0] via 192.168.188.1, tun1 [edit] |
Модел на процесора
vyatta@home# run show hardware cpu processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 10 cpu MHz : 996.731 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 mmx fxsr sse up bogomips : 1993.46 clflush size : 32 cache_alignment : 32 address sizes : 36 bits physical, 32 bits virtual power management: [edit] |
Веригите QOS на изходящия трафик
vyatta@home# run show incoming ethernet eth1 input: Class Action Received Dropped Overlimit Rate 10 limit 2165068 180 180 4000K 2 limit 3323 0 0 4000K 3 limit 0 0 0 4000K 4 limit 0 0 0 4000K 5 limit 1850441 0 0 4000K 6 limit 0 0 0 4000K 7 limit 7339 0 0 4000K 8 limit 0 0 0 4000K 9 limit 69090259 228 228 4000K [edit] |
Веригите QOS на входящия трафик
vyatta@home# run show queueing ethernet eth1 Queueing: Class Qos-Policy Sent Dropped Overlimit Rate Queued root shaper 95484479 442 110981 0 0 2 fair-queue 3906 0 0 0 0 3 fair-queue 0 0 0 0 0 4 fair-queue 0 0 0 0 0 5 fair-queue 86627170 442 0 0 0 6 fair-queue 0 0 0 0 0 7 fair-queue 55804 0 0 0 0 8 fair-queue 0 0 0 0 0 9 fair-queue 8030823 0 0 0 0 10 fair-queue 759498 0 0 0 0 11 fair-queue 7224 0 0 0 0 [edit] |
NAT
vyatta@home# run show nat translations Pre-NAT Post-NAT Type Prot Timeout 192.168.88.131 10.125.3.2 snat tcp 431987 192.168.88.251 10.125.3.2 snat tcp 95 192.168.88.131 10.125.3.2 snat tcp 417707 192.168.88.131 10.125.3.2 snat udp 22 192.168.88.251 10.125.3.2 snat tcp 80 192.168.88.251 10.125.3.2 snat tcp 4 192.168.88.131:3474 10.125.3.2:1030 snat udp 1 192.168.88.131 10.125.3.2 snat tcp 431914 192.168.88.131:3474 10.125.3.2:1030 snat udp 18 192.168.88.251 10.125.3.2 snat tcp 89 192.168.88.251 10.125.3.2 snat tcp 22 192.168.88.251 10.125.3.2 snat tcp 30 |
Ако (хипотетично) имаме интерфейс eth0 weight 3 (например LAN доставчик) и tun1 с weight 1 (например от DSL) и по някаква причина падне скоростта от eth0, рутера би трябвало да отчете , че все пак има интернет до него. Какво ще стане със скоростта в мрежата след него. Ще ползва ли целия капацитет от DSL-а при положение, че падне скоростта от първия доставчик, въпреки че има свързаност.
Ами, при конфигурацията на load balancing имаш:
test 1 {
resp-time 5
target 93.155.131.1
type ping
тук сме си избрали един адрес който е рутнат през този доставчик (между другото може и да са повече адреси) Ако този адрес падне се приема, че няма Интернет и всичкия трафик се насочва към другия доставчик. weight не играе никаква роля в този случай.
По принцип повечето решения с load balancing се ping-ват default gateway на двата доставчика но има вариант в който самия доставчик да няма свързаност а ние да имаме към маршрутизатора му.
Именно за да се избегне това във Vyatta се използва вариант с пинг към рутнат адрес в Интернет и падне ли свързаноста с него се приема, че няма Интернет и съответно целия трафик се насочва към другия доставчик.
Да, нещо такова исках да питам – ако съм свързан с мрежата на доставчика, а те нямат достъп в момента. Благодаря. 🙂 А адресите би било добре да са поне два, най-малкото ако стане нещо с единия хост да се провери дали наистина проблема е в интернета или в него.
Човек, ти си хакер – благодаря ти ….
Спести ми много неща 😀
Наистина добра статия, благодарско !
Самуиле просто къртиш, браво … какъв е варианта без лоуд балансинг а рутера да играе ролята като файловер … предполгам с дистанс е трика но ако може драсни един пример моля.
Единия вариант е с distance 2 а другия в самият Load Balance има опция Failover …
здравейте! ами ако втория ти доставчик е на eth2 примерно а не е от тунел. и ако има негов си днс. всъщност не знам как става да ти е в тунел втория доставчик. аз имам 70мб на единия и 25 на другия но на отделни физически интерфейси. как да направя благодаря предварително. 🙂
Няма никакво значение дали е на тунел или не. Това е просто пример. А за DNS просто задаваш глобален който да се вижда и през двата доставчика ….
Тази Vyatta не е ли платена вече!!!!!!!
Vyatta Core е безплатна и се тегли от vyatta.org платената версия с екстри които тук не са използвани се намира на адрес vyatta.com
Is it possible to get all this information in English launguage? Please let me now if there is any option to change the language for this website. Thanks
има ли значение чипсета на безжичната карта или ваятата се справя със всякакви ?
Vyatta е Линукс, всяка карта която се поддържа от Линукс се поддържа и от Vyatta.