Wireguard VPN за 5 минут и настраиваем функцию Kill-Switch

Добро пожаловать на наш форум!

Спасибо за посещение нашего сообщества. Пожалуйста, зарегистрируйтесь или войдите, чтобы получить доступ ко всем функциям.


Gibby

Автор
Команда проекта

Регистрация
Сообщений
2,013
Репутация
54
Сделок
В данной статье я хотел бы описать процесс поднятия своего VPN с протоколом Wireguard с удобнным веб-интерфейсом, а так же показать, как настроить функциб kill-switch, когда блокируется весь трафик в обход VPN (работает только на Linux), у меня уже была статья про поднятие своего VPN на Wireguard, но этот метод более быстрый и удобный.

Арендуем хостинг для 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-сервера

0.png
В окне с паролем вводим пароль, который вы указали при выполнении команды установки docker-контейнера и попадаем в панель управления вашим VPN, где в удобном виде можно создавать, удалять и скачивать новые конфиги вашего VPN для подключаемых устройств.

1.png
Теперь перейдем к функции 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
 
Сверху