BGP отдать случайный ip [РЕШЕНО]
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
BGP отдать случайный ip [РЕШЕНО]
Доброго времени суток
На сколько я понял, из своих экспериментов, то чтоб передать случайный ip пиру, посредством BGP, мне его надо сначала занести в статический маршрут у себя
К примеру, отдаю пиру комьюнити 65555:111
Естественно в фильтрах разрешена только эта комьюнити
Пытаюсь отдать пиру случайный IP, к примеру 1.1.1.1
В фильтрах прописывал данный префикс 1.1.1.1/32, пытался в том-же филтре навесить на этот ip комьюнити - тишина
Прописал статический маршрут на 1.1.1.1 с добавлением комьюнити - пир получил маршрут
В следствии вопрос, это костыль или так должно быть?
Вопрос 2, если у меня несколько аплинков, то, по сути, мне надо писать n*аплинк количество статических маршрутов с данным IP и комьюнити?
Смысл этих действий в чём, слишком разрастается adress-list на удалённых микротиках, надоедает его править, а так на головном прописал нужную сеть и забыл, на второстепенных прописал правила маршрутизации в фильтрах и оно само разбегается как надо
На сколько я понял, из своих экспериментов, то чтоб передать случайный ip пиру, посредством BGP, мне его надо сначала занести в статический маршрут у себя
К примеру, отдаю пиру комьюнити 65555:111
Естественно в фильтрах разрешена только эта комьюнити
Пытаюсь отдать пиру случайный IP, к примеру 1.1.1.1
В фильтрах прописывал данный префикс 1.1.1.1/32, пытался в том-же филтре навесить на этот ip комьюнити - тишина
Прописал статический маршрут на 1.1.1.1 с добавлением комьюнити - пир получил маршрут
В следствии вопрос, это костыль или так должно быть?
Вопрос 2, если у меня несколько аплинков, то, по сути, мне надо писать n*аплинк количество статических маршрутов с данным IP и комьюнити?
Смысл этих действий в чём, слишком разрастается adress-list на удалённых микротиках, надоедает его править, а так на головном прописал нужную сеть и забыл, на второстепенных прописал правила маршрутизации в фильтрах и оно само разбегается как надо
Последний раз редактировалось Sir_Prikol 21 янв 2021, 19:35, всего редактировалось 1 раз.
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: BGP отдать случайный ip
Доброго. Ну, чтобы отдать какой-то маршрут пиру, надо его откуда-то взять. Фильтр маршруты не генерирует, только фильтрует. Маршрут можно получить из BGP Networks (при Synchronize=no он не должен дублироваться в таблице маршрутизации) или, собственно, из таблицы маршрутизации, с прописыванием в Network чего-нибудь всеобъемлющего.
Одного маршрута должно быть достаточно на всех пиров.
Я как-то тоже пытался играться с распространением списка адресов, и там проблема, как помню, была с работой с кастомными таблицами маршрутизации, не main - из них маршруты не очень хотели забираться... В RouterOS v7 обещали фильтры, которые смогут забирать данные из address-list и пихать их туда, но пока что-то тишина...
Одного маршрута должно быть достаточно на всех пиров.
Я как-то тоже пытался играться с распространением списка адресов, и там проблема, как помню, была с работой с кастомными таблицами маршрутизации, не main - из них маршруты не очень хотели забираться... В RouterOS v7 обещали фильтры, которые смогут забирать данные из address-list и пихать их туда, но пока что-то тишина...
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: BGP отдать случайный ip
BGP Networks (при Synchronize=no) - на сколько я проэкспериментировал, не вешает комьюнити, хотя я могу и ошибаться
из-за этого я и стал распространять через комьюнитикак помню, была с работой с кастомными таблицами маршрутизации, не main - из них маршруты не очень хотели забираться...
Имелось ввиду аплинковские маршруты на головном, при условии разных гейтов.Одного маршрута должно быть достаточно на всех пиров.
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: BGP отдать случайный ip
Так комьюнити навешиваться фильтром должныSir_Prikol писал(а): ↑21 янв 2021, 15:10 BGP Networks (при Synchronize=no) - на сколько я проэкспериментировал, не вешает комьюнити, хотя я могу и ошибаться
Но роуты при этом в main? И, строго говоря, мешают нормально жить и работать
Так от гейта-то ничего особо не зависитSir_Prikol писал(а): ↑21 янв 2021, 15:10 Имелось ввиду аплинковские маршруты на головном, при условии разных гейтов.
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: BGP отдать случайный ip
Как это? Вот у меня, допустим, 2 аплинка с разными гейтамиТак от гейта-то ничего особо не зависит
Я прописываю статический маршрут на тот IP который хочу отдать субпиру, к примеру 1.1.1.1, чтоб у пира в фильтрах на него навесилась routing mark и согласно этой маркировки он был доступен всегда (актуально при провайдерстве, на разных брасах и списком белых IP)
У себя я создаю статический маршрут на 1.1.1.1 - я не могу оставить гейт пустым, мне надо сказать через какой аплинк единички будут доступны, вот я и спросил про разные гейты, по сути я дублирую маршруты. Но это мелочи. Если будет работать synchronize=no - то проблема отпадёт.
До этого не добрался ещё, пока нормально не могу сети отдать.Но роуты при этом в main? И, строго говоря, мешают нормально жить и работать
Просто я не заметил разницы между Synchronize=no и Synchronize=yes, сеть в любом случае прилетает от нижестоящего пира. И вот тут возникает проблема. Если я пропишу сети на головном, где гарантия что эти сети не улетят вышестоящему?, Не смотря на то, что я фильтрую к вышестоящему всё, кроме своей сети
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: BGP отдать случайный ip
type=blackhole, но это только в том случае, если этот маршрут не будет использоваться в маршрутизации трафика (что, как правило, неверно, если он в таблице main)Sir_Prikol писал(а): ↑21 янв 2021, 16:14 У себя я создаю статический маршрут на 1.1.1.1 - я не могу оставить гейт пустым
Т.е. при Synchronize=yes и отсутствии маршрута в IP -> Routes сеть всё равно анонсируется?..Sir_Prikol писал(а): ↑21 янв 2021, 16:14 Просто я не заметил разницы между Synchronize=no и Synchronize=yes, сеть в любом случае прилетает от нижестоящего пира.
Так вот фильтры - и есть гарантияSir_Prikol писал(а): ↑21 янв 2021, 16:14 Если я пропишу сети на головном, где гарантия что эти сети не улетят вышестоящему?, Не смотря на то, что я фильтрую к вышестоящему всё, кроме своей сети
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: BGP отдать случайный ip
Это решил, сеть анонсится только тогда, когда она сидит в ip routes, вопрос снятТ.е. при Synchronize=yes и отсутствии маршрута в IP -> Routes сеть всё равно анонсируется?..
Осталась мелочь
На пире я получил нужный адрес от нужного комьюнити и....
Создал фильтр, чтоб у меня на это комьюнити вешался нужный мне routing mark - в ip routes - вижу маркировку маршрута - всё в норме, но....
Пишу правило фильтра
Код: Выделить всё
/ip fi fi add action=accept chain=output routing-mark=one
и счётчики не крутятся
Подозреваю что из-за того что на тестируемом микротике выставлен default route на pppoe клиенте, но не уверен
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: BGP отдать случайный ip
А чего счётчики должны крутиться? routing-mark=one проверяет, навесили ли на пакет ранее эту метку (другим правилом Mangle). Если надо проверить, что пакет подходит под кастомную таблицу маршрутизации - надо routing-table=one использовать, видимо. Ну и добавить Routing Rule для лукапа в этой таблице: https://wiki.mikrotik.com/wiki/Manual:R ... le_Matcher
З.Ы. 2010 год... Как давно же я с мучениями выбил у них добавление этой фишки в RouterOS
З.Ы. 2010 год... Как давно же я с мучениями выбил у них добавление этой фишки в RouterOS
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: BGP отдать случайный ip
Ураа! Заработало!
В общем то что я задумал - можно использовать. Резюмирую
Головной микротик:
Создаём инстанцию для нижестоящих пиров
прописываем сети с параметром Synchronize=no
Создаём фильтры с этими-же сетями (в идеале надо-бы чтоб в фильтр автоматом падали сети с routing bgp networks) и навешиваем нужный комьюнити, соответственно отдаём нужное(ые) комьюнити нижестоящим (в примере только то, что отвечает за мои нужды)
описание:
1.Принимаем от нижестоящих их сети и навешиваем на них нужное комьюнити (нижестоящих много, нужно получить их сети для нормальной реализации моих нужд)
2. Навешиваем на нужную сеть (нужный адрес) необходимое комьюнити для отделения от остальных сетей
3. Отдаём сети с основным комьюнити (у меня необходимость для того чтобы концевые железки могли контактировать друг с другом)
4. Отдаём комьюнити с нужной сетью
Тут важно отметить один нюанс, сожравший у меня кучу нервов в один давний момент. Чтоб отдать 2 и более комьюнити их надо прописывать ОТДЕЛЬНЫМ фильтром. Не смотря на то что винбокс позволяет добавлять несколько комьюнити в одном фильтре. Запоминаем - каждое комьюнити - отдельный фильтр
Создаём пира
На этом на головном маршрутизаторе всё.
Переходим к нижестоящему пиру:
Создаём инстанс
Прописываем сети для отдачи наверх (если надо)
Создаём фильтры
Описание:
1. Получаем сети с определённого комьюнити и навешиваем на него нужный routing mark (в общем то, для чего задумывалась данная схема работы)
2. Получаем всё остальное
Создаём пира
Далее идём в ip route rules и создаём простое правило -
Описание:
таблица "one" появляется в момент навешивания routing mark на нужную сеть при получении маршрута
После этого в любом правиле, фаервола просто используем данную таблицу маршрутизации для своих нужд (drop/accept/reject....etc)
(в примере дропаем выход в мир для этой таблицы с самого микротика, не забываем про разницу между output и forward)
Вот в принципе и всё. То что я хотел - получил, немного облагородить и будет идеально.
Теперь, чтоб прописать разрешение ходить железкам по нужным адресам - мне достаточно изменить данные на головном микротике, правда пока в двух местах, в routing bgp networks и в фильтрах (в идеале хочу прописывать только в одном месте - routing bgp networks, но, боюсь, в моей конфигурации это не реализовать, только каким-нить скриптом, который будет смотреть что у меня за сети прописаны и сравнивать их с фильтрами), и железо получит возможность руководствоваться моими правилами, у меня высвобождается толпа времени (до этого момента надо было распространять адресслист на каждый микротик, а их около 250 и занимало не мало времени и было очень занудным)
В общем то что я задумал - можно использовать. Резюмирую
Головной микротик:
Создаём инстанцию для нижестоящих пиров
Код: Выделить всё
/routing bgp instance
add as=65531 name=to.cams redistribute-connected=yes redistribute-other-bgp=yes redistribute-static=yes router-id=192.0.2.2
Код: Выделить всё
/routing bgp network
add network=1.1.1.1/32 synchronize=no
Код: Выделить всё
/routing filter
add action=accept append-bgp-communities=65531:115 chain=from-office-bgp-in prefix=192.168.0.0/16 prefix-length=16-32
add action=accept chain=to-office-bgp-out prefix=1.1.1.1 prefix-length=32 set-bgp-communities=65535:115
add action=accept bgp-communities=65531:115 chain=to-office-bgp-out
add action=accept bgp-communities=65535:115 chain=to-office-bgp-out
add action=discard chain=to-office-bgp-out
1.Принимаем от нижестоящих их сети и навешиваем на них нужное комьюнити (нижестоящих много, нужно получить их сети для нормальной реализации моих нужд)
2. Навешиваем на нужную сеть (нужный адрес) необходимое комьюнити для отделения от остальных сетей
3. Отдаём сети с основным комьюнити (у меня необходимость для того чтобы концевые железки могли контактировать друг с другом)
4. Отдаём комьюнити с нужной сетью
Тут важно отметить один нюанс, сожравший у меня кучу нервов в один давний момент. Чтоб отдать 2 и более комьюнити их надо прописывать ОТДЕЛЬНЫМ фильтром. Не смотря на то что винбокс позволяет добавлять несколько комьюнити в одном фильтре. Запоминаем - каждое комьюнити - отдельный фильтр
Создаём пира
Код: Выделить всё
/routing bgp peer
add hold-time=1m in-filter=from-office-bgp-in instance=to.cams keepalive-time=5s name=from.sb.04 out-filter=to-office-bgp-out remote-address=100.64.40.4 remote-as=65504 ttl=default
Переходим к нижестоящему пиру:
Создаём инстанс
Код: Выделить всё
/routing bgp instance
set default as=65509
Код: Выделить всё
/routing bgp network
add network=192.168.146.0/24 synchronize=no
Код: Выделить всё
/routing filter
add action=accept bgp-communities=65535:115 chain=from.carribean set-routing-mark=one
add action=accept chain=from.carribean
1. Получаем сети с определённого комьюнити и навешиваем на него нужный routing mark (в общем то, для чего задумывалась данная схема работы)
2. Получаем всё остальное
Создаём пира
Код: Выделить всё
/routing bgp peer
add hold-time=1m in-filter=from.carribean keepalive-time=5s name=peer1 remote-address=100.64.0.1 remote-as=65531 ttl=default
Код: Выделить всё
/ip route rule
add table=one
таблица "one" появляется в момент навешивания routing mark на нужную сеть при получении маршрута
После этого в любом правиле, фаервола просто используем данную таблицу маршрутизации для своих нужд (drop/accept/reject....etc)
Код: Выделить всё
/ip firewall filter
add action=drop chain=output routing-table=one
Вот в принципе и всё. То что я хотел - получил, немного облагородить и будет идеально.
Теперь, чтоб прописать разрешение ходить железкам по нужным адресам - мне достаточно изменить данные на головном микротике, правда пока в двух местах, в routing bgp networks и в фильтрах (в идеале хочу прописывать только в одном месте - routing bgp networks, но, боюсь, в моей конфигурации это не реализовать, только каким-нить скриптом, который будет смотреть что у меня за сети прописаны и сравнивать их с фильтрами), и железо получит возможность руководствоваться моими правилами, у меня высвобождается толпа времени (до этого момента надо было распространять адресслист на каждый микротик, а их около 250 и занимало не мало времени и было очень занудным)
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: BGP отдать случайный ip
Поздравляю
А много у вас других подсетей /32 анонсируется? Может, достаточно фильтра по prefix-length=32 на всех?Sir_Prikol писал(а): ↑21 янв 2021, 19:01 в идеале хочу прописывать только в одном месте - routing bgp networks, но, боюсь, в моей конфигурации это не реализовать, только каким-нить скриптом, который будет смотреть что у меня за сети прописаны и сравнивать их с фильтрами
На таких объёмах даже простенький bash-скрипт, который пробегается по всему списку роутеров и выполняет нужную команду по SSH, очень спасаетSir_Prikol писал(а): ↑21 янв 2021, 19:01 до этого момента надо было распространять адресслист на каждый микротик, а их около 250 и занимало не мало времени и было очень занудным
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: BGP отдать случайный ip [РЕШЕНО]
да вроде ни одной,но приходится и /25, /24, /22 распространять, а это уже не просто фильтр сообразить по префиксу /32, а костылить. Может приду к виду загрузки списка сетей по крону, скриптом очищать определённый коммент и добавлять одновременно и в networks и в filters, ещё не решил.А много у вас других подсетей /32 анонсируется? Может, достаточно фильтра по prefix-length=32 на всех?
еслиб это было так просто... я обычно по фтп заливал с окончанием auto.src, но до момента когда изменения посыпались по 10 раз в день, запарило список формировать, да и не всегда доступны были удалённые устройства, а так они сами забирать будут, при соединении.На таких объёмах даже простенький bash-скрипт, который пробегается по всему списку роутеров и выполняет нужную команду по SSH, очень спасает
По принципу - пир поднялся, скрипт очистил внутренний адресслист и наполнил его из таблицы маршрутов с определённой маркой, пир отвалился - работает по правилу из адресслиста и так по кругу. Всё проще
Сейчас проще доделываю, скриптом на баше дёргаю подсети с номера AS и формирую список из /22,/24 сетей, проблема в том, что у нас очень любят прятать доменные имена эквайринга.
Самое главное из всего этого действа, что оно работает, а дополнения - это уже мелочи
Дома: CCR2004 (7-ISP(GPON)белый IP)