Маршрутизация. VyOS
Программный маршрутизатор VyOS.
Содержание
1 Общая информация
- Сайты.
- Сайт: https://vyos.net/.
- Коммерческий сайт: https://vyos.io/.
- Репозиторий: https://github.com/vyos/vyos-1x.
- Документация: https://docs.vyos.io/.
- Документация в
pdf
: https://buildmedia.readthedocs.org/media/pdf/vyos/latest/vyos.pdf. - Блог: https://blog.vyos.io/.
- Поддержка Vagrant (см. Использование vagrant).
- Образы для Vagrant: https://app.vagrantup.com/vyos/.
- Плагин для Vagrant: https://github.com/higebu/vagrant-vyos.
- Форк проекта Vyatta.
- Реализовано на основе дистрибутива Debian.
- Система команд похожа на Juniper.
- Подсистема маршрутизации основывается на проекте FRRouting (см. Маршрутизация. FRRouting).
- Можно купить аппаратную платформу, на которой возможно развернуть маршрутизатор:
2 Модель распространения
- Можно собрать самому из исходного кода (см. Сборка образа VyOS).
- Образы LTS можно скачивать за плату.
- Для учебных заведений и некоммерческих организаций предоставляется бесплатный доступ к релизам.
- Образы для rolling релизов можно скачивать бесплатно.
- Rolling релизы:
- Блокируются российский ip-адреса.
3 Функционал
- VPN: Dynamic Multipoint VPN (DMVPN), GRE, IPSec, IPSec VTI, OpenVPN (server и client), WireGuard.
- Туннели: L2TP, L2TPv3, VXLAN, PPTP, GRE, IPIP, SIT, IPIP, IPIP6, IP6IP6.
- Интерфейсы L2/L3: Ethernet Bridge, 802.1Q VLAN, QinQ, Агрегация портов (LACP и статическая).
- Маршрутизация: BGP, OSPF, OSPFv3, RIP, RIPng протоколов динамической маршрутизации.
- Статическая маршрутизация и Policy-Based Routing (PBR)
- QoS для приоритизации трафика.
- Высокая доступность: VRRP, WAN load-balancing, Conntrack-Sync, Clustering.
- Сетевые сервисы: DHCP, DNS recursive server, Network Address Translation, IGMP-Proxy, NTP, LLDP, mDNS repeater, PPPoE server, TFTP сервер.
- Фильтрация трафика: Zone-based firewall, stateful firewall.
- Политики: Shaping, Rate limiting, Priority-based queues.
4 Конфигурирование
4.1 Быстрая настройка
- Настроим шлюз NAT с двумя сетевыми интерфейсами (
eth0
иeth1
).
4.1.1 Режим конфигурации
- В рабочем режиме в командной строке отображается символ
$
. - В режиме конфигурации в командной строке отображается
#
:
4.1.2 Сохранение
- После каждого изменения конфигурации необходимо применить изменения:
1commit
- В конце нужно сохранить конфигурацию:
1save
4.1.3 Конфигурация интерфейсов
- Внешний интерфейс:
eth0
. Он получает адрес по DHCP. - Внутренний интерфейс:
eth1
. Использует статический IP-адрес192.168.0.1/24
. - После перехода в режим конфигурации введём следующие команды:
4.1.4 SSH-сервер
- Включим ssh-сервер:
1set service ssh port '22'
4.1.5 Сервисы DHCP и DNS
- Сетевые настройки:
- Шлюз по умолчанию и адрес сервера DNS:
192.168.0.1/24
. - Диапазон адресов для статических назначений:
192.168.0.2/24
–192.168.0.8/24
. - Диапазон адресов для клиентов DHCP:
192.168.0.9
–192.168.0.254
. - Время аренды адреса DHCP: однин день (86400 секунд).
- Рекурсор DNS могут использовать только хосты из локальной сети.
- Шлюз по умолчанию и адрес сервера DNS:
- Конфигурация:
1set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 default-router '192.168.0.1' 2set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 name-server '192.168.0.1' 3set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 domain-name 'vyos.net' 4set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 lease '86400' 5set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 start 192.168.0.9 6set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 stop '192.168.0.254' 7 8set service dns forwarding cache-size '0' 9set service dns forwarding listen-address '192.168.0.1' 10set service dns forwarding allow-from '192.168.0.0/24'
4.1.6 Настройка NAT
- Настроим правила SNAT для внутренней сети:
4.1.7 Брандмауэр
- Блокируем весь трафик, который не был инициирован со стороны локальной сети:
1set firewall name OUTSIDE-IN default-action 'drop' 2set firewall name OUTSIDE-IN rule 10 action 'accept' 3set firewall name OUTSIDE-IN rule 10 state established 'enable' 4set firewall name OUTSIDE-IN rule 10 state related 'enable' 5 6set firewall name OUTSIDE-LOCAL default-action 'drop' 7set firewall name OUTSIDE-LOCAL rule 10 action 'accept' 8set firewall name OUTSIDE-LOCAL rule 10 state established 'enable' 9set firewall name OUTSIDE-LOCAL rule 10 state related 'enable' 10set firewall name OUTSIDE-LOCAL rule 20 action 'accept' 11set firewall name OUTSIDE-LOCAL rule 20 icmp type-name 'echo-request' 12set firewall name OUTSIDE-LOCAL rule 20 protocol 'icmp' 13set firewall name OUTSIDE-LOCAL rule 20 state new 'enable'
- Разрешим SSH-доступ к маршрутизатору с внешнего интерфейса.
- Ограничивают до 4 запросов в минуту (для блокировки взлома грубой силой):
1set firewall name OUTSIDE-LOCAL rule 30 action 'drop' 2set firewall name OUTSIDE-LOCAL rule 30 destination port '22' 3set firewall name OUTSIDE-LOCAL rule 30 protocol 'tcp' 4set firewall name OUTSIDE-LOCAL rule 30 recent count '4' 5set firewall name OUTSIDE-LOCAL rule 30 recent time '60' 6set firewall name OUTSIDE-LOCAL rule 30 state new 'enable' 7 8set firewall name OUTSIDE-LOCAL rule 31 action 'accept' 9set firewall name OUTSIDE-LOCAL rule 31 destination port '22' 10set firewall name OUTSIDE-LOCAL rule 31 protocol 'tcp' 11set firewall name OUTSIDE-LOCAL rule 31 state new 'enable'
- Применим политики брандмауэра:
- Зафиксируем изменения, сохраним конфигурацию и выйдем из режима конфигурации:
4.1.8 Настройка безопасности
- Заменим системного пользователя по умолчанию:
1set system login user myvyosuser authentication plaintext-password mysecurepassword
- Настроим аутентификацию на основе ключа:
- Удалим исходного пользователя
vyos
полностью отключим аутентификацию по паролю для SSH: - Зафиксируем изменения, сохраним конфигурацию и выйдем из режима конфигурации: