Маршрутизация. VyOS

Программный маршрутизатор VyOS.

Содержание

1 Общая информация

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/24192.168.0.8/24.
    • Диапазон адресов для клиентов DHCP: 192.168.0.9192.168.0.254.
    • Время аренды адреса DHCP: однин день (86400 секунд).
    • Рекурсор 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$
    

5 Образы операционной системы


Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие