Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

AWG_DOCKER_NET_BIND_FAIL Сетевое оборудование и VPN

AmneziaWG: Ошибка привязки контейнера amnezia-wireguard к сети хоста

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка Docker при запуске: docker: Error response from daemon: driver failed programming external connectivity on endpoint amnezia-wireguard: Bind for 0.0.0.0:51820 failed: port is already allocated.
  • Контейнер падает с ошибкой: RTNETLINK answers: Operation not permitted при создании сетевого интерфейса.
  • Служба не может получить доступ к внешнему интерфейсу хоста для трансляции NAT/MASQUERADE.

1. Поиск конфликтующих процессов, занимающих порт

# Проверка занятости UDP порта
ss -ulnp | grep 51820
lsof -i UDP:51820

Если порт занят системным WireGuard или другим контейнером, остановите службу: systemctl stop wg-quick@*.

2. Настройка необходимых Linux Capabilities в Docker Compose

AmneziaWG требует расширенных прав для взаимодействия с подсистемами маршрутизации ядра:

version: '3.8'
services:
  amnezia-wireguard:
    image: amneziavpn/amnezia-wireguard:latest
    container_name: amnezia-wireguard
    restart: always
    network_mode: "host"
    cap_add:
      - NET_ADMIN
      - NET_RAW
    volumes:
      - /etc/amnezia/amnezia-wireguard:/etc/amnezia/amnezia-wireguard
      - /lib/modules:/lib/modules:ro
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1

3. Включение форвардинга пакетов на хосте

sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.d/99-amnezia.conf
sysctl --system

4. Перезапуск сетевого демона Docker

systemctl restart docker
docker compose down && docker compose up -d
💡 Практика специалистов: При использовании Ubuntu с активированным AppArmor убедитесь, что Docker профиль не блокирует вызовы mount для сетевых пространств имен (network namespaces).

Частые вопросы (FAQ)

Зачем контейнеру AmneziaWG нужен режим network_mode: 'host'?

Режим host позволяет контейнеру напрямую создавать сетевые интерфейсы awg0 в пространстве имен ядра хоста и избегать двойной трансляции оверхеда Docker bridge.

Что означает ошибка RTNETLINK answers: Operation not permitted в Docker?

Это означает отсутствие capability NET_ADMIN у контейнера. Docker блокирует системные вызовы ip link и iptables без этой директивы.

Нужно ли пробрасывать /lib/modules в контейнер?

Да, если сервер использует kernel-модуль kmod-amneziawg, контейнеру необходим доступ к модулям ядра хоста для выполнения modprobe.

Как изменить порт AmneziaWG в Docker без пересоздания контейнера через приложение?

Отредактируйте переменную ListenPort в файле конфигурации awg0.conf и перезапустите контейнер командой docker restart amnezia-wireguard.

Полезные материалы
Рекомендуем