, последнее обновление:

Quagga, RIPv2 - раздаем маршруты

Однажды мне надоело запускать некий софт для входа в VPN, поэтому я решил перенести этот софт на виртуалку. Конечно же, сразу возникли проблемы с работой с этим VPN, так как маршруты на моем ноутбуке не появлялись. Решение было найдено - раздача маршрутов с помощью ripd из состава Quagga. В сочетании с Mikrotik - связка просто наиудобнейшая и бомбическая.

В этой статье описана более-менее безопасная настройка ripd, безопасность виртуалки и сети в целом - на вашей совести!

Перед конфигурированием и запуском ripd необходимо провести как минимум базовую конфигурацию zebra (без которой никуда - ничего не запустится).

Конфигурация ripd

Файл лежит в /etc/quagga/ripd.conf в Debian (которую я использую как свою серверную ОС). Вот пример конфига:

hostname ripd
password YOURPASSWORDHEREPLEASECHANGE
router rip
  network eth0
  neighbor 192.168.0.254
  version 2
  redistribute kernel
  redistribute connected
  distribute-list outgoing out ens18
  distribute-list incoming in ens18
  access-list outgoing permit 10.0.0.0/8
  access-list outgoing permit 172.16.0.0/12
  access-list outgoing permit 123.45.67.89/32
  access-list outgoing permit 123.45.67.90/32
  access-list outgoing permit 123.45.67.91/32
  access-list incoming deny any

log stdout

Описание параметров:

Параметр Описание
hostname Имя хоста для Quagga. Менять не обязательно.
password Пароль для подключения к консоли управления через telnet. МЕНЯТЬ ОБЯЗАТЕЛЬНО (даже если вы не будете ее использовать).
router rip Включает ripd.
network Задает интерфейс, на котором мы слушаем обновления с других маршрутизаторов и куда отправляем свои обновления. В примере - работаем с интерфейсом eth0. На самом деле тут может быть что угодно, так как влияет на автоматическое включение работы RIP, можно использовать это только для идентификации.
neighbor Задаем адрес соседа, с которым общаемся. В примере - 192.168.0.254.
redistribute Что раздаем. В примере - ядерную таблицу маршрутизации и маршруты на подключенные устройства (типа устройств tun/tap, которые используют всякие VPNовские программы).
distribute-list Как работаем с таблицами маршрутизации. В примере - принимаем входящие и отправляем исходящее, используя интерфейс ens18.
access-list Задаем список префиксов по направлениям (incoming и outgoing), которые разрешены (permit) или запрещены (deny) к приему/передаче. В примере конечное правило - запрет всех входящих, так как нам надо только раздать маршруты.
log Куда логируем. В примере - stdout, но можно указать путь до файла.