Sergio, это, судя по всему, даже первоисточник! А тот ресурс, который я находил не требовал ни логина, ни решения (можно было просто кликать и смотреть на все задания) и описание было без привязки с Санте :).
Можете оформить в качестве ответа? А я отмечу решением.
Спасибо за столь быстрый и верный ответ!
Находясь внутри сети логичнее отправлять запрос на внутренний адрес (192.168.1.10)
Правильно ли настроен проброс 53-го порта? Что выдаёт tcpdump udp port 53 -n -s 0 -vvv при запросе из интернета?
gustaf: "Или это их нужно рассматривать отдельно?" Не нужно.
Каждый track делает проверку своего ISP, а каждым результатом могут пользоваться несколько подсистем (ip route, route-map, EEM и т.д.). И если один из track'ов скажет, что ISP недоступен, то все подсистемы это поймут и, соответственным образом, отреагируют.
Либо анализ политики PBR вручную (с толком, с чувством, с расстановкой), либо debug ip policy (плюс debug condition, чтобы ограничить число срабатываний дебагов, т.к. действительно — небрежно запущенный дебаг может сильно загрузить девайс).
А если не требуется видеть в логах что именно произошло с ISP, то можно вместо
event track 1 state up
использовать
event track 1 state any
Или, если нужно привязаться к нескольким track-объектам, то можно реагировать на syslog-сообщениЯ вот таким event'ом:
event syslog pattern "TRACKING-5-STATE: (12)|(21) rtr (12)|(21) state"
В данном случае EEM будет срабатывать и для track 12, и для track 21.
Это всё для того, чтобы сократить количество applet'ов, и, соответственно, дублирующихся конфигов.
gustaf: 172.22.1.0 выходит с адресом интерфейса main-isp (через main-isp?)
192.168.1.0 выходит с адресом интерфейса backup-isp (через backup-isp?)
Когда main-isp недоступен:
172.22.1.0 выходит с адресом интерфейса backup-isp (через backup-isp?)
Когда backup-isp недоступен
192.168.1.0 выходит с адресом интерфейса main-isp (через main-isp?)
Если ответы на все вопросы в скобках — ДА, то всё в порядке. Т.к. в этом случае трафик каждой из подсетей уходит и приходит на один и тот же интерфейс, а вот если трафик уходит через одного провайдера, но использует при этом адресацию второго провайдера (и потому обратно вернётся через второго провайдера), тогда схема — не очень и перестанет работать при BCP38.
В этом случае тоже нужно будет воспользоваться предложенным pezzak EEM'ом для сброса нат трансляций.
Небольшое уточнение: маршрутизация с помощью route-map называется Policy-Based Routing (PBR).
gustaf: Начало верное - если оба ISP доступны, то трафик выходит через ip route 0.0.0.0 0.0.0.0 с меньшим AD, т.е. через Main-ISP, но так как NAT даёт адрес от Backup-ISP (перепутаны пулы адресов NAT и интерфейсы route-map), то для возврата трафика обратно требуется живой Backup-ISP. Это называется ассиметричная маршрутизация (в одну сторону трафик идёт по одному маршруту, в другую - по другому) и в данном случае это не есть хорошо.
Во втором случае (Main-ISP не доступен) трафик переключается на Backup-ISP, получая адрес от Main-ISP, а т.к. Main не работает, то трафик не возвращается.
В данном случае Main точно не фильтрует по Source Address, тогда как про Backup мы этого сказать не можем. Если интересно, то для проверки можно сменить на статических маршрутах AD (5 и 10), чтобы Backup-ISP стал основным и если интернет появится, то это будет означать, что и Backup-ISP не фильтрует по Source.
В любом случае, любой из провайдеров вправе применить www.bcp38.info (фильтрацию по Source Address) и тогда данная схема вообще перестанет работать.
Да, в официальных доках и правда не сильно акцентируют внимание на необходимости полного совпадения. www.cisco.com/c/en/us/td/docs/ios/iproute_bgp/comm... To specify the networks to be advertised by the Border Gateway Protocol (BGP) and multiprotocol BGP routing processes, use the network command in address family or router configuration mode.
Потом, правда, дописывают, что BGP and multiprotocol BGP networks can be learned from connected routes, from dynamic routing, and from static route sources.
Т.е. если роутер имеет маршрут в таблице маршрутизации (без разницы connected, dynamic или static), то network команда позволяет объявить его.
Если маршрута нет, то можно создать статический в null0. Это, по сути, костыльно-статическая суммаризация (у BGP для этого дела есть aggregate-address). Другой вариант - можно инжектировать в таблицу BGP даже те маршруты, которых в принципе нет в таблице маршрутизации (эти таблицы - две отдельные сущности).
Один из этих вариантов и применили при угоне youtube, анонсировав искуственные маршруты. Только там хотели завернуть в null0 лишь локальный трафик, но так как неотфильтронные префиксы ушли на внешние пиринги, то этим они объявили всем о том, что их маршруты более точные, чем были у youtube на тот момент (если не ошибаюсь, то позже, чтобы исправить ситуацию youtube стал анонсировать ещё более точные префиксы :) ).
>Метод научного тыка.
Это, конечно, метод, но лучше всё-таки подходить системно :).
А по поводу network-команды вот пара примеров:
R1(config)#router bgp 117
!
!Вот есть /32 loopback
R1(config-router)#do sh ip int lo0 | i /32
Internet address is 100.0.0.17/32
!
!Пробуем объявить с другой маской
R1(config-router)#network 100.0.0.0 mask 255.255.255.0
!
!В таблице BGP тишина
R1(config-router)#do sh ip bgp
!
!Теперь объявляем с правильной маской
R1(config-router)#no network 100.0.0.0 mask 255.255.255.0
R1(config-router)#network 100.0.0.17 mask 255.255.255.255
!
!Что и требовалось доказать
R1(config-router)#do sh ip bgp
BGP table version is 4, local router ID is 192.168.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 100.0.0.17/32 0.0.0.0 0 32768 i
R1(config-router)#
!
!Аналогично со статикой
R1(config-router)#do sh ip ro st | b ^G
Gateway of last resort is not set
110.0.0.0/32 is subnetted, 1 subnets
S 110.0.0.1 is directly connected, Null0
!
!Объявляем неправильно
R1(config-router)#network 110.0.0.0 mask 255.255.255.0
!
!Маршрут не появился
R1(config-router)#do sh ip bgp
BGP table version is 4, local router ID is 192.168.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 100.0.0.17/32 0.0.0.0 0 32768 i
!
!Теперь правильно
R1(config-router)#no network 110.0.0.0 mask 255.255.255.0
R1(config-router)#network 110.0.0.1 mask 255.255.255.255
!
!Маршрут добавился
R1(config-router)#do sh ip bgp
BGP table version is 5, local router ID is 192.168.1.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 100.0.0.17/32 0.0.0.0 0 32768 i
*> 110.0.0.1/32 0.0.0.0 0 32768 i
R1(config-router)#
Можете оформить в качестве ответа? А я отмечу решением.
Спасибо за столь быстрый и верный ответ!