Теория Community

Начнём с теории, Community, как было сказано выше, — это опциональный передаваемый атрибут (Optional Transitive) размером 4 байта. Он представляет из себя запись вида AA:NN, где AA — двухбайтовый номер AS, NN — номер коммьюнити (например, 64500:666).

Существует 4 так называемых Well-Known community (хорошо известные): Internet — Нет никаких ограничений — передаётся всем. No-export — Нельзя экспортировать маршрут в другие AS. При этом за пределы конфедерации передавать их можно. No-export-subconfed (называется также Local AS) — Как No-export, только добавляется ограничение и по конфедерациям — между ними уже тоже не передаётся. No-advertise — Не передавать этот маршрут никому — только сосед будет знать о нём.

В сети тысячи примеров настройки таких базовых коммьюнити и крайне мало примеров реального использования. А меж тем одно из самых интересных применений этого атрибута — блэкхоулинг от старославянского black hole — способ борьбы с DoS-атаками. Очень подробно с примером настройки о нём уже было рассказано на хабре. Суть в том, что когда началась атака на какой-то из адресов вашей AS, вы этот адрес передаёте вышестоящему провайдеру с комьюнити 666, и он отправляет такой маршрут в NULL — блэкхолит его. То есть до вас уже этот паразитный трафик не доходит. Провайдер может передать такой маршрут дальше, и так, шаг за шагом, трафик от злоумышленника или системы ботов будет отбрасываться уже на самых ранних этапах, не засоряя Интернет. Достигается такой эффект расширяющейся чёрной дыры именно благодаря коммьюнити. То есть в обычном случае вы анонсируете этот адрес в составе большой сети /22, например, а в случае DoS’а передаёте самый специфичный маршрут /32, который будет, естественно, более приоритетным.

О таких атаках вы, кстати, можете послушать в шестом выпуске нашего подкаста linkmeup.

Last updated