xtrime-ru / antizapret-vpn-docker

Docker container with antizapret-vpn for selfhosting.
MIT License
148 stars 22 forks source link

WireGuard Amnezia, guide Keenetic, etc #59

Closed Dimariqe closed 2 months ago

Dimariqe commented 2 months ago

Option to disable download az rules #41

Dimariqe commented 2 months ago

Мой пример для запуска связки wireguard amnezia + adguardhome + antizapret-vpn-docker:

services:
  antizapret-vpn:
    environment:
      - DNS=adguardhome
      - ADGUARD=1
      - OPENVPN_OPTIMIZATIONS=1
      - OPENVPN_TLS_CRYPT=1
      - OPENVPN_PORT=6841
      # EN: Do not update lists from the Internet
      # RU: Не обновлять списки из интернета
      - SKIP_UPDATE_FROM_ZAPRET=true
      # EN: Update lists once a day
      # RU: Обновлять списки раз в день
      - UPDATE_TIMER=1d
    ports:
      - "6841:1194/tcp"
      - "6841:1194/udp"
    depends_on:
      - adguardhome
    volumes:
      # EN: Clear Community-driven list, use only custom lists. Need to create empty config/include-hosts-dist.txt file
      # RU: Очистка списка сообщества, использовать только пользовательские списки. Необходимо создать пустой файл config/include-hosts-dist.txt
      # - ./config/include-hosts-dist.txt:/root/antizapret/config/include-hosts-dist.txt
  adguardhome:
    extends:
      file: docker-compose.adguard.yml
      service: adguardhome
      container_name: adguardhome
    ports:
      - "6844:3000/tcp"
      - "6845:80/tcp"
      - "6846:443/tcp"
  amnezia-wg-easy:
    environment:
      # EN: Generate your own password. Password set: TestGenPa123
      # RU: Сгенерируйте собственный пароль. Установлен пароль: TestGenPa123
      # docker run -it ghcr.io/w0rng/amnezia-wg-easy wgpw "TestGenPa123"
      - PASSWORD_HASH=$2a$12$AqgFHNWvxDtL2zfzFjkaFucWDHlmCzXNHPrUYk6wrdX6RbKTR370K
      - LANGUAGE=ru
      - PORT=6843
      - WG_PORT=6842
    ports:
      - "6842:6842/udp"
      - "6843:6843/tcp"
    extends:
      file: docker-compose.wireguard-amnezia.yml
      service: amnezia-wg-easy
Dimariqe commented 2 months ago

https://github.com/xtrime-ru/antizapret-vpn-docker/issues/54 Пример файла: docker-compose.override.yml Использую на keenetic 4.2 Beta 3, полет нормальный:

services:
  antizapret-vpn:
    environment:
      - DNS=adguardhome
      - ADGUARD=1
      - OPENVPN_OPTIMIZATIONS=1
      - OPENVPN_TLS_CRYPT=1
      - OPENVPN_PORT=6841
      # Не обновлять списки из интернета
      - SKIP_UPDATE_FROM_ZAPRET=true
      # Обновлять списки раз в день
      - UPDATE_TIMER=1d
    ports:
      - "6841:1194/tcp"
      - "6841:1194/udp"
    depends_on:
      - adguardhome
    volumes:
      # Очистка списка сообщества, использовать только пользовательские списки.
      # Необходимо создать пустой файл config/include-hosts-dist.txt
      # - ./config/include-hosts-dist.txt:/root/antizapret/config/include-hosts-dist.txt
  adguardhome:
    extends:
      file: docker-compose.adguard.yml
      service: adguardhome
      container_name: adguardhome
    ports:
      - "6844:3000/tcp"
      - "6845:80/tcp"
      - "6846:443/tcp"
  amnezia-wg-easy:
    environment:
      # Сгенерируйте собственный пароль. Установлен пароль: TestGenPa123
      # docker run -it ghcr.io/w0rng/amnezia-wg-easy wgpw "TestGenPa123"
      # Или: https://bcrypt.ninja/
      # Заменяем все $ на $$
      - PASSWORD_HASH=$$2a$$12$$J0lBSna8bUdYhx90SjOqMOtu8O.s7oojtzQE/vKYEEJFjJZ32js2W
      # Разрешить маршрутизацию всех IP адресов, в маршрутизатор в любом случае в ручном режиме добавляются маршруты
      # Таким образом можно использовать подключение для полноценного VPN
      - WG_ALLOWED_IPS=0.0.0.0/0
      # Принудительное перенаправление всех DNS (udp 53) на antizapret
      # В keenetic прописываем маршрут 77.88.8.8 (или любой друго DNS) на шлюз WG (добавление автоматичеки)
      # При падении WG, DNS работают на прямую
      - FORCE_FORWARD_DNS=true
      - LANGUAGE=ru
      - PORT=6843
      - WG_PORT=6842
    ports:
      - "6842:6842/udp"
      - "6843:6843/tcp"
    extends:
      file: docker-compose.wireguard-amnezia.yml
      service: amnezia-wg-easy

Для работы через десктоп клиент удалите строку - WG_ALLOWED_IPS=0.0.0.0/0 для установки нужных маршрутов. Для маршрутизаторов установите следующие маршруты: Маршрут до узла 77.88.8.8 через интерфейс WG (добавлять автоматически) Маршрут до сети 10.224.0.0/15 через интерфейс WG (добавлять автоматически) В интернет фильтре установите DNS 77.88.8.8

Dimariqe commented 2 months ago

Использую Cloudflared Zero Trust для того, что бы прятать веб морды от ADGuard и WGEasy, не стал описывать его в предыдущем комментарии, не понятно на сколько будет актуально для остальных. Добавляем в docker-compose.override.yml:

  cloudflare-tunnel:
    image: cloudflare/cloudflared:latest
    container_name: cloudflare-tunnel
    restart: unless-stopped
    hostname: cloudflare-tunnel
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=<CLOUDFLARE_TOKEN>

Комментируем порты для WGEasy:

    ports:
      - "6842:6842/udp"
      # Проксирую через cloudflare
      # - "6843:6843/tcp"

И для ADGuard:

    ports:
      # Проксирую через cloudflare
      # - "6844:3000/tcp"
      # - "6845:80/tcp"
      # - "6846:443/tcp"

В конфигурации Zero Trust, в созданном тоннеле вяжем по именам контейнеров: http://adguardhome:80 http://amnezia-wg-easy:6843

Dimariqe commented 2 months ago

Добавил в README.md ссылки на используемые контейнеры для VPN

Добавил инструкции для маршрутизаторов Keenetic. Осталось описать IPsec, по возможности позже опишу, и сделаю перевод на английский.

art3mHQ commented 2 months ago

failed to run this setup on ios amnezia client - just cant go to any site, no errors at containers

Dimariqe commented 2 months ago

failed to run this setup on ios amnezia client - just cant go to any site, no errors at containers

Please upload your docker-compose.override.yml or docker-compose.wireguard-amnezia.yml (depending on which Compose file you are building your application from).

art3mHQ commented 2 months ago

Please upload your docker-compose.override.yml or docker-compose.wireguard-amnezia.yml

root@localhost:~/antizapret# cat docker-compose.override.yml 
services:
  antizapret-vpn:
    environment:
      - DNS=adguardhome
      - ADGUARD=1
      - OPENVPN_OPTIMIZATIONS=1
      - OPENVPN_TLS_CRYPT=1
      - OPENVPN_PORT=6841
      # Не обновлять списки из интернета
      - SKIP_UPDATE_FROM_ZAPRET=true
      # Обновлять списки раз в день
      - UPDATE_TIMER=1d
    ports:
      - "6841:1194/tcp"
      - "6841:1194/udp"
    depends_on:
      - adguardhome
    volumes:
      # Очистка списка сообщества, использовать только пользовательские списки.
      # Необходимо создать пустой файл config/include-hosts-dist.txt
      # - ./config/include-hosts-dist.txt:/root/antizapret/config/include-hosts-dist.txt
  adguardhome:
    extends:
      file: docker-compose.adguard.yml
      service: adguardhome
      container_name: adguardhome
    ports:
      - "6844:3000/tcp"
      - "6845:80/tcp"
      - "6846:443/tcp"
  amnezia-wg-easy:
    environment:
      # Сгенерируйте собственный пароль. Установлен пароль: TestGenPa123
      # docker run -it ghcr.io/w0rng/amnezia-wg-easy wgpw "TestGenPa123"
      # Или: https://bcrypt.ninja/
      # Заменяем все $ на $$
      - PASSWORD_HASH=$$2a$$12$$J0lBSna8bUdYhx90SjOqMOtu8O.s7oojtzQE/vKYEEJFjJZ32js2W
      # Разрешить маршрутизацию всех IP адресов, в маршрутизатор в любом случае в ручном режиме добавляются маршруты
      # Таким образом можно использовать подключение для полноценного VPN
      # - WG_ALLOWED_IPS=0.0.0.0/0
      # Принудительное перенаправление всех DNS (udp 53) на antizapret
      # В keenetic прописываем маршрут 77.88.8.8 (или любой друго DNS) на шлюз WG (добавление автоматичеки)
      # При падении WG, DNS работают на прямую
      # - FORCE_FORWARD_DNS=true
      # - LANGUAGE=ru
      - PORT=6843
      - WG_PORT=6842
    ports:
      - "6842:6842/udp"
      - "6843:6843/tcp"
    extends:
      file: docker-compose.wireguard-amnezia.yml
      service: amnezia-wg-easy

copied docker-compose.wireguard-amnezia.yml from your repo

root@localhost:~/antizapret# cat docker-compose.wireguard-amnezia.yml 
services:
  antizapret-vpn:
    extends:
      file: docker-compose.yml
      service: antizapret-vpn
  amnezia-wg-easy:
    image: ghcr.io/w0rng/amnezia-wg-easy
    container_name: amnezia-wg-easy
    volumes:
      - ./.etc_wireguard_amnezia:/etc/wireguard
    devices:
      - /dev/net/tun:/dev/net/tun
    extends:
      file: docker-compose.wireguard.yml
      service: wg-easy

run by docker compose down && docker compose pull && docker compose up -d

also tried WG_ALLOWED_IPS=0.0.0.0/0 both comment and uncomment and cant see any effect

Dimariqe commented 2 months ago

copied docker-compose.wireguard-amnezia.yml from your repo

Did you copy only docker-compose.wireguard-amnezia.yml? For this to work, you also need to update wireguard/entrypoint.sh and docker-compose.wireguard.yml. I recommend installing the entire script from my repository:

docker compose down
cd ~
git clone https://github.com/Dimariqe/antizapret-vpn-docker.git antizapret-test
cd antizapret-test
nano docker-compose.override.yml
docker compose pull && docker compose up -d

PS: If docker encounters any errors, I recommend clearing the cache: docker system prune Also pay attention to these lines:

      # Не обновлять списки из интернета
      - SKIP_UPDATE_FROM_ZAPRET=true
      # Обновлять списки раз в день
      - UPDATE_TIMER=1d

Without docker build they will not work. They remove the update of the lists of blocked sites. You can simply delete them.

WG_ALLOWED_IPS=0.0.0.0/0 will redirect all traffic through VPN. Comment out the line so that only sites from the lists are redirected

art3mHQ commented 2 months ago

everything works fine when clone from your repo, both keenetic and ios, thank you very much