Поднимаем разные виды VPN в Docker!

Часто вижу статьи про VPN, думаю настало время и мне написать про VPN.

Для успешной установки нужно уметь подключаться к серверу linux по ssh.

Начнем с установки Docker на Linux.

curl -fsSL https://get.docker.com -o get-docker.sh - Скачаем скрипт. sudo sh get-docker.sh - Запустим установку.

L2TP + IPSEC

Этот тип VPN поддерживается из коробки почти все ОС, роутеры. Качаем!

docker pull hwdsl2/ipsec-vpn-server

Теперь создаем файл vpn.env, и копируем туда наши настройки

# Note: All the variables to this image are optional. # See README for more information. # To use, uncomment and replace with your own values. # Define IPsec PSK, VPN username and password # - DO NOT put "" or '' around values, or add space around = # - DO NOT use these special characters within values: \ " ' VPN_IPSEC_PSK=Генерируем 25 символов, буквы, цифры VPN_USER=user #Дефолтный логин (юзер), будет создан автоматически VPN_PASSWORD=passwrod #Дефолтный пароль, будет создан автоматически # Define additional VPN users # - DO NOT put "" or '' around values, or add space around = # - DO NOT use these special characters within values: \ " ' # - Usernames and passwords must be separated by spaces VPN_ADDL_USERS=user1 user2 #если нужно создать еще юзеров VPN_ADDL_PASSWORDS=user1pass user2pass #пароли юзеров # Use a DNS name for the VPN server # - The DNS name must be a fully qualified domain name (FQDN) # VPN_DNS_NAME=vpn.example.com # Use alternative DNS servers # - By default, clients are set to use Google Public DNS # - Example below shows Cloudflare's DNS service VPN_DNS_SRV1=8.8.8.8 VPN_DNS_SRV2=1.0.0.1

Осталось запустить VPN, из папки в которой находится vpn.env

docker run \ --name ipsec-vpn-server \ --env-file ./vpn.env \ --restart=always \ -v /lib/modules:/lib/modules:ro \ -p 500:500/udp \ -p 4500:4500/udp \ -d --privileged \ hwdsl2/ipsec-vpn-server

Теперь создадим подключение из командной строки windows

Add-VpnConnection -Name 'l2tp-vpn' -ServerAddress 'IP сервера' -L2tpPsk 'ключ 25 символов который' -TunnelType L2tp -EncryptionLevel Required -AuthenticationMethod Chap,MSChapv2 -Force -RememberCredential -PassThru

В windows при подключении возможно появится ошибка, запустим командную строку и починим.

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

Перезапускаем ПК и можно подключаться. Плюсы клиент VPN не нужен, все есть из коробки, быстрый VPN, можно даже играть в игры, я играл. Если работает, значит протокол не заблокирован. Идем дальше.

Wireguard

Вчера еще писали про данный image с веб мордой, я напишу тоже. Качаем!

docker pull weejewel/wg-easy

Запускаем VPN

docker run -d \ --name=wg-easy \ -e WG_HOST=IP_сервера \ -e PASSWORD=Пароль_от_админки \ -v ~/.wg-easy:/etc/wireguard \ -p 51820:51820/udp \ -p 51821:51821/tcp \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \ --sysctl="net.ipv4.ip_forward=1" \ --restart unless-stopped \ weejewel/wg-easy

Все :) Можно подключаться к веб морде по адресу http://ip:51821

Порты можно поменять на свои, например tcp это порт админки, udp порт vpn. Важно менять порты до двоеточия, после не трогать! Поехали дальше.

Pritunl

Это комбайн с веб мордой, есть OpenVPN и WireGuard. Для OpenVPN можно юзать любой клиент, а вот для WireGuard у них есть свой клиент, который работает с первым и вторым типом VPN. Качаем.

docker pull jippi/pritunl:1.30.3157.70

Создаем необходимые папки и файлы, иначе VPN выдаст ошибку.

​mkdir -p /opt/pritunl/{mongodb,pritunl} touch /opt/pritunl/pritunl.conf

И запускаем.

docker run \ --name=pritunl \ --detach \ --privileged \ --network=host \ --restart=always \ -v /opt/pritunl/mongodb:/var/lib/mongodb \ -v /opt/pritunl/pritunl:/var/lib/pritunl \ -v /opt/pritunl/pritunl.conf:/etc/pritunl.conf \ jippi/pritunl:1.30.3157.70

Запуск долгий, ждем пока в процессах появится pritunl-web и переходим по ссылке https://ip-вашего-сервера. Браузер сразу выдаст сообщение что сертификат ненадежный, но игнорируем и переходим по ссылке.

Логин и пароль: pritunl

Если логин и пароль не подходит, пишем в консоли команду и получаем новый

docker exec pritunl pritunl default-password

Получаем пароль и идем в админку и создаем сервера и привязываем организации, разберетесь, в гугле инфы много :)

ShadowSocks

Ну и ластовый тип можно сказать VPN, хотя это шифрованный прокси. Пофиг.

Качаем!

docker pull acrisliu/shadowsocks-libev

Запускаем

docker run -d --name=shadowsocks-libev -p 8388:8388/tcp -p 8388:8388/udp --restart=always acrisliu/shadowsocks-libev

Опять же порты можно поменять на свои, до двоеточий! ShadowSocks без v2ray плагина, он работает! Но есть возможность запустить и с ним, инфа. Клиенты shadowsocks можно посмотреть тут.

По поводу сервера linux, даже в РФ есть сервера без фильтров ркн, не обязательно бежать в европу, это для тех кому важен пинг, ищите и найдете.

Все, юзайте, делитесь с товарищами, в общем дерзайте. Пока.

P.S если что пишите в личку, исправлю ошибачки!

4343
20 комментариев