moder
Администратор
Команда форума
Данный инструмент не предназначен для обхода блокировок запрещенных сайтов - с его помощью можно ускорить доступ к незапрещенным сайтам, в случае их плохой доступности на мобильном интернете.
WireGuard будет работать даже в тех случаях, когда обычный VPN не справляется или когда у провайдера проблемы с DNS.
Если ваш виртуальный сервер размещен в РФ, то он будет блокировать доступ к запрещенным сайтам и, в то же время, ускорять доступ к сайтам или сервисам, которые без впн работают медленно. Например, к Ютубу.
Причины, зачем может понадобиться свой WireGuard туннель:
Если у вас нет опыта в администрировании, пишите в теме - распишу подробнее шаг за шагом. Важная обратная связь, чтобы понимать, что инструкцией будут пользоваться.
Инструкция будет для Ubuntu, поскольку эта самая популярная на сегодня сборка Linux.
Инструкция по настройке WireGuard
WireGuard требует наличие iptables.
Проверить наличие iptables на сервере можно командой
Если iptables нет, то устанавливаем командой
Установка WireGuard
Проверить установку можно командой
Должно вывести что-то вроде этого:
Настройка WireGuard на сервере
Создаем приватный и публичный ключи сервера:
Далее создаем конфиг wg0.conf
/etc/wireguard/wg0.conf
В конфиге прописываем
Если не знаете какой у вас сетевой интерфейс (eth или ens), то можно узнать командой
Примерный вывод:
Соответственно, в этом случае в конфиге прописываем ens1 :
Включаем Ip-forwarding:
Либо можно вручную раскомментировать строчку "net.ipv4.ip_forward=1" в конфиге.
Применяем изменения:
Проверить можно командой
Добавляем правило для сетевого интерфейса ens1 (заменить на ваш):
Добавляем правила для форвардинга:
Запускаем WireGuard
Проверить, что WireGuard запущен можно командой
Теперь создаем клиентские ключи, чтобы к серверу можно было подключиться извне.
Публичный ключ нам не нужен (он создается автоматически на клиенте), а приватный можно получить командой:
Настройка WireGuard на клиенте (ваш смартфон или компьютер, с которого подключаемся к серверу)
Для этого понадобится приватный ключ клиента, полученный шагом ранее, IP адрес сервера и публичный ключ сервера (получить можно командой
Для Windows качаем программу с сайта wireguard.com.
Создаем на компьютере конфигурационный файл wireguard.conf.
Прописываем в него следующее содержимое.
В программе нажимаем "добавить туннель" и загружаем созданный файл.
Если трафик не идет, то можно попробовать удалить строчку "DNS = 1.1.1.1" из конфига.
Для Android устанавливаем приложение WireGuard.
В приложении создаем туннель и загружаем конфигурационный файл.
Если вам неудобно переносить конфигурационный файл на телефон, то выбираем пункт "создать с нуля".
В настройках интерфейса вводим приватный ключ клиента, в настройках пира - публичный ключ сервера и IP адрес сервера. Если не заработает, в поле DNS-серверы можно попробовать прописать 1.1.1.1.
Примерная конфигурация:
Диагностика
Если трафик не передается, то проверьте NAT на сервере:
Если пусто — значит нет выхода в интернет, клиент не сможет получить доступ.
Включить можно командой
Также возможно, что на сервере включен ufw и он блокирует трафик.
Проверить можно командой:
Если ufw включен, то его нужно отключить либо настроить для работы с WireGuard.
Настройка.
Также может быть конфликт с Docker - он ставит собственные iptables-правила и может поломать NAT.
Чтобы исключить вмешательство Docker в iptables, добавьте в файле /etc/docker/daemon.json
Перезапускаем Docker:
Если не получается, пишите в теме.
Если трафик WireGuard блокируется провайдером - напишите ваш регион и название провайдера. А также характер блокировки: постоянный или временный, работают ли при этом другие сайты без WireGuard.
WireGuard будет работать даже в тех случаях, когда обычный VPN не справляется или когда у провайдера проблемы с DNS.
Если ваш виртуальный сервер размещен в РФ, то он будет блокировать доступ к запрещенным сайтам и, в то же время, ускорять доступ к сайтам или сервисам, которые без впн работают медленно. Например, к Ютубу.
Причины, зачем может понадобиться свой WireGuard туннель:
- Вы не доверяете сторонним сервисам.
- ВПН, которым вы пользуетесь, работает с перебоями, либо показывает надоедливую рекламу.
- Стоимость ВПН выше, чем стоимость аренды виртуального сервера.
- Вы администрируете сайты на хостинге - тогда есть смысл доплатить за VPS (примерно 100 р. в месяц за выделенный IP) и сэкономить на VPN.
- Больше свободы в выборе локации (сам использую финскую локацию, подключенную к реестру Роскомнадзора, чтобы случайно не попасть на нехороший сайт и не узнать то, что мне не положено).
- Вы получаете не засвеченный IP (тогда как IP популярных VPN сервисов известны и могут блокироваться как на уровне операторов так и отдельными сайтами).
- В теории больше скорость и в разы больше трафика за ту же цену, что позволит пользоваться туннелем нескольким пользователям одновременно.
- У вас уже есть VPS, но с неудобной локацией. Тогда есть смысл сменить локацию (пинг до ближнего зарубежья почти такой же как по РФ) и получить дополнительно VPN.
- Использует только UDP, что делает его быстрым и простым по структуре.
- Его трафик выглядит как последовательность однотипных UDP-пакетов, что усложняет сигнатурное определение.
- Не содержит явных «отпечатков» протокола — пакеты выглядят как случайные данные.
Если у вас нет опыта в администрировании, пишите в теме - распишу подробнее шаг за шагом. Важная обратная связь, чтобы понимать, что инструкцией будут пользоваться.
Инструкция будет для Ubuntu, поскольку эта самая популярная на сегодня сборка Linux.
Инструкция по настройке WireGuard
WireGuard требует наличие iptables.
Проверить наличие iptables на сервере можно командой
iptables -VЕсли iptables нет, то устанавливаем командой
sudo apt install iptables.Установка WireGuard
Bash:
sudo apt update
sudo apt install wireguard -y
wg --versionДолжно вывести что-то вроде этого:
wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/Настройка WireGuard на сервере
Создаем приватный и публичный ключи сервера:
wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.keyДалее создаем конфиг wg0.conf
/etc/wireguard/wg0.conf
В конфиге прописываем
Код:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
# ключ из файла /etc/wireguard/server_private.key
PrivateKey = <Приватный ключ сервера>
# Включаем маршрутизацию
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o <сетевой интерфейс> -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o <сетевой интерфейс> -j MASQUERADE
[Peer]
# ключ из файла /etc/wireguard/server_public.key
PublicKey =<Публичный ключ сервера>
AllowedIPs = 10.8.0.2/32
ip linkПримерный вывод:
Bash:
1: lo: <LOOPBACK,UP,LOWER_UP>...
2: ens1: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
...
Bash:
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens1 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens1 -j MASQUERADE
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-sysctl.confЛибо можно вручную раскомментировать строчку "net.ipv4.ip_forward=1" в конфиге.
Применяем изменения:
sudo sysctl -p /etc/sysctl.d/99-sysctl.confПроверить можно командой
cat /proc/sys/net/ipv4/ip_forward - должно быть 1.Добавляем правило для сетевого интерфейса ens1 (заменить на ваш):
sudo iptables -t nat -A POSTROUTING -o ens1 -j MASQUERADEДобавляем правила для форвардинга:
Bash:
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
Bash:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
wgТеперь создаем клиентские ключи, чтобы к серверу можно было подключиться извне.
wg genkey | tee ~/client1_private.key | wg pubkey | tee ~/client1_public.keyПубличный ключ нам не нужен (он создается автоматически на клиенте), а приватный можно получить командой:
cat ~/client1_private.keyНастройка WireGuard на клиенте (ваш смартфон или компьютер, с которого подключаемся к серверу)
Для этого понадобится приватный ключ клиента, полученный шагом ранее, IP адрес сервера и публичный ключ сервера (получить можно командой
cat /etc/wireguard/server_public.key).Для Windows качаем программу с сайта wireguard.com.
Создаем на компьютере конфигурационный файл wireguard.conf.
Прописываем в него следующее содержимое.
Bash:
[Interface]
PrivateKey = <CLIENT1_PRIVATE_KEY>
Address = 10.8.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <ваш IP>:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
Если трафик не идет, то можно попробовать удалить строчку "DNS = 1.1.1.1" из конфига.
Для Android устанавливаем приложение WireGuard.
В приложении создаем туннель и загружаем конфигурационный файл.
Если вам неудобно переносить конфигурационный файл на телефон, то выбираем пункт "создать с нуля".
В настройках интерфейса вводим приватный ключ клиента, в настройках пира - публичный ключ сервера и IP адрес сервера. Если не заработает, в поле DNS-серверы можно попробовать прописать 1.1.1.1.
Примерная конфигурация:
Диагностика
Если трафик не передается, то проверьте NAT на сервере:
sudo iptables -t nat -L -n | grep MASQUERADEЕсли пусто — значит нет выхода в интернет, клиент не сможет получить доступ.
Включить можно командой
sudo iptables -t nat -A POSTROUTING -o <сетевой интерфейс> -j MASQUERADEТакже возможно, что на сервере включен ufw и он блокирует трафик.
Проверить можно командой:
sudo ufw statusЕсли ufw включен, то его нужно отключить либо настроить для работы с WireGuard.
Настройка.
Bash:
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw default allow routed
sudo ufw reload
Чтобы исключить вмешательство Docker в iptables, добавьте в файле /etc/docker/daemon.json
JSON:
{
"iptables": false
}
sudo systemctl restart dockerЕсли не получается, пишите в теме.
Если трафик WireGuard блокируется провайдером - напишите ваш регион и название провайдера. А также характер блокировки: постоянный или временный, работают ли при этом другие сайты без WireGuard.
Последнее редактирование: