Надеюсь, что это правильное место - я первоначально разместил сообщение в Network Engineering, но оно было закрыто, и мне указали на сбой сервера.
В настоящее время я пытаюсь настроить мост L2 между двумя сайтами, используя VXLAN для обеспечения подключения L2 и Wireguard в качестве транспорта/L3. Раньше я делал подобный мост уровня 2, используя GRE через Wireguard, и он был надежным, но сейчас я пытаюсь лучше понять VXLAN и собираюсь заменить туннель GRE на VXLAN.
Я пытался использовать информацию как здесь и здесь но хоть убей меня, я не могу заставить трафик передаваться по IP-адресам без защиты проволоки между сайтами.
У меня есть две машины Debian с установленными утилитами моста. Они также используют nftables с правилами для отбрасывания всего DHCP-трафика, поскольку, когда я впервые настроил туннель GRE, я столкнулся с тем, что машины получили назначенные IP-адреса из удаленной сети. Но все остальное настроено на разрешение, и оно доступно только извне через порт Wireguard.
Хост A настроен с помощью:
Wireguard WG0 - 172.30.100.1/24
Мост бр0 - 10.0.0.160/24
Хост B настроен с помощью:
Wireguard WG0 - 172.30.100.2/24
Мост бр0 - 10.1.0.160/24
Разрешенные IP-адреса
в конфигах Wireguard только для подсети Wireguard 172.30.100.0/24
. Это работало с конфигурацией GRE, и я предполагаю, что будет работать и с VXLAN, поскольку трафик VXLAN инкапсулируется в туннеле Wireguard.
Хосты могут пинговать и ssh друг друга на своих IP-адресах Wireguard, так что этот бит работает нормально.
Оба моста имеют порт ens18
, поддержка моста vlan да
и Мост-видео 1-4096
в /etc/сеть/интерфейсы
У меня есть сценарий, основанный на «Рецепте 2» из первой ссылки, которую я разместил выше, то есть один туннель с несколькими VNI. Идея в том, что скрипт добавляет интерфейс VXLAN vx0
к бр0
, который ждет до тех пор, пока WG0
работает (используя службу systemd), а затем выполняет сопоставление VLAN/VNI.
#!/бин/баш
# Получает IP-адрес интерфейса Wireguard.
wgip=`ip as wg0 | egrep -o 'inet [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3 }' | вырезать -d'' -f2`
ip link add vx0 type vxlan dstport 4789 external local $wgip dev wg0 # Создает vxlan с IP-адресом wg0 как локальный
#Вот здесь я могу ошибаться, но я пробовал разные комбинации ^^^
спать 1
ip link set dev vx0 master br0 # Добавляет vxlan в мост
bridge link set dev vx0 vlan_tunnel on # Включает туннель vlan на vxlan
# Сопоставляет каждую VLAN с VNI через туннель.
для vlan в 10 20 30; делать
мост vlan добавить видео $vlan dev vx0
мост vlan добавить видео $vlan dev ens18
мост vlan добавить dev vx0 vid $vlan туннель_информация id $vlan
# Думаю, я могу удалить строку ниже, если я переключусь на BGP-EVPN для обучения позже?
мост fdb добавить 00:00:00:00:00:00 dev vx0 vni $vlan dst 10.1.0.160
сделано
ip link set dev vx0 up
Я могу быть совершенно на неправильном пути здесь, но если есть что-то, что выглядит не так, как указано выше, любое руководство в правильном направлении будет очень признательно!
(Это может быть даже просто маршрутизация, а не конфигурация. Конфигурация Wireguard настроена на Table = off, что я сделал в конфигурации GRE / WG)
ОБНОВИТЬ
Похоже на внешний
флаг в vx0
линия установки вызывает драмы.
Если я изменю его на приведенный ниже, а также изменю статическую запись FDB на удаленную WG0
IP, а не удаленный ens18
IP, я могу пинговать хост для хоста:
IP-ссылка добавить тип vx0 vxlan dstport 4789 vni 1000 локальный $wgip dev wg0
Тогда похоже, что нетегированный трафик проходит через VNI 1000, а VID 10, 20 и 30 сопоставляются с соответствующими VNI.
Что это внешний
флаг сделать, чтобы исходная конфигурация не работала? Это отсутствие явного отображения VID 1?