L2Bridge — кроссплатформенное приложение для объединения удалённых Ethernet-сегментов в единую виртуальную L2-сеть поверх UDP. Соединения защищены криптографической аутентификацией, а передаваемый трафик шифруется.
Лог изменений
Блок схема взаимодействия

Справка по ключам
| ПАРАМЕТРЫ ДЛЯ РЕЖИМА СЕРВЕРА | |
-server |
Активировать режим выделенного L2-коммутатора (сервера) |
-host string |
Сетевой интерфейс для привязки сокета (дефолт: «0.0.0.0») |
-port string |
UDP порт для приема подключений (дефолт: «25000») |
-pool string |
Диапазон виртуальных IP для выдачи узлам (дефолт: «10.50.0.0/16») |
-bwl string |
Лимит пропускной способности общий/на клиента в Мбит/с (дефолт: 10/3) |
-key string |
Приватный ключ сервера Ed25519 в Hex (32 байта/64 символа) |
| ПАРАМЕТРЫ ДЛЯ РЕЖИМА КЛИЕНТА | |
-remote string |
IP или домен сервера (дефолт: зашит в программу). Порт можно не указывать (дефолт: 25000) |
-room string |
Идентификатор игровой комнаты для изоляции трафика (дефолт: «PUBLIC») |
| ПАРАМЕТРЫ ОТЛАДКИ | |
-debug |
Включить подробные отладочные логи |
| ВНУТРЕННИЕ СИСТЕМНЫЕ ПАРАМЕТРЫ | |
-service |
Используется ОС при автозапуске в качестве службы Windows |
| ИНФОРМАЦИОННЫЕ | |
-help |
Справка по ключам |
-verison |
Версия сборки |
L2-сеть
- Unicast
- Broadcast
- Multicast
- Unknown Unicast
- MAC learning
- Forwarding Database (FDB)
Виртуальные комнаты
Изоляция подключений с помощью RoomID. Каждая комната представляет собой отдельную виртуальную L2-сеть, поэтому клиенты разных комнат не видят трафик друг друга.
Блок схема комнат

Защищённый транспорт
- Ed25519 handshake
- X25519 ECDH
- ChaCha20-Poly1305
- SessionID validation
- MachineID binding
Управление трафиком
- Ограничение пропускной способности
- Ограничение PPS для клиентов и сервера
- Ограничение L2 Flood-трафика
- Token Bucket
- Контроль burst-нагрузки
- Защита от злоупотреблений
IPv4 / IPv6
- IPv4
- IPv6
- Dual-stack UDP
- Поддержка нескольких публичных IP-адресов сервера
Windows
Запуск cервера
Терминал:
C:\l2bridge_windows_amd64.exe -server -port 25000 -pool 10.50.0.0/16
Службы:
sc create L2Bridge binPath="C:\l2bridge_windows_amd64.exe -server -port 25000 -pool 10.50.0.0/16 -service" start=auto && sc start L2Bridge
Запуск клиента
Терминал:
C:\l2bridge_windows_amd64.exe -remote 1.2.3.4:25000 -room test
Службы:
sc create L2Bridge binPath="C:\l2bridge_windows_amd64.exe -remote 1.2.3.4:25000 -room test -service" start=auto && sc start L2Bridge
Ярлык:
"C:\l2bridge_windows_amd64.exe" -remote 1.2.3.4:25000 -room test
Создание ярлыка

Linux
Запуск cервера
Терминал:
sudo ./l2bridge_linux_amd64 -server -port 25000 -pool 10.50.0.0/16
Systemd > /etc/systemd/system/l2bridge.service:
[Unit]
Description=L2 Bridge Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
LogsDirectory=%N
LogsDirectoryMode=0750
ExecStart=/usr/bin/l2bridge_linux_amd64 -server
Restart=always
RestartSec=3
StandardOutput=append:/var/log/%N/%N.log
StandardError=append:/var/log/%N/%N-error.log
[Install]
WantedBy=multi-user.target
Запуск клиента
Терминал:
sudo ./l2bridge_linux_amd64 -remote 1.2.3.4:25000 -room "test"
Кнопка запуска:
sudo /usr/local/bin/l2bridge_linux_amd64 -room test
Создание кнопки запуска

