kaktak Posted January 9, 2017 · Report post Сегодня несколько раз упала квагга (BGPd 0.99.21). В логах: 2017/01/09 17:47:53 BGP: BGPd 0.99.21 starting: vty@2605, bgp@<all>:179 2017/01/09 17:48:04 BGP: realloc : can't allocate memory for `' size 0: Resource temporarily unavailable 2017/01/09 17:48:04 BGP: Memory utilization in module LIB: 2017/01/09 17:48:04 BGP: Temporary memory : 1 2017/01/09 17:48:04 BGP: String vector : 14674 2017/01/09 17:48:04 BGP: Vector : 7267 2017/01/09 17:48:04 BGP: Vector index : 7267 2017/01/09 17:48:04 BGP: Link List : 20 2017/01/09 17:48:04 BGP: Link Node : 1950 2017/01/09 17:48:04 BGP: Thread : 33 2017/01/09 17:48:04 BGP: Thread master : 1 2017/01/09 17:48:04 BGP: Thread stats : 13 2017/01/09 17:48:04 BGP: Thread function name : 45 2017/01/09 17:48:04 BGP: VTY : 2 2017/01/09 17:48:04 BGP: Interface : 12 2017/01/09 17:48:04 BGP: Connected : 23 2017/01/09 17:48:04 BGP: Buffer : 3 2017/01/09 17:48:04 BGP: Buffer data : 357 2017/01/09 17:48:04 BGP: Stream : 20 2017/01/09 17:48:04 BGP: Stream data : 20 2017/01/09 17:48:04 BGP: Stream FIFO : 7 2017/01/09 17:48:04 BGP: Prefix : 33 2017/01/09 17:48:04 BGP: Hash : 63 2017/01/09 17:48:04 BGP: Hash Bucket : 33976 2017/01/09 17:48:04 BGP: Hash Index : 63 2017/01/09 17:48:04 BGP: Access List : 1 2017/01/09 17:48:04 BGP: Access List Str : 1 2017/01/09 17:48:04 BGP: Access Filter : 1 2017/01/09 17:48:04 BGP: Prefix List : 4 2017/01/09 17:48:04 BGP: Prefix List Entry : 5 2017/01/09 17:48:04 BGP: Prefix List Str : 4 2017/01/09 17:48:04 BGP: Route map : 3 2017/01/09 17:48:04 BGP: Route map name : 3 2017/01/09 17:48:04 BGP: Route map index : 4 2017/01/09 17:48:04 BGP: Route map rule : 4 2017/01/09 17:48:04 BGP: Route map rule str : 4 2017/01/09 17:48:04 BGP: Route map compiled : 3 2017/01/09 17:48:04 BGP: Command desc : 7349 2017/01/09 17:48:04 BGP: Socket union : 10 2017/01/09 17:48:04 BGP: Privilege information : 2 2017/01/09 17:48:04 BGP: Logging : 1 2017/01/09 17:48:04 BGP: Zclient : 2 2017/01/09 17:48:04 BGP: Work queue : 2 2017/01/09 17:48:04 BGP: Work queue item : 1904 2017/01/09 17:48:04 BGP: Work queue name string : 2 2017/01/09 17:48:04 BGP: Host config : 4 2017/01/09 17:48:04 BGP: Memory utilization in module ZEBRA: 2017/01/09 17:48:04 BGP: Nexthop : 7 2017/01/09 17:48:04 BGP: Memory utilization in module RIP: 2017/01/09 17:48:04 BGP: Memory utilization in module RIPNG: 2017/01/09 17:48:04 BGP: Memory utilization in module OSPF: 2017/01/09 17:48:04 BGP: Memory utilization in module OSPF6: 2017/01/09 17:48:04 BGP: Memory utilization in module ISIS: 2017/01/09 17:48:04 BGP: Memory utilization in module BGP: 2017/01/09 17:48:04 BGP: BGP instance : 1 2017/01/09 17:48:04 BGP: BGP listen socket details : 2 2017/01/09 17:48:04 BGP: BGP peer : 7 2017/01/09 17:48:04 BGP: BGP peer hostname : 7 2017/01/09 17:48:04 BGP: Peer description : 6 2017/01/09 17:48:04 BGP: BGP attribute : 17839 2017/01/09 17:48:04 BGP: BGP extra attributes : 17840 2017/01/09 17:48:04 BGP: BGP aspath : 16122 2017/01/09 17:48:04 BGP: BGP aspath seg : 16152 2017/01/09 17:48:04 BGP: BGP aspath segment data : 16152 2017/01/09 17:48:04 BGP: BGP aspath str : 16122 2017/01/09 17:48:04 BGP: BGP table : 31 2017/01/09 17:48:04 BGP: BGP node : 173247 2017/01/09 17:48:04 BGP: BGP route : 104398 2017/01/09 17:48:04 BGP: BGP ancillary route info : 104249 2017/01/09 17:48:04 BGP: BGP connected : 10 2017/01/09 17:48:04 BGP: BGP static : 3 2017/01/09 17:48:04 BGP: BGP synchronise : 56 2017/01/09 17:48:04 BGP: BGP adj out : 11 2017/01/09 17:48:04 BGP: BGP AS list : 3 2017/01/09 17:48:04 BGP: BGP AS filter : 3 2017/01/09 17:48:04 BGP: BGP AS filter str : 3 2017/01/09 17:48:04 BGP: community : 2 2017/01/09 17:48:04 BGP: community val : 2 2017/01/09 17:48:04 BGP: community str : 1 2017/01/09 17:48:04 BGP: community-list handler : 1 2017/01/09 17:48:04 BGP: Cluster list : 1 2017/01/09 17:48:04 BGP: Cluster list val : 1 2017/01/09 17:48:04 BGP: BGP Process queue : 1904 2017/01/09 17:48:04 BGP: BGP transit attr : 2 2017/01/09 17:48:04 BGP: BGP transit val : 2 2017/01/09 17:48:04 BGP: BGP nexthop : 7 2017/01/09 17:48:04 BGP: BGP regexp : 3 2017/01/09 17:48:04 BGP: Backtrace for 10 stack frames: 2017/01/09 17:48:04 BGP: [bt 0] /usr/lib/libzebra.so.0(zlog_backtrace+0x26) [0x7f18afc83223] 2017/01/09 17:48:04 BGP: [bt 1] /usr/lib/libzebra.so.0(+0x24b0a) [0x7f18afc79b0a] 2017/01/09 17:48:04 BGP: [bt 2] /usr/lib/libzebra.so.0(zrealloc+0x36) [0x7f18afc79bcb] 2017/01/09 17:48:04 BGP: [bt 3] /usr/lib/quagga/bgpd(bgp_attr_parse+0xb4b) [0x7f18b0110621] 2017/01/09 17:48:04 BGP: [bt 4] /usr/lib/quagga/bgpd(+0x58630) [0x7f18b012b630] 2017/01/09 17:48:04 BGP: [bt 5] /usr/lib/quagga/bgpd(bgp_read+0xa92) [0x7f18b012d582] 2017/01/09 17:48:04 BGP: [bt 6] /usr/lib/libzebra.so.0(thread_call+0x67) [0x7f18afc7884a] 2017/01/09 17:48:04 BGP: [bt 7] /usr/lib/quagga/bgpd(main+0x3fc) [0x7f18b010398f] 2017/01/09 17:48:04 BGP: [bt 8] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd) [0x7f18af024ead] 2017/01/09 17:48:04 BGP: [bt 9] /usr/lib/quagga/bgpd(+0x309e5) [0x7f18b01039e5] после нескольких перезапусков демона "прошло само". есть подозрение, что прилетел какой-то кривой апдейт от одного из нейборов.. кто-то сталкивался? как бы избежать повторения подобных ситуаций? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
NiTr0 Posted January 9, 2017 · Report post как бы избежать повторения подобных ситуаций? юзать bird. ну и не забывать подпирать критичные демоны monit'ом. тогда будет не так больно при падении их. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vlad11 Posted January 9, 2017 · Report post Юзать watchquagga. Проверить наличие свободной памяти. Поставить фильтры на входящие анонсы. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pppoetest Posted January 9, 2017 · Report post +1 за bird Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Умник Posted January 9, 2017 (edited) · Report post Мне кажется вы словили этот баг: https://lists.quagga.net/pipermail/quagga-users/2013-October/013501.html Исправлен в 0.99.22 этим патчем: http://git.savannah.gnu.org/gitweb/?p=quagga.git;a=commitdiff;h=8794e8d229dc9fe29ea31424883433d4880ef408 Точно можно будет сказать если ситуация повториться, а вы параллельно с попыткой запустить bgpd будете tcpdump-ом писать трафик на TCP-порту 179. Edited January 9, 2017 by Умник Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kaktak Posted January 10, 2017 · Report post Мне кажется вы словили этот баг: https://lists.quagga.net/pipermail/quagga-users/2013-October/013501.html Исправлен в 0.99.22 этим патчем: http://git.savannah.gnu.org/gitweb/?p=quagga.git;a=commitdiff;h=8794e8d229dc9fe29ea31424883433d4880ef408 Точно можно будет сказать если ситуация повториться, а вы параллельно с попыткой запустить bgpd будете tcpdump-ом писать трафик на TCP-порту 179. Спасибо! Обновил, посмотрим. Про watchquagga тоже спасибо, так то он включен, но только сейчас обратил внимание, что по-умолчанию оно только для информации... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Mechanic Posted July 31, 2017 · Report post Подскажите как разрулить задачу с маршрутами аплинк А- анонсится подсеть А1 аплинк B- анонсится подсеть B1,B2,B3 задача исход B2,B3 выпустить через аплинк А через установку localpref не получается то сделать Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
zhenya` Posted July 31, 2017 · Report post Пока в А нет сетей Б2 и Б3 через бгп никак. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted July 31, 2017 · Report post zhenya` С какой такой стати нельзя? Аплинку все равно что вы анонсируете и отправляете, трафик улетит через А и прилетит обратно через B. Условная маршрутизация скорее задача не для квагги, а для ip rule. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
zhenya` Posted August 2, 2017 · Report post Тут под словам анонсится понимаются входящие анонсы... иначе непонятно причём тут локалпреф Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Andrei Posted March 12, 2021 · Report post Настраиваю BGP для второй ноги на quagga под Debian. Для начала - просто пробую поднять bgp-сессию, но при этом ничего не анонсирую и не принимаю - в route-map сплошные deny: ip prefix-list ANY seq 5 permit any ip prefix-list DENY-ANY-PREFIXES seq 10 deny 0.0.0.0/0 le 32 ip prefix-list bogons seq 15 permit 0.0.0.0/8 le 32 ip prefix-list bogons seq 20 permit 127.0.0.0/8 le 32 ip prefix-list bogons seq 30 permit 10.0.0.0/8 le 32 ip prefix-list bogons seq 35 permit 172.16.0.0/12 le 32 ip prefix-list bogons seq 40 permit 192.168.0.0/16 le 32 ip prefix-list bogons seq 45 permit 169.254.0.0/16 le 32 ip prefix-list bogons seq 50 permit 224.0.0.0/4 le 32 ip prefix-list bogons seq 55 permit 240.0.0.0/4 le 32 ip prefix-list default seq 10 permit 0.0.0.0/0 ip prefix-list our-CIDR-blocks seq 5 permit 188.130.171.0/24 le 32 ip prefix-list reduced seq 10 permit 0.0.0.0/0 ge 18 ip prefix-list reduced seq 20 deny any ip prefix-list upstream-out seq 10 permit 188.130.171.0/24 ! ip as-path access-list 1 deny .* ip as-path access-list PRIV permit _6451[2-9]_ ip as-path access-list PRIV permit _645[2-9][0-9]_ ip as-path access-list PRIV permit _64[6-9][0-9][0-9]_ ip as-path access-list PRIV permit _65[0-9][0-9][0-9]_ route-map Bee-in deny 100 match as-path PRIV ! route-map Bee-in deny 110 match ip address prefix-list bogons ! route-map Bee-in deny 115 match ip address prefix-list reduced ! route-map Bee-in deny 116 match ip address prefix-list default ! route-map Bee-in deny 120 ! route-map Bee-out deny 200 Нейбор: neighbor 62.141.99.89 remote-as 3216 neighbor 62.141.99.89 description Bee neighbor 62.141.99.89 update-source 62.141.99.90 neighbor 62.141.99.89 weight 2000 neighbor 62.141.99.89 soft-reconfiguration inbound neighbor 62.141.99.89 route-map Bee-in in neighbor 62.141.99.89 route-map Bee-out out Сессия поднимается, состояние Established, но show ip bgp neighbors 62.141.99.89 advertised-route пусто - все верно show ip bgp neighbors 62.141.99.89 routes пусто - все верно show ip bgp neighbors 62.141.99.89 received-routes BGP table version is 0, local router ID is 188.130.171.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, R Removed Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 0.0.0.0 62.141.99.89 0 3216 i *> 1.0.0.0/24 62.141.99.89 0 3216 12389 13335 i *> 1.0.4.0/24 62.141.99.89 0 3216 4637 1221 38803 38803 38803 i *> 1.0.5.0/24 62.141.99.89 0 3216 6939 4826 38803 i *> 1.0.6.0/24 62.141.99.89 0 3216 4637 1221 38803 38803 38803 38803 i *> 1.0.7.0/24 62.141.99.89 0 3216 6939 4826 38803 i *> 1.0.16.0/24 62.141.99.89 0 3216 2497 2519 i и т.д.... Total number of prefixes 25824 Откуда received-routes? Я ж ничего не принимаю. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted March 12, 2021 · Report post 1 час назад, Andrei сказал: Сессия поднимается, состояние Establishe Откуда received-routes? Я ж ничего не принимаю. received-routes это принятые ДО фильтрации. отключите soft-reconfiguration inbound и у вас их не будет (правда смысла отключать на PC ровно ноль, память не жалко) алсо update source и так автоматом будет из стыковочной /30, это для лупбеков нужно указывать вместо weight лучше оперировал local pref, т.к. вес локальный, а lp транзитивный интра-ас Total number of prefixes 25824 <- вам недоливают?) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Andrei Posted March 12, 2021 · Report post Еще позволю себе уточнение :) Если один магистрал (ТТК) дает пока default, а второй (Bee) уже default+FV, то если я начну анонсить свою сетку /24 им обоим с одинаковым weght, то как полетит трафик по аплинкам? Если например я скажу ip route add default via 62.141.99.89 table bee ip rule add from 188.130.171.34 table bee то как это будет соотноситься с BGP? Эта конструкция работает - пакеты с этого интерфейса уходят по table bee через интерфейс 62.11.99.89, но ответы приходят через первого магистрала - ТТК. Соответственно инет у клиента с адресом 188.130.171.34 не работает. :( Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted March 12, 2021 · Report post weight влияет только на то как ВАШ трафик полетит ОТ вашего роутера, причем конкретно того, на котором вес и настроен ip route\ip rule соотносится так, что его на bgp маршрутизаторе быть не должно вовсе а не работает у вас что-то там из-за rp_filter, который включен по-умолчанию на всех интерфейсах (скорее всего) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Andrei Posted March 12, 2021 · Report post 1 минуту назад, vurd сказал: ip route\ip rule соотносится так, что его на bgp маршрутизаторе быть не должно вовсе А если мне надо конкретную подсетку завернуть в определенного магистрала? В описанном выше случае 188.130.171.34 - это один из двух НАТов на толстой циске в центре. Оба НАТа роутятся на сервер, где и стоит bgp на quagga. Кроме как ip route\rule мне что-то ничего в голову не пришло. Сетка у меня одна /24, ее никак по частям (например по /25) разным магистралам не проанонсить по понятным причинам. 6 минут назад, vurd сказал: rp_filter, который включен по-умолчанию на всех интерфейсах (скорее всего) есть такое дело. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted March 12, 2021 · Report post Цель какая? Что вы хотите получить? Зачем может потребоваться "подсетку завернуть в магистрала"? Принимайте с обоих пиров фул и не придумывайте, если надо будет ходить куда-то через определенного, то route-map на матч по as (или префиксу) и повышенный lp туда. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Andrei Posted March 12, 2021 · Report post 4 минуты назад, vurd сказал: Принимайте с обоих пиров фул и не придумывайте, Это будет. Просто ТТК не такой расторопный как Билайн. 4 минуты назад, vurd сказал: если надо будет ходить куда-то через определенного, то route-map на матч по as (или префиксу) и повышенный lp туда. Ходить хочется не "куда-то", а "откуда-то". В описанном выше случае 188.130.171.34 - это один из двух НАТов на толстой циске в центре. Оба НАТа роутятся на сервер, где и стоит bgp на quagga. Хочется, чтобы с одного НАТа трафик шел в одного магистрала, с другого НАТа - через другого магистрала. Ну и при падении одного из магистралов все шло через выжившего. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vurd Posted March 12, 2021 · Report post И в чем смысл? У вас что так много исходящего, чтобы это на что-то влияло? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Andrei Posted March 12, 2021 · Report post Под "с одного НАТа трафик шел в одного магистрала" я конечно подразумевал не только исходящий трафик, но и обратный - входящий. Но при FV с двух ног, как я понимаю, я на это повлиять не могу? По поводу rp_filter в /etc/sysctl.conf есть даже коммент: # Uncomment the next two lines to enable Spoof protection (reverse-path filter) # Turn on Source Address Verification in all interfaces to # prevent some spoofing attacks #net.ipv4.conf.default.rp_filter=1 #net.ipv4.conf.all.rp_filter=1 Врут негодяи? :) Или чем это грозит? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted March 12, 2021 · Report post FV это про то, кому вы будете отправлять... на то что вам будет прилетать оно вообще не влияет никоим образом. совершенно. Это всего лишь набивание таблицы маршрутизации на вашем бордере. трафик вообще не обязан быть симметричным. ну улетел сюда, ответ прилетел откуда прилетел. то что вам будет прилетать зависит от того, что и как вы анонсируете, что и как аплинки анонсируют дальше. и тонко настраивать тут может не получиться совсем.. рулить входящим сетями мельче чем /24 в общем случае нельзя. если ваш аплинк такое может еще принять, то дальше скорее всего порежут. rp_filter на обоих интерфейсах, смотрящих в мир придется выключить. да. трафик не симметричен, а rp_ как раз проверяет симметрию Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Andrei Posted March 12, 2021 · Report post 1 час назад, st_re сказал: rp_filter на обоих интерфейсах, смотрящих в мир придется выключить. да. трафик не симметричен, а rp_ как раз проверяет симметрию Просто поправить файлы /proc/sys/net/ipv4/conf/__имя_интерфейса____/rp_filter ? Ничего рестартовать не надо будет? В "эпоху до BGP" распределял трафик с разных НАТ на разных магистралов без проблем, а тут... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted March 12, 2021 · Report post Это не совсем чтобы файлы, это такая фейковая файлуха, которая в виде файлов представляет структуры ядра. после перезагрузки там будет по умолчанию всё. чтобы оно сохранилось надо это применять после перезапуска, например поправив всё тот же, упомянутый выше, /etc/sysctl.conf а так както так должно работать echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter echo 2 > /proc/sys/net/ipv4/conf/__имя_ext_интерфейса____/rp_filter echo 2 > /proc/sys/net/ipv4/conf/__имя_ext_интерфейса_2__/rp_filter echo 1 > /proc/sys/net/ipv4/conf/__имя_int_интерфейса____/rp_filter либо sysctl -w net.ipv4.conf.all.rp_filter=0 sysctl -w net.ipv4.conf.__имя_ext_интерфейса____.rp_filter=2 sysctl -w net.ipv4.conf.__имя_ext_интерфейса_2__.rp_filter=2 sysctl -w net.ipv4.conf.__имя_int_интерфейса____.rp_filter=1 что в общем то тоже самое для линуксов. тогда из локалки будет пускать только своих, а из интернета будет дропать мусор с нерутящимися адресами... правда если у вас прилетает дефолт, то рутиться будут все, но если потом будет 2 FV без дефолтов, то всякий шлак будет фильтроваться.. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Andrei Posted March 13, 2021 · Report post 19 часов назад, st_re сказал: sysctl -w net.ipv4.conf.__имя_ext_интерфейса____.rp_filter=2 sysctl -w net.ipv4.conf.__имя_ext_интерфейса_2__.rp_filter=2 Это два интерфейса к магистралам? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted March 13, 2021 · Report post 4 часа назад, Andrei сказал: Это два интерфейса к магистралам? да Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted March 13, 2021 · Report post @Andrei Да отключите его глобально, как делают все нормальные люди. На бордере он не нужен от слова совсем. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...