Jump to content

Recommended Posts

Posted (edited)

Привет. Возникла необходимость в балансировке трафика между 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 by Рамиль_
Posted

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

Думаю этого достаточно чтобы понять где ошибка.

Posted

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>

 

В сислоге ошибка пропала.

Posted (edited)

Какую сеть вы пытаетесь анонсировать?

Я запутался окончательно в маршрутизации. У меня есть два адреса 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 by Рамиль_
Posted

Ошибаешься, от начала и до конца. BGP в этой ситуации не нужен абсолютно, надо просто смаршрутизировать выданную подсеть /30 через выданую же пиринговую пару..

Или тупо прописать выданный /30 на интерфейсе и использовать свободный адрес.

Posted

Ошибаешься, от начала и до конца. BGP в этой ситуации не нужен абсолютно, надо просто смаршрутизировать выданную подсеть /30 через выданую же пиринговую пару..

Или тупо прописать выданный /30 на интерфейсе и использовать свободный адрес.

Дальше планируется ходить в инет с этим белым ИП и через другого провайдера.

Posted (edited)

Рамиль_

Это невозможно принципиально.

Почему нет то? Для одного провайдера я буду eBGP маршрутизатором, для другого iBGP. Так не взлетит что ли?

Edited by Рамиль_
Posted

Потому что вам провайдер выдал диапазончег 91.х.х.х/30. Мало того что любой уважающий себя ISP реджектит префиксы длиннее 24-х бит, так вы же ему пытаетесь анонсить эту сетку.

 

Так не взлетит что ли?

ТАК не взлетит )))

 

ЗЫ. Я бы вообще послушал изначальную задачу. Чего хотите сделать?

Posted

Потому что вам провайдер выдал диапазончег 91.х.х.х/30. Мало того что любой уважающий себя ISP реджектит префиксы с маской более 24-х бит, так вы же ему пытаетесь анонсить эту сетку.

 

Так не взлетит что ли?

ТАК не взлетит )))

 

ЗЫ. Я бы вообще послушал изначальную задачу. Чего хотите сделать?

Есть 2 ISP. 1 основной, 2 в резерве. Основной вечерами в полке. Хочу использовать оба канала с нормальной балансировкой нагрузки.

Posted

С этого и надо было начинать. Балансировать вы можете только исходящий трафик. BGP служит немного для других целей. В вашем случае, кмк, достаточно ip rule + ip route.

Posted

Сервис работающий на IP ISP1 никакими танцами не сможет работать через ISP2.

Для этого нужно купить/взять в аренду /24 блок IP + AS и уже ИХ анонсировать любому числу провайдеров. Других путей нет.

Posted

Сервис работающий на IP ISP1 никакими танцами не сможет работать через ISP2.

Для этого нужно купить/взять в аренду /24 блок IP + AS и уже ИХ анонсировать любому числу провайдеров. Других путей нет.

 

Не согласен. Задача ТС: "планируется ходить в инет с этим белым ИП и через другого провайдера" может выполняться. А вот ответы мира ТС через второго провайдера будут только при суммарном совпадении следующих условий:

 

1. Второй провайдер анонсирует в мир адрес ТС/32. Скорее ОнАнсирует)))

2. Все согласны редистрибутить его /32. ВЕСЬ МИР.

3. Канеш все отключают у себя фильтры из ripe/arin и остальных регуляторов

 

Чисто теоретически - возможно. Но не более.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.