Туннелирование трафика через контроллер (Central Switching)
Платформа Wimark One поддерживает туннелирование пользовательского трафика на уровне L2 - server breakout в трех режимах:
- L2TP over IPSec (aes256) (когда нужно прохождение NAT)
- L2TP over IPSec (без шифрования) (когда нужно прохождение NAT)
- L2TP (когда контроллер в одной L3 сети без NAT)
Настройка интерфейсов контроллера для Central Switching (L2)
Общая схема:
IPsec:
С выключенным IPsec:
Для работы этих режимов следует настроить сервер следующим образом.
- Включить форвардинг трафика на сервере (важно! - включить форвардинг/promiscius mode нужно на всех хостовых виртуализаторах, если контроллер развернут в виртуальной среде):
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -P FORWARD ACCEPT
sudo iptables -I FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Сохранить настройки форвардинга после перезагрузки:
# В файле /etc/sysctl.conf раскомментировать строку (убрать #) и сохранить файл
net.ipv4.ip_forward=1
# выполнить
sysctl -p /etc/sysctl.conf
# Сохранить правила iptables для запуска после перезагрузки контроллера, установив пакет:
sudo apt-get install iptables-persistent
2. Установить пакет для VLAN (если требуется)
sudo apt install vlan
sudo modprobe --first-time 8021q
# Проверить:
modinfo 8021q
3. Отредактировать файл (пример для транкового порта в контроллер с управлением native vlan и пользовательским VLAN30). Создается новый bridge br30 с vlan интерфейсом.
sudo nano /etc/netplan/00-installer-config.yaml
network:
ethernets:
enp1s0:
dhcp4: true
version: 2
vlans:
enpls0.30:
id: 30
link: enp1s0
dhcp4: false
bridges:
br30:
interfaces: [ enpls0.30 ]
sudo netplan apply
Дополнительные пункты если нужна маршрутизация (L3)
! Опционально: Для конфигурации локального dhcp-сервера и маскарадинга с терминацией в локальный внешний интерфейс туннельного менеджера.
Альтернативный способ создания бриджа, без использования netplan:
3.1 Создаем бридж интерфейс с помощью утилиты brctl
#Устанавливаем утилиту
apt install brctl -y
#Создаем бридж интерфейс
brctl addbr br-clients
#Навешиваем на бридж ip-адрес
ip a a 10.10.0.1/24 dev br-clients
#Поднимаем интерфейс
ip link set dev br-clients up
3.2 Конфигурируем dnsmasq для раздачи адресов клиентам терминации
#Отключаем, если конфликтует, systemd-resolved
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
#Так же удаляем конфигурационный файл
cp /etc/resolv.conf /etc/resolv.conf.bak
ls -lh /etc/resolv.conf
unlink /etc/resolv.conf
#Создаем новый файл конфигурации
echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf
#Устанавливаем dnsmasq
apt install dnsmasq -y
#Правим файл конфигурации dnsmasq
vim /etc/dnsmasq.conf
Минимальный набор файла конфигурации:
interface=br-clients #Созданный на шаге 3.1 интерфейс
bind-interfaces #Указываем слушать только назначенный интерфейс
dhcp-range=10.10.0.10,10.10.0.150,12h #Пул адресов для клиентов
dhcp-option=1,255.255.255.0 #Маска, сообщаемая клиентам
dhcp-option=3,10.10.0.1 #Шлюз по умолчанию, адрес, который навесили на бридж
3.3 Настраиваем маскарадинг:
#Создаем правило для маскарадинга, исключая ipsec-подсеть и указывая внешний интерфейс (eth0 в примере)
iptables -t nat -A POSTROUTING ! -s 10.9.0.1/16 -o eth0 -j MASQUERADE
#Перечитываем конфиг iptables
ufw reload
#Проверяем правило
iptables -t nat -vL
4. Выполнить перезагрзку tunnel manager (либо новый мост br30 сам добавиться в контроллер через 10 минут):
sudo su
docker restart $(docker ps | grep tunnel | awk '{ print $1;}')
5. Создать WLAN с L2TP на br30(или на br-clients):

6. Привязать WLAN к радиоинтерфейсу в настройках CPE.
7. Теперь в VLAN 30(или br-clients) на контроллере у вас будет L2 трафик конечных радио интерфейсов