Skip to main content

Туннелирование трафика через контроллер (Central Switching)

Страница перенесена в Confluence

Платформа Wimark One поддерживает туннелирование пользовательского трафика на уровне L2 - server breakout в трех режимах:

  1. L2TP over IPSec (aes256) (когда нужно прохождение NAT)
  2. L2TP over IPSec (без шифрования) (когда нужно прохождение NAT)
  3. L2TP (когда контроллер в одной L3 сети без NAT)

Настройка интерфейсов контроллера для Central Switching (L2)


Общая схема:

IPsec:


image.png

С выключенным IPsec:

image.png


Для работы этих режимов следует настроить сервер следующим образом.

  1. Включить форвардинг трафика на сервере (важно! - включить форвардинг/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):

image

6. Привязать WLAN к радиоинтерфейсу в настройках CPE.

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