Docker
Требования к хосту:
Заголовок раздела «Требования к хосту:»- Linux kernel: >= 6.6
Docker compose
Заголовок раздела «Docker compose»-
Создайте директорию со следующей структурой:
Директорияedvpn
- docker-compose.yml
- .env
Директорияssl/
- …
-
Отредактируйте файл конфигурации
.env. Подробное описание всех параметров доступно в разделе Конфигурация.# Email для уведомлений Let's EncryptLETSENCRYPT_EMAIL=example@example.comVPN_CIDR='10.13.0.0/24'PROXY_CIDR='10.14.0.0/16'DNS_UPSTREAM='1.1.1.1:53'CERT_ENABLED=true#ADDR=0.0.0.0:443DOMAIN=vpn.example.comCERT_FILE=/etc/edvpn/ssl/live/vpn.example.com/fullchain.pemKEY_FILE=/etc/edvpn/ssl/live/vpn.example.com/privkey.pem#PRIVATE_ADDR=0.0.0.0:8443PRIVATE_DOMAIN=admin.example.comPRIVATE_CERT_FILE=/etc/edvpn/ssl/live/vpn.example.com/fullchain.pemPRIVATE_KEY_FILE=/etc/edvpn/ssl/live/vpn.example.com/privkey.pemecho "LOCAL_ADMIN='$(htpasswd -nbB "admin" "password")'" >> .env -
Отредактируйте файл
docker-compose.yml:services:egvpn:image: exploitdog/edvpn:1.0.0container_name: egvpnnetwork_mode: hostcap_add:- NET_ADMIN- BPFdevices:- /dev/net/tun:/dev/net/tunvolumes:- db:/var/lib/edvpn- pki:/etc/edvpn/pki- ./ssl:/etc/edvpn/sslenv_file:- .envrestart: unless-stoppeddepends_on:certbot:condition: service_completed_successfullycertbot:image: certbot/certbotcontainer_name: certbothostname: certbotenv_file:- .envvolumes:- ./ssl:/etc/letsencryptports:- 80:80command: certonly --non-interactive --keep-until-expiring --standalone --preferred-challenges http --agree-tos --email ${LETSENCRYPT_EMAIL} -d ${DOMAIN} -d ${PRIVATE_DOMAIN}volumes:db:pki: -
Запустите приложение:
docker compose up -d -
Включите пересылку IPv4-пакетов между интерфейсами:
sysctl -w net.ipv4.ip_forward=1 -
Если нужен выход в интернет, настройте NAT (маскарадинг):
- VPN подсеть:
10.13.0.0/24(из env:VPN_CIDR) - Интерфейс выхода:
ens3
iptables -t nat -A POSTROUTING -s 10.13.0.0/24 -o ens3 -j MASQUERADE - VPN подсеть: