Vyatta in my office – Load balancing, access point, DHCP, QOS,routing, firewall and more …

vyatta open source router

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 ни предлага най добрия вариант на load balancing защото следи състоянието на връзките, състоянието на доставчиците и автоматично без да има каквато и да е намеса от администратор балансира интернет достъпа.

Хардуер

Аз инсталирах Vyatta на стар компютър с Pentium III процесор, 128 MB RAM и 2GB HDD. Добавих PCI wi-fi карта, LAN карта и един usb swich. Всичкия този наличен хардуер изглежда така.

vyatta router

vyatta router

Инсталация и начин на работа

Тъй като 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

Създаване на верига и подразбираща се политика 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

За да влязат правилата на трафик контрола на веригата 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

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This Post Has 14 Comments

  1. .

    Ако (хипотетично) имаме интерфейс eth0 weight 3 (например LAN доставчик) и tun1 с weight 1 (например от DSL) и по някаква причина падне скоростта от eth0, рутера би трябвало да отчете , че все пак има интернет до него. Какво ще стане със скоростта в мрежата след него. Ще ползва ли целия капацитет от DSL-а при положение, че падне скоростта от първия доставчик, въпреки че има свързаност.

  2. Самуил Арсов

    Ами, при конфигурацията на load balancing имаш:

    test 1 {
    resp-time 5
    target 93.155.131.1
    type ping

    тук сме си избрали един адрес който е рутнат през този доставчик (между другото може и да са повече адреси) Ако този адрес падне се приема, че няма Интернет и всичкия трафик се насочва към другия доставчик. weight не играе никаква роля в този случай.

    По принцип повечето решения с load balancing се ping-ват default gateway на двата доставчика но има вариант в който самия доставчик да няма свързаност а ние да имаме към маршрутизатора му.

    Именно за да се избегне това във Vyatta се използва вариант с пинг към рутнат адрес в Интернет и падне ли свързаноста с него се приема, че няма Интернет и съответно целия трафик се насочва към другия доставчик.

  3. .

    Да, нещо такова исках да питам – ако съм свързан с мрежата на доставчика, а те нямат достъп в момента. Благодаря. 🙂 А адресите би било добре да са поне два, най-малкото ако стане нещо с единия хост да се провери дали наистина проблема е в интернета или в него.

  4. boko

    Човек, ти си хакер – благодаря ти ….
    Спести ми много неща 😀

  5. Антон

    Наистина добра статия, благодарско !

  6. robotron

    Самуиле просто къртиш, браво … какъв е варианта без лоуд балансинг а рутера да играе ролята като файловер … предполгам с дистанс е трика но ако може драсни един пример моля.

  7. Единия вариант е с distance 2 а другия в самият Load Balance има опция Failover …

  8. ivoto

    здравейте! ами ако втория ти доставчик е на eth2 примерно а не е от тунел. и ако има негов си днс. всъщност не знам как става да ти е в тунел втория доставчик. аз имам 70мб на единия и 25 на другия но на отделни физически интерфейси. как да направя благодаря предварително. 🙂

  9. Самуил Арсов

    Няма никакво значение дали е на тунел или не. Това е просто пример. А за DNS просто задаваш глобален който да се вижда и през двата доставчика ….

  10. n3t@dministr@tor

    Тази Vyatta не е ли платена вече!!!!!!!

  11. Самуил Арсов

    Vyatta Core е безплатна и се тегли от vyatta.org платената версия с екстри които тук не са използвани се намира на адрес vyatta.com

  12. Sanju

    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

  13. bisobisov

    има ли значение чипсета на безжичната карта или ваятата се справя със всякакви ?

  14. Vyatta е Линукс, всяка карта която се поддържа от Линукс се поддържа и от Vyatta.