Рамиль_ Posted March 23, 2016 (edited) · Report post Привет. Возникла необходимость в балансировке трафика между 2 ISP. Решено перейти на BGP. У провайдера запросил серый IP и номер AS. Настроил BIRD, сессия BGP поднялась, но провайдер не видит моих маршрутов. Вопрос как диагностировать подобные неполадки? Конфиг BIRD root@pppoe1:~# cat /etc/bird.conf # Configure logging log syslog { debug, trace, info, remote, warning, error, auth, fatal, bug }; #log birdlog { debug, trace, info, remote, warning, error, auth, fatal, bug }; #log stderr all; #log "tmp" all; # Override router ID router id 172.30.100.2; # You can define your own symbols... #define xyzzy = (120+10); #define '1a-a1' = (30+40); # Define a route filter... filter lan__filter { if net ~ 10.222.0.0/19 then accept; if net ~ 91.230.72.169/30 then accept; else reject; } #filter sink { reject; } #filter okay { accept; } #include "filters.conf"; # Define another routing table #table testable; # Turn on global debugging of all protocols #debug protocols all; # The direct protocol automatically generates device routes to # all network interfaces. Can exist in as many instances as you wish # if you want to populate multiple routing tables with device routes. #protocol direct { # interface "-eth*", "*"; # Restrict network interfaces it works with #} # This pseudo-protocol performs synchronization between BIRD's routing # tables and the kernel. If your kernel supports multiple routing tables # (as Linux 2.2.x does), you can run multiple instances of the kernel # protocol and synchronize different kernel tables with different BIRD tables. protocol kernel { # learn; # Learn all alien routes from the kernel # persist; # Don't remove routes on bird shutdown scan time 20; # Scan kernel routing table every 20 seconds # import none; # Default is import all export all; # Default is export none # kernel table 5; # Kernel table to synchronize with (default: mai n) } # This pseudo-protocol watches all interface up/down events. protocol device { scan time 10; # Scan interfaces every 10 seconds } # Static routes (again, there can be multiple instances, so that you # can disable/enable various groups of static routes on the fly). protocol bgp { # disabled; description "B"; local as 65168; neighbor 172.30.100.1 as 65500; # multihop; # hold time 240; # startup hold time 240; # connect retry time 120; # keepalive time 80; # defaults to hold time / 3 # start delay time 5; # How long do we wait before initial connect # error wait time 60, 300;# Minimum and maximum time we wait after an erro r (when consecutive # # errors occur, we increase the delay exponentia lly ... # error forget time 300; # ... until this timeout expires) # disable after error; # Disable the protocol automatically when an err or occurs # next hop self; # Disable next hop processing and always adverti se our local address as nexthop # path metric 1; # Prefer routes with shorter paths (like Cisco d oes) # default bgp_med 0; # MED value we use for comparison when none is d efined # default bgp_local_pref 0; # The same for local preference export all; import all; source address 172.30.100.2 ; # What local address we use for the TCP connection # password "secret"; # Password used for MD5 authentication # rr client; # I am a route reflector and the neighor is my c lient # rr cluster id 1.0.0.1; # Use this value for cluster id instead of my ro uter id # export where source=RTS_STATIC; # export filter { # if source = RTS_STATIC then { # bgp_community = -empty-; bgp_community = add(bgp_communi ty,(65000,5678)); # bgp_origin = 0; # bgp_community = -empty-; bgp_community.add((65000,5678)) ; # if (65000,64501) ~ bgp_community then # bgp_community.add((0, 1)); # if bgp_path ~ [= 65000 =] then # bgp_path.prepend(65000); # accept; # } # reject; # }; } # # Template usage example #template bgp rr_client { # disabled; # local as 65000; # multihop; # rr client; # rr cluster id 1.0.0.1; #} # #protocol bgp rr_abcd from rr_client { # neighbor 10.1.4.7 as 65000; #} Логи BIRD Mar 23 09:15:35 pppoe1 bird: Restarting protocol kernel1 Mar 23 09:15:35 pppoe1 bird: Restarting protocol device1 Mar 23 09:15:35 pppoe1 bird: Restarting protocol bgp1 Mar 23 09:15:39 pppoe1 bird: sk_open: bind: Cannot assign requested address Mar 23 09:15:43 pppoe1 bird: sk_open: bind: Cannot assign requested address Mar 23 09:15:47 pppoe1 bird: sk_open: bind: Cannot assign requested address Mar 23 09:15:55 pppoe1 bird: sk_open: bind: Cannot assign requested address Mar 23 09:16:00 pppoe1 bird: sk_open: bind: Cannot assign requested address Mar 23 09:16:04 pppoe1 bird: sk_open: bind: Cannot assign requested address Mar 23 09:16:08 pppoe1 bird: sk_open: bind: Cannot assign requested address Статус BIRD bird> show protocols name proto table state since info kernel1 Kernel master up 09:15 device1 Device master up 09:15 bgp1 BGP master up 09:16 Established bird> sh route 0.0.0.0/0 via 172.30.100.1 on eth2.244 [bgp1 09:16] * (100) [AS65500i] bird> ^C ifconfig eth2 Link encap:Ethernet HWaddr 90:e2:ba:79:05:e7 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:895898 errors:0 dropped:44 overruns:0 frame:0 TX packets:20765 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:80727888 (76.9 MiB) TX bytes:2471099 (2.3 MiB) Memory:f7c00000-f7c20000 eth2.244 Link encap:Ethernet HWaddr 90:e2:ba:79:05:e7 inet addr:172.30.100.2 Bcast:172.30.100.3 Mask:255.255.255.252 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6263 errors:0 dropped:0 overruns:0 frame:0 TX packets:7242 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:383584 (374.5 KiB) TX bytes:541609 (528.9 KiB) ip r default via 172.30.100.1 dev eth2.244 proto bird 10.222.0.0/19 dev eth1 proto kernel scope link src 10.222.0.5 172.30.100.0/30 dev eth2.244 proto kernel scope link src 172.30.100.2 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 Edited March 23, 2016 by Рамиль_ Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted March 23, 2016 · Report post source address 91.x.x.x ; # What local address we use for the TCP connection ... 172.30.100.0/30 dev eth2.244 proto kernel scope link src 172.30.100.2 ... bird: sk_open: bind: Cannot assign requested address Думаю этого достаточно чтобы понять где ошибка. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Рамиль_ Posted March 23, 2016 · Report post source address 91.x.x.x ; # What local address we use for the TCP connection ... 172.30.100.0/30 dev eth2.244 proto kernel scope link src 172.30.100.2 ... bird: sk_open: bind: Cannot assign requested address Думаю этого достаточно чтобы понять где ошибка. Сменил source address 91.x.x.x на source address 172.30.100.2. Маршрутов в bird больше не стало. bird> show route 0.0.0.0/0 via 172.30.100.1 on eth2.244 [bgp1 11:53] * (100) [AS65500i] bird> В сислоге ошибка пропала. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted March 23, 2016 · Report post Какую сеть вы пытаетесь анонсировать? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Рамиль_ Posted March 23, 2016 (edited) · Report post Какую сеть вы пытаетесь анонсировать? Я запутался окончательно в маршрутизации. У меня есть два адреса 172.30.100.1 and 172.30.100.2 что бы мой роутер поднял TCP-соединение с роутером провайдера. На этом соединение поднялась bgp-сессия. От провайдера у меня есть еще 1 белый IP-адрес 91.х.х.х в 30 сети. На PC с Debian на борту я настроил eth2.244 (ip 172.30.100.2) Поднялось TCP-соединение.Далее BGP-сессия поднялась между neighbor as 65500 и local as 65168. Задача: мне нужно отправить провайдеру маршрут до моего белого адреса подсети 30, в которой находится мой белый адрес. Я пока нигде не ошибаюсь в логике работы BGP? Edited March 23, 2016 by Рамиль_ Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted March 23, 2016 · Report post Ошибаешься, от начала и до конца. BGP в этой ситуации не нужен абсолютно, надо просто смаршрутизировать выданную подсеть /30 через выданую же пиринговую пару.. Или тупо прописать выданный /30 на интерфейсе и использовать свободный адрес. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Рамиль_ Posted March 23, 2016 · Report post Ошибаешься, от начала и до конца. BGP в этой ситуации не нужен абсолютно, надо просто смаршрутизировать выданную подсеть /30 через выданую же пиринговую пару.. Или тупо прописать выданный /30 на интерфейсе и использовать свободный адрес. Дальше планируется ходить в инет с этим белым ИП и через другого провайдера. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted March 23, 2016 · Report post Рамиль_ Это невозможно принципиально. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Рамиль_ Posted March 23, 2016 (edited) · Report post Рамиль_ Это невозможно принципиально. Почему нет то? Для одного провайдера я буду eBGP маршрутизатором, для другого iBGP. Так не взлетит что ли? Edited March 23, 2016 by Рамиль_ Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted March 23, 2016 · Report post Потому что вам провайдер выдал диапазончег 91.х.х.х/30. Мало того что любой уважающий себя ISP реджектит префиксы длиннее 24-х бит, так вы же ему пытаетесь анонсить эту сетку. Так не взлетит что ли? ТАК не взлетит ))) ЗЫ. Я бы вообще послушал изначальную задачу. Чего хотите сделать? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Рамиль_ Posted March 23, 2016 · Report post Потому что вам провайдер выдал диапазончег 91.х.х.х/30. Мало того что любой уважающий себя ISP реджектит префиксы с маской более 24-х бит, так вы же ему пытаетесь анонсить эту сетку. Так не взлетит что ли? ТАК не взлетит ))) ЗЫ. Я бы вообще послушал изначальную задачу. Чего хотите сделать? Есть 2 ISP. 1 основной, 2 в резерве. Основной вечерами в полке. Хочу использовать оба канала с нормальной балансировкой нагрузки. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted March 23, 2016 · Report post С этого и надо было начинать. Балансировать вы можете только исходящий трафик. BGP служит немного для других целей. В вашем случае, кмк, достаточно ip rule + ip route. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted March 23, 2016 · Report post Сервис работающий на IP ISP1 никакими танцами не сможет работать через ISP2. Для этого нужно купить/взять в аренду /24 блок IP + AS и уже ИХ анонсировать любому числу провайдеров. Других путей нет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
telecom Posted March 23, 2016 · Report post ...Других путей нет. +100500 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
rz3dwy Posted March 24, 2016 · Report post Сервис работающий на IP ISP1 никакими танцами не сможет работать через ISP2. Для этого нужно купить/взять в аренду /24 блок IP + AS и уже ИХ анонсировать любому числу провайдеров. Других путей нет. Не согласен. Задача ТС: "планируется ходить в инет с этим белым ИП и через другого провайдера" может выполняться. А вот ответы мира ТС через второго провайдера будут только при суммарном совпадении следующих условий: 1. Второй провайдер анонсирует в мир адрес ТС/32. Скорее ОнАнсирует))) 2. Все согласны редистрибутить его /32. ВЕСЬ МИР. 3. Канеш все отключают у себя фильтры из ripe/arin и остальных регуляторов Чисто теоретически - возможно. Но не более. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted March 25, 2016 · Report post Под первые два условия замечательно подпадают анонсы с комьюнити типа ХХХХХ:666 ))) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...