Neonode.cc - Mind space blog
open main menu
Part of series: docker-guides

Настройка IPv6 для 3x-ui в Docker с использованием bridge-сети

/ 2 min read

Введение

Когда я начал использовать 3x-ui в Docker, столкнулся с проблемой настройки IPv6 при использовании bridge-сети. Docker по умолчанию не поддерживает IPv6 в bridge-сетях, хотя в host-сети всё работает как надо. Чтобы обойти это ограничение и задействовать возможности IPv6 в bridge-сетях, я подготовил это руководство.

Шаги по настройке

1. Включение поддержки IPv6 в Docker

Первым делом, необходимо включить поддержку IPv6 в Docker. Для этого нужно отредактировать конфигурацию Docker. Откройте или создайте файл /etc/docker/daemon.json и добавьте в него следующие параметры:

{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

Этот блок активирует IPv6 и задаёт фиксированную подсеть для контейнеров. Вы можете указать собственный диапазон IPv6-адресов вместо 2001:db8:1::/64, если у вас есть другие требования.

2. Перезапуск Docker

Чтобы изменения вступили в силу, необходимо перезапустить сервис Docker:

sudo systemctl restart docker

3. Создание bridge-сети с поддержкой IPv6

Следующий шаг — создание новой сети с поддержкой IPv6. Я предпочитаю называть сети так, чтобы сразу было понятно, для чего они предназначены. Например:

docker network create --ipv6 --subnet "2001:db8:1::/64" my-ipv6-network

Замените 2001:db8:1::/64 на свой диапазон, если используете другой. Это поможет интегрировать ваши контейнеры в вашу инфраструктуру.

4. Запуск контейнера с использованием новой сети

Теперь можно запустить контейнер 3x-ui, подключив его к созданной IPv6 bridge-сети:

docker run --network my-ipv6-network -d your-container-image

Ваш контейнер будет автоматически настроен на получение IPv6-адреса и сможет обрабатывать трафик через IPv6.


Пример Docker Compose файла для работы с IPv6 и IPv4

Ниже приведён пример файла docker-compose.yml, который одновременно использует IPv6 и IPv4 для контейнера 3x-ui. Вместо network_mode: host, мы создаём пользовательскую сеть с поддержкой обоих протоколов:

version: "3.9"
services:
  3x-ui:
    image: ghcr.io/mhsanaei/3x-ui:latest
    container_name: 3x-ui
    hostname: yourhostname
    volumes:
      - $PWD/db/:/etc/x-ui/
      - $PWD/cert/:/root/cert/
    environment:
      XRAY_VMESS_AEAD_FORCED: "false"
    tty: true
    networks:
      - my-ipv6-network
    restart: unless-stopped

networks:
  my-ipv6-network:
    driver: bridge
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: "2001:db8:1::/64"  # IPv6 подсеть
        - subnet: "192.168.1.0/24"   # IPv4 подсеть

Описание

  • В данном файле мы создаём контейнер 3x-ui, который будет использовать сеть с поддержкой как IPv4, так и IPv6.
  • Определены две подсети: 2001:db8:1::/64 для IPv6 и 192.168.1.0/24 для IPv4.
  • Контейнер будет автоматически получать как IPv4, так и IPv6 адреса.

Заключение

Теперь ваш 3x-ui контейнер в Docker работает с поддержкой IPv6 и IPv4 в bridge-сети. Настройка IPv6 и добавление поддержки обоих протоколов через Docker Compose делает инфраструктуру более гибкой и готовой к будущим требованиям. Если у вас возникнут вопросы или проблемы, всегда можно обратиться к документации Docker или оставить комментарий. Настройка сети с поддержкой обоих протоколов — это шаг к более универсальной инфраструктуре.