Часто вижу статьи про 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.envdocker 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Теперь создадим подключение из командной строки windowsAdd-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Запускаем VPNdocker 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 если что пишите в личку, исправлю ошибачки!