WireGuard VPN Client/Server
Настройка WireGuard VPN Клиент/Сервер
Установка VPN клиента
sudo apt install resolvconf -y
sudo apt install wireguard -y
sudo touch /etc/wireguard/wg0.conf && sudo chmod 600 -R /etc/wireguard/
Создание конфигурационного файла
sudo tee /etc/wireguard/wg0.conf << 'EOF'
[Interface]
PrivateKey = <>
Address = 10.8.0.3/24
DNS = 1.1.1.1
[Peer]
PublicKey = <>
PresharedKey = <>
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 0
Endpoint = x.x.x.x:51820
EOF
Значения PrivateKey, PublicKey, PresharedKey берутся из файла конфигурации, созданного средствами VPN сервера.
Запуск VPN клиента
sudo wg-quick up wg0
После запуска VPN клиента активируется сетевой интерфейс и у ВМ изменится IP адрес.
Мы потеряем текущее SSH подключение и к ВМ и нужно будет подключиться по локальному IP внутри VPN сети.
Проверка статуса VPN
sudo wg show
Отключение VPN канала
sudo wg-quick down wg0
Мы вновь потеряем текущее SSH подключение и к ВМ и нужно будет подключиться по публичному IP.
Установка wg-easy VPN Server Docker
Остановка/Удаление старых контейнеров/образов
docker stop wg-easy docker rm wg-easy docker pull ghcr.io/wg-easy/wg-easy docker rmi
Генерация bcrypt hash для создания пароля к Web Интерфейсу
docker run -it ghcr.io/wg-easy/wg-easy wgpw Password
PASSWORD_HASH='<pass>'
Первичный запуск и преднастройка нового VPN сервера
docker run -d \
--name=wg-easy \
-e LANG=en \
-e WG_HOST=x.x.x.x \
-e PASSWORD_HASH='<pass>' \
-e PORT=51821 \
-e WG_PORT=51820 \
-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 \
ghcr.io/wg-easy/wg-easy
Проверка корректности отправки docker скрипта и HASH-а пароля
docker inspect \
--format "$(curl -s https://gist.githubusercontent.com/efrecon/8ce9c75d518b6eb863f667442d7bc679/raw/run.tpl)" \
wg-easy
Расположение конфигурации клиентов
/home/xeon/.wg-easy/wg0.conf