Dummy интерфейсы в VyOS

Dummy интерфейсы в VyOS - это виртуальные интерфейсы, которые всегда находятся в состоянии “up” и не привязаны к физическому оборудованию. Они используются для различных технических задач, включая тестирование, маршрутизацию, и в качестве стабильных endpoint’ов.

Обзор

Dummy интерфейсы используются для:

  • Тестирование: Симуляция интерфейсов без физического оборудования
  • Stable endpoint: Всегда доступный IP для routing protocols
  • Router ID: Стабильный идентификатор для OSPF/BGP (альтернатива loopback)
  • Blackhole routing: Отбрасывание трафика через dummy
  • Source address: Стабильный source IP для исходящих соединений
  • Development: Разработка и отладка сетевых конфигураций

Dummy vs Loopback

ХарактеристикаDummyLoopback
СостояниеВсегда upВсегда up
ИспользованиеТестирование, routing, blackholeRouter ID, management
КоличествоМножественные (dum0, dum1, …)Один (lo)
СтандартизацияLinux-специфичныйУниверсальный (RFC 1122)
РекомендацияДля временных задачДля production router ID

Когда использовать Dummy:

  • Тестирование конфигураций
  • Временные endpoint’ы
  • Blackhole routing
  • Множественные виртуальные интерфейсы

Когда использовать Loopback:

  • Router ID для OSPF/BGP
  • Management address
  • Production stable endpoint

Базовая конфигурация

Создание Dummy интерфейса

# Создание dummy интерфейса с IP адресом
set interfaces dummy dum0 address 192.168.255.1/32

commit
save

Множественные Dummy интерфейсы

# Первый dummy
set interfaces dummy dum0 address 192.168.255.1/32

# Второй dummy
set interfaces dummy dum1 address 192.168.255.2/32

# Третий dummy с описанием
set interfaces dummy dum2 address 192.168.255.3/32
set interfaces dummy dum2 description 'Test interface for BGP'

commit
save

Множественные IP адреса на Dummy

# Dummy с несколькими адресами
set interfaces dummy dum0 address 192.168.255.1/32
set interfaces dummy dum0 address 10.255.255.1/32
set interfaces dummy dum0 address 172.16.255.1/32

commit
save

IPv6 на Dummy

# IPv4 + IPv6
set interfaces dummy dum0 address 192.168.255.1/32
set interfaces dummy dum0 address 2001:db8::1/128

commit
save

Расширенная конфигурация

Dummy для Router ID (OSPF/BGP)

# Dummy интерфейс для Router ID
set interfaces dummy dum0 address 10.255.255.1/32
set interfaces dummy dum0 description 'Router ID for OSPF/BGP'

# OSPF использует этот адрес как Router ID
set protocols ospf parameters router-id 10.255.255.1
set protocols ospf area 0 network 10.255.255.1/32

# BGP также использует
set protocols bgp local-as 65000
set protocols bgp parameters router-id 10.255.255.1

# Анонсировать в OSPF (опционально)
set protocols ospf area 0 network 10.255.255.1/32

commit
save

Blackhole routing с Dummy

Dummy интерфейсы можно использовать для blackhole routing - отбрасывания нежелательного трафика.

# Создание dummy для blackhole
set interfaces dummy dum0 address 192.0.2.1/32
set interfaces dummy dum0 description 'Blackhole interface'

# Маршруты к dummy (трафик будет отброшен)
set protocols static route 10.0.0.0/8 interface dum0
set protocols static route 172.16.0.0/12 interface dum0
set protocols static route 192.168.0.0/16 interface dum0

commit
save

Теперь весь трафик к этим подсетям будет отброшен (полезно для защиты от DDoS или маршрутизации bogon prefixes).

Source address для исходящих соединений

# Dummy для stable source address
set interfaces dummy dum0 address 203.0.113.100/32
set interfaces dummy dum0 description 'Stable source for outgoing connections'

# BGP использует dummy как source
set protocols bgp neighbor 198.51.100.1 remote-as 65001
set protocols bgp neighbor 198.51.100.1 update-source dum0

# Статический маршрут для достижимости dummy адреса
set protocols ospf area 0 network 203.0.113.100/32

commit
save

Dummy для тестирования NAT

# Dummy имитирует внутреннюю сеть
set interfaces dummy dum0 address 192.168.10.1/24
set interfaces dummy dum0 description 'Test internal network'

# NAT для dummy интерфейса
set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.10.0/24
set nat source rule 100 translation address masquerade

commit
save

Dummy для policy-based routing

# Dummy для PBR тестирования
set interfaces dummy dum0 address 192.168.100.1/24

# Policy route для трафика к dummy
set policy route TEST-ROUTE rule 10 destination address 192.168.100.0/24
set policy route TEST-ROUTE rule 10 set table 100

# Применение к интерфейсу
set interfaces ethernet eth1 policy route TEST-ROUTE

commit
save

Примеры конфигураций

Пример 1: Router ID для OSPF/BGP

# Dummy интерфейс для stable Router ID
set interfaces dummy dum0 address 10.255.255.1/32
set interfaces dummy dum0 description 'Router ID'

# OSPF конфигурация
set protocols ospf parameters router-id 10.255.255.1
set protocols ospf area 0 network 10.0.0.0/24
set protocols ospf area 0 network 10.255.255.1/32

# BGP конфигурация
set protocols bgp local-as 65000
set protocols bgp parameters router-id 10.255.255.1
set protocols bgp neighbor 10.0.0.2 remote-as 65001
set protocols bgp neighbor 10.0.0.2 update-source dum0

commit
save

Пример 2: Blackhole routing для bogon prefixes

# Dummy для blackhole
set interfaces dummy dum0 address 192.0.2.1/32
set interfaces dummy dum0 description 'Blackhole for bogon prefixes'

# RFC 1918 private addresses (если они не должны routing'иться в интернет)
set protocols static route 10.0.0.0/8 blackhole distance 254
set protocols static route 172.16.0.0/12 blackhole distance 254
set protocols static route 192.168.0.0/16 blackhole distance 254

# Другие bogon prefixes
set protocols static route 0.0.0.0/8 blackhole distance 254
set protocols static route 127.0.0.0/8 blackhole distance 254
set protocols static route 169.254.0.0/16 blackhole distance 254
set protocols static route 224.0.0.0/4 blackhole distance 254
set protocols static route 240.0.0.0/4 blackhole distance 254

commit
save

Примечание: blackhole более эффективен чем маршрут через dummy, но dummy может использоваться для специфичных случаев.

Пример 3: Тестовая среда с множественными Dummy

# Имитация множественных сетей для тестирования
set interfaces dummy dum0 address 192.168.10.1/24
set interfaces dummy dum0 description 'Test network VLAN 10'

set interfaces dummy dum1 address 192.168.20.1/24
set interfaces dummy dum1 description 'Test network VLAN 20'

set interfaces dummy dum2 address 192.168.30.1/24
set interfaces dummy dum2 description 'Test network VLAN 30'

# OSPF анонсирует все тестовые сети
set protocols ospf area 0 network 192.168.10.0/24
set protocols ospf area 0 network 192.168.20.0/24
set protocols ospf area 0 network 192.168.30.0/24

commit
save

Пример 4: Stable source для BGP peering

# Dummy для BGP peering
set interfaces dummy dum0 address 10.255.0.1/32
set interfaces dummy dum0 description 'BGP peering endpoint'

# Анонсировать dummy в IGP (OSPF)
set protocols ospf area 0 network 10.255.0.1/32

# BGP neighbors используют dummy как update-source
set protocols bgp local-as 65000
set protocols bgp parameters router-id 10.255.0.1

set protocols bgp neighbor 10.255.0.2 remote-as 65000
set protocols bgp neighbor 10.255.0.2 update-source dum0

set protocols bgp neighbor 10.255.0.3 remote-as 65000
set protocols bgp neighbor 10.255.0.3 update-source dum0

commit
save

Теперь BGP peering использует стабильный IP, который не зависит от состояния физических интерфейсов.

Пример 5: Dummy для VRF тестирования

# VRF с dummy интерфейсом
set vrf name TEST-VRF table 100

# Dummy в VRF
set interfaces dummy dum0 vrf TEST-VRF
set interfaces dummy dum0 address 192.168.100.1/24
set interfaces dummy dum0 description 'Test interface in VRF'

# Статический маршрут в VRF
set protocols vrf TEST-VRF static route 192.168.200.0/24 next-hop 192.168.100.254

commit
save

Пример 6: Anycast address на Dummy

# Anycast адрес для сервиса (например, DNS)
set interfaces dummy dum0 address 10.10.10.10/32
set interfaces dummy dum0 description 'Anycast DNS service'

# Анонсировать в OSPF
set protocols ospf area 0 network 10.10.10.10/32

# Или в BGP
set protocols bgp address-family ipv4-unicast network 10.10.10.10/32

commit
save

Теперь все роутеры с одинаковой конфигурацией анонсируют 10.10.10.10, и клиенты будут направлены к ближайшему роутеру.

Мониторинг и диагностика

Просмотр Dummy интерфейсов

# Показать все dummy интерфейсы
show interfaces dummy

# Детальная информация
show interfaces dummy dum0

# Статистика (обычно нулевая для dummy)
show interfaces dummy dum0 statistics

Проверка состояния

# Dummy должен быть всегда up
show interfaces dummy dum0

# Вывод:
# dum0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500
#     inet 192.168.255.1/32

Проверка маршрутизации

# Проверка, что dummy адрес в таблице маршрутизации
show ip route

# Ping dummy адреса (с самого роутера)
ping 192.168.255.1

# Traceroute (для проверки routing)
traceroute 192.168.255.1

Проверка в routing protocols

# OSPF - dummy в базе данных
show ip ospf database

# BGP - dummy анонсируется
show ip bgp
show ip bgp 192.168.255.1/32

# Neighbors используют dummy
show ip bgp neighbors

Логирование

# Логи интерфейсов
show log | match dum0

# Kernel messages
dmesg | grep dum

Устранение неполадок

Проблема: Dummy интерфейс не создается

Диагностика:

# Проверка конфигурации
show configuration interfaces dummy

# Проверка состояния
show interfaces dummy

Решение:

# Убедиться, что конфигурация применена
commit
save

# Проверить kernel module (обычно загружен по умолчанию)
lsmod | grep dummy

# Если нет - загрузить (обычно не требуется)
sudo modprobe dummy

Проблема: Dummy адрес недоступен с других устройств

Причина: Dummy адрес не анонсируется в routing protocol.

Решение:

# Добавить dummy в OSPF
set protocols ospf area 0 network 192.168.255.1/32

# Или в BGP
set protocols bgp address-family ipv4-unicast network 192.168.255.1/32

# Или статический маршрут на других роутерах
set protocols static route 192.168.255.1/32 next-hop 10.0.0.1

commit
save

Проблема: BGP neighbors не используют dummy как source

Диагностика:

# Проверка BGP соседей
show ip bgp neighbors

# Проверка source address в конфигурации
show configuration protocols bgp neighbor

Решение:

# Явно указать update-source
set protocols bgp neighbor 10.0.0.2 update-source dum0

# Убедиться, что dummy адрес достижим через IGP
set protocols ospf area 0 network 192.168.255.1/32

commit
save

Проблема: Blackhole routing не работает

Диагностика:

# Проверка маршрутов
show ip route 10.0.0.0/8

# Traceroute для проверки
traceroute 10.1.1.1

Решение:

Используйте blackhole вместо dummy для эффективного отбрасывания:

# Вместо:
# set protocols static route 10.0.0.0/8 interface dum0

# Используйте:
set protocols static route 10.0.0.0/8 blackhole distance 254

commit
save

Проблема: Dummy в VRF не работает

Диагностика:

# Проверка VRF
show vrf TEST-VRF

# Проверка интерфейса в VRF
show interfaces dummy dum0

Решение:

# Убедиться, что dummy привязан к VRF
set interfaces dummy dum0 vrf TEST-VRF

# Проверить routing в VRF
show ip route vrf TEST-VRF

commit
save

Лучшие практики

1. Используйте Loopback для production Router ID

Для production router ID предпочтительнее loopback:

# Лучше:
set interfaces loopback lo address 10.255.255.1/32
set protocols ospf parameters router-id 10.255.255.1

# Чем:
set interfaces dummy dum0 address 10.255.255.1/32
set protocols ospf parameters router-id 10.255.255.1

2. Dummy для временных/тестовых задач

Используйте dummy для тестирования и временных конфигураций:

set interfaces dummy dum0 address 192.168.100.1/24
set interfaces dummy dum0 description 'TEST - Remove after testing'

3. Описывайте назначение

Всегда добавляйте description:

set interfaces dummy dum0 description 'BGP peering endpoint'
set interfaces dummy dum1 description 'Test network simulation'

4. Используйте /32 для endpoint адресов

Для Router ID и stable endpoints используйте /32:

set interfaces dummy dum0 address 10.255.0.1/32

5. Blackhole через blackhole keyword

Для blackhole routing используйте встроенный blackhole:

# Предпочтительно:
set protocols static route 10.0.0.0/8 blackhole distance 254

# Вместо:
set protocols static route 10.0.0.0/8 interface dum0

6. Документируйте тестовые dummy

Документируйте все dummy интерфейсы:

# /config/dummy-interfaces.txt
# dum0: BGP peering endpoint (10.255.0.1/32)
# dum1: Test VLAN 10 simulation (192.168.10.1/24)
# dum2: Anycast DNS service (10.10.10.10/32)

7. Удаляйте неиспользуемые dummy

Очищайте конфигурацию от старых dummy:

# Удаление неиспользуемого dummy
delete interfaces dummy dum5
commit
save

8. Используйте consistent naming

Используйте последовательную схему именования:

# dum0 - Router ID / BGP endpoint
# dum1-dum9 - Test networks
# dum10+ - Special purposes

9. Мониторинг dummy использования

Отслеживайте, какие dummy используются:

show interfaces dummy
show configuration interfaces dummy

10. Безопасность

Для dummy с реальными IP не забывайте firewall:

set firewall ipv4 name LOCAL_IN rule 100 action accept
set firewall ipv4 name LOCAL_IN rule 100 destination address 192.168.255.1
set firewall ipv4 name LOCAL_IN rule 100 protocol tcp
set firewall ipv4 name LOCAL_IN rule 100 destination port 179  # BGP

Полезные команды

# Показать все dummy интерфейсы
show interfaces dummy

# Детали конкретного dummy
show interfaces dummy dum0

# Конфигурация
show configuration interfaces dummy

# Создать dummy
set interfaces dummy dum0 address 192.168.255.1/32

# Добавить описание
set interfaces dummy dum0 description 'My description'

# Удалить dummy
delete interfaces dummy dum0

# Проверка состояния
show interfaces dummy dum0

# Ping dummy адреса
ping 192.168.255.1

# Проверка в routing table
show ip route 192.168.255.1

# OSPF database
show ip ospf database | match 192.168.255.1

# BGP routes
show ip bgp 192.168.255.1/32

# Kernel interface details
ip addr show dum0

# Логи
show log | match dum

Примеры использования в реальных сценариях

Anycast DNS с Dummy

Несколько роутеров анонсируют одинаковый IP для DNS сервиса:

Роутер 1:

set interfaces dummy dum0 address 10.10.10.10/32
set protocols ospf area 0 network 10.10.10.10/32

# DNS сервер слушает на этом IP
# (настроить DNS сервер отдельно)

Роутер 2 (идентичная конфигурация):

set interfaces dummy dum0 address 10.10.10.10/32
set protocols ospf area 0 network 10.10.10.10/32

Клиенты направляются к ближайшему роутеру через OSPF metric.

Тестирование firewall rules

# Dummy имитирует защищаемую сеть
set interfaces dummy dum0 address 192.168.50.1/24
set interfaces dummy dum0 description 'Firewall test network'

# Firewall rules для dummy
set firewall ipv4 name DUMMY_IN default-action drop
set firewall ipv4 name DUMMY_IN rule 10 action accept
set firewall ipv4 name DUMMY_IN rule 10 state established
set firewall ipv4 name DUMMY_IN rule 10 state related

set interfaces dummy dum0 firewall in name DUMMY_IN

# Тестирование с другого интерфейса
# ping 192.168.50.1

Development и debugging

# Множественные dummy для development
set interfaces dummy dum0 address 172.16.0.1/24
set interfaces dummy dum0 description 'Dev: Frontend network'

set interfaces dummy dum1 address 172.16.1.1/24
set interfaces dummy dum1 description 'Dev: Backend network'

set interfaces dummy dum2 address 172.16.2.1/24
set interfaces dummy dum2 description 'Dev: Database network'

# Теперь можно тестировать routing между "сетями"
set protocols static route 172.16.1.0/24 next-hop 172.16.0.254

Заключение

Dummy интерфейсы в VyOS - это универсальный инструмент для различных задач от тестирования до production routing. Они предоставляют стабильные, всегда доступные интерфейсы без привязки к физическому оборудованию.

Основные преимущества Dummy интерфейсов:

  • Всегда в состоянии “up”
  • Не требуют физического оборудования
  • Гибкость в использовании (Router ID, BGP endpoint, blackhole, testing)
  • Простота настройки
  • Поддержка VRF

Рекомендации:

  • Используйте Loopback для production Router ID
  • Dummy для тестирования и специальных задач
  • Всегда добавляйте description
  • Документируйте назначение каждого dummy
  • Удаляйте неиспользуемые dummy
  • Используйте /32 для endpoint адресов
  • Предпочитайте blackhole keyword для blackhole routing

Dummy интерфейсы - это мощный инструмент в арсенале сетевого инженера, обеспечивающий гибкость и надежность в различных сценариях от development до production environments.