Маршрутизация. 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 Режим конфигурации
- В рабочем режиме в командной строке отображается символ
$
. - В режиме конфигурации в командной строке отображается
#
:vyos@vyos$ configure vyos@vyos#
4.1.2 Сохранение
- После каждого изменения конфигурации необходимо применить изменения:
commit
- В конце нужно сохранить конфигурацию:
save
4.1.3 Конфигурация интерфейсов
- Внешний интерфейс:
eth0
. Он получает адрес по DHCP. - Внутренний интерфейс:
eth1
. Использует статический IP-адрес192.168.0.1/24
. - После перехода в режим конфигурации введём следующие команды:
set interfaces ethernet eth0 address dhcp set interfaces ethernet eth0 description 'OUTSIDE' set interfaces ethernet eth1 address '192.168.0.1/24' set interfaces ethernet eth1 description 'INSIDE'
4.1.4 SSH-сервер
- Включим ssh-сервер:
set 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:
- Конфигурация:
set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 default-router '192.168.0.1' set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 name-server '192.168.0.1' set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 domain-name 'vyos.net' set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 lease '86400' set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 start 192.168.0.9 set service dhcp-server shared-network-name LAN subnet 192.168.0.0/24 range 0 stop '192.168.0.254' set service dns forwarding cache-size '0' set service dns forwarding listen-address '192.168.0.1' set service dns forwarding allow-from '192.168.0.0/24'
4.1.6 Настройка NAT
- Настроим правила SNAT для внутренней сети:
set nat source rule 100 outbound-interface 'eth0' set nat source rule 100 source address '192.168.0.0/24' set nat source rule 100 translation address masquerade
4.1.7 Брандмауэр
- Блокируем весь трафик, который не был инициирован со стороны локальной сети:
set firewall name OUTSIDE-IN default-action 'drop' set firewall name OUTSIDE-IN rule 10 action 'accept' set firewall name OUTSIDE-IN rule 10 state established 'enable' set firewall name OUTSIDE-IN rule 10 state related 'enable' set firewall name OUTSIDE-LOCAL default-action 'drop' set firewall name OUTSIDE-LOCAL rule 10 action 'accept' set firewall name OUTSIDE-LOCAL rule 10 state established 'enable' set firewall name OUTSIDE-LOCAL rule 10 state related 'enable' set firewall name OUTSIDE-LOCAL rule 20 action 'accept' set firewall name OUTSIDE-LOCAL rule 20 icmp type-name 'echo-request' set firewall name OUTSIDE-LOCAL rule 20 protocol 'icmp' set firewall name OUTSIDE-LOCAL rule 20 state new 'enable'
- Разрешим SSH-доступ к маршрутизатору с внешнего интерфейса.
- Ограничивают до 4 запросов в минуту (для блокировки взлома грубой силой):
set firewall name OUTSIDE-LOCAL rule 30 action 'drop' set firewall name OUTSIDE-LOCAL rule 30 destination port '22' set firewall name OUTSIDE-LOCAL rule 30 protocol 'tcp' set firewall name OUTSIDE-LOCAL rule 30 recent count '4' set firewall name OUTSIDE-LOCAL rule 30 recent time '60' set firewall name OUTSIDE-LOCAL rule 30 state new 'enable' set firewall name OUTSIDE-LOCAL rule 31 action 'accept' set firewall name OUTSIDE-LOCAL rule 31 destination port '22' set firewall name OUTSIDE-LOCAL rule 31 protocol 'tcp' set firewall name OUTSIDE-LOCAL rule 31 state new 'enable'
- Применим политики брандмауэра:
set interfaces ethernet eth0 firewall in name 'OUTSIDE-IN' set interfaces ethernet eth0 firewall local name 'OUTSIDE-LOCAL'
- Зафиксируем изменения, сохраним конфигурацию и выйдем из режима конфигурации:
vyos@vyos# commit vyos@vyos# save Saving configuration to '/config/config.boot'... Done vyos@vyos# exit vyos@vyos$
4.1.8 Настройка безопасности
- Заменим системного пользователя по умолчанию:
set system login user myvyosuser authentication plaintext-password mysecurepassword
- Настроим аутентификацию на основе ключа:
set system login user myvyosuser authentication public-keys myusername@mydesktop type ssh-rsa set system login user myvyosuser authentication public-keys myusername@mydesktop key contents_of_id_rsa.pub
- Удалим исходного пользователя
vyos
полностью отключим аутентификацию по паролю для SSH:delete system login user vyos set service ssh disable-password-authentication
- Зафиксируем изменения, сохраним конфигурацию и выйдем из режима конфигурации:
vyos@vyos# commit vyos@vyos# save Saving configuration to '/config/config.boot'... Done vyos@vyos# exit vyos@vyos$