В данной статье я хотел бы описать процесс поднятия своего VPN с протоколом Wireguard с удобнным веб-интерфейсом, а так же показать, как настроить функциб kill-switch, когда блокируется весь трафик в обход VPN (работает только на Linux), у меня уже была статья про поднятие своего VPN на Wireguard, но этот метод более быстрый и удобный.
Арендуем хостинг для VPN на ОС debian 11 или ubuntu 20.04/22.04 и подключаемся к нему по SSH командой:
Обновляем сервер командами:
Устанавливаем Docker по инструкции с официального сайта (https://docs.docker.com/engine/install/debian/)
Теперь установим Wireguard следующей командой:
После этого перезагружаем сервер командой
Снова подключаемся к серверу по SSH после перезагрузки и пишем следующую команду для установки docker-контейнера с VPN:
После этого ждем окончания процесса установки, если всё прошло без ошибок, то открываем браузер и в адресной строке вводим адрес вашего сервера (не забудьте настроить SSL-сертификат), если у вас нет домена и вы используете IP (не рекомендуется), то введите IP-адрес сервера и порт 51821, должно получиться в таком виде: 123.123.123.123:51821 (заменить 123.123.123.123 на IP вашего сервера), соглашаемся с риском и попадаем на страницу с веб-интерфейсом вашего VPN-сервера
В окне с паролем вводим пароль, который вы указали при выполнении команды установки docker-контейнера и попадаем в панель управления вашим VPN, где в удобном виде можно создавать, удалять и скачивать новые конфиги вашего VPN для подключаемых устройств.
Теперь перейдем к функции VPN kill-switch, создаем конфиг для вашего Linux-устройства, скачиваем файл формата .conf и открываем его в любом текстовом редакторе
В блоке [Interface] вставляем следующие строчки, которые при запуске VPN изменят правила в iptables, чтобы весь трафик в обход VPN блокировался:
Должно получиться примерно следюущим образом:
Сохраняем изменения в файле и переносим его в папку /etc/wireguard и после этого можем запускать наш VPN командой:
Теперь рассмотрим, как сделать, чтоб наш VPN запускался автоматически при старте системы, для этого вводим в терминале команду:
Перезапускаем системные демоны командой:
Запускаем наш VPN-демон командой
После этого при старте системы наш VPN будет автоматически запускаться
На этом гайд завершен, таким образом мы получили собственный VPN на протоколе Wireguard с удобдным веб-интерфейсом и научились добавлять функцию kill-switch к нашему VPN-конфигу
При желании к данному VPN так же можно установить блокировщик различных трекеров Pi-Hole, а к веб-интерфейсу добавить SSL-сертификат от Let’s Encrypt
Арендуем хостинг для VPN на ОС debian 11 или ubuntu 20.04/22.04 и подключаемся к нему по SSH командой:
Код:
ssh root@ip_адрес_сервера
Обновляем сервер командами:
Код:
sudo apt update
Код:
sudo apt full-upgrade -y
Устанавливаем Docker по инструкции с официального сайта (https://docs.docker.com/engine/install/debian/)
Теперь установим Wireguard следующей командой:
Код:
sudo apt install wireguard
После этого перезагружаем сервер командой
Код:
reboot
Снова подключаемся к серверу по SSH после перезагрузки и пишем следующую команду для установки docker-контейнера с VPN:
Код:
docker run -d \
--name=wg-easy \
-e WG_HOST=доменное имя вашего сервера/IP сервера \
-e WG_DEFAULT_DNS=9.9.9.9 \
-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
После этого ждем окончания процесса установки, если всё прошло без ошибок, то открываем браузер и в адресной строке вводим адрес вашего сервера (не забудьте настроить SSL-сертификат), если у вас нет домена и вы используете IP (не рекомендуется), то введите IP-адрес сервера и порт 51821, должно получиться в таком виде: 123.123.123.123:51821 (заменить 123.123.123.123 на IP вашего сервера), соглашаемся с риском и попадаем на страницу с веб-интерфейсом вашего VPN-сервера
В окне с паролем вводим пароль, который вы указали при выполнении команды установки docker-контейнера и попадаем в панель управления вашим VPN, где в удобном виде можно создавать, удалять и скачивать новые конфиги вашего VPN для подключаемых устройств.
Теперь перейдем к функции VPN kill-switch, создаем конфиг для вашего Linux-устройства, скачиваем файл формата .conf и открываем его в любом текстовом редакторе
В блоке [Interface] вставляем следующие строчки, которые при запуске VPN изменят правила в iptables, чтобы весь трафик в обход VPN блокировался:
Код:
PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
Должно получиться примерно следюущим образом:
Код:
[Interface]
PrivateKey = abcdefghijklmnopqrstuvwxyz0123456789=
Address = 172.x.y.z/32
DNS = 1.1.1.1
PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT && ip6tables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
[Peer]
PublicKey = JPT1veXLmasj2uQDstX24mpR7VWD+GmV8JDkidkz91Q=
Endpoint = 172.x.y.z/32:2049
AllowedIPs = 0.0.0.0/0
Сохраняем изменения в файле и переносим его в папку /etc/wireguard и после этого можем запускать наш VPN командой:
Код:
sudo wg-quick up название_файла_конфигурации
Теперь рассмотрим, как сделать, чтоб наш VPN запускался автоматически при старте системы, для этого вводим в терминале команду:
Код:
sudo systemctl enable wg-quick@название_файла_конфигурации.service
Перезапускаем системные демоны командой:
Код:
sudo systemctl daemon-reload
Запускаем наш VPN-демон командой
Код:
sudo systemctl start wg-quick@название_файла_конфигурации
После этого при старте системы наш VPN будет автоматически запускаться
На этом гайд завершен, таким образом мы получили собственный VPN на протоколе Wireguard с удобдным веб-интерфейсом и научились добавлять функцию kill-switch к нашему VPN-конфигу
При желании к данному VPN так же можно установить блокировщик различных трекеров Pi-Hole, а к веб-интерфейсу добавить SSL-сертификат от Let’s Encrypt