Меню
Главная
Форумы
Новые сообщения
Что нового?
Новые сообщения
Вход
Регистрация
Что нового?
Новые сообщения
Меню
Вход
Регистрация
Главная
Форумы
Противодействие интернет-цензуре
Разработка, техподдержка, инструкции
Настройка WireGuard на виртуальном сервере (Ubuntu) - свой VPN, устойчивый к блокировкам
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
Ответить в теме
Сообщение
<p>[QUOTE="moder, post: 64413, member: 1"]</p><p>Данный инструмент не предназначен для обхода блокировок запрещенных сайтов - с его помощью можно ускорить доступ к незапрещенным сайтам, в случае их плохой доступности на мобильном интернете.</p><p>WireGuard будет работать даже в тех случаях, когда обычный VPN не справляется или когда у провайдера проблемы с DNS. </p><p></p><p>Если ваш виртуальный сервер размещен в РФ, то он будет блокировать доступ к запрещенным сайтам и, в то же время, ускорять доступ к сайтам или сервисам, которые без впн работают медленно. Например, к Ютубу.</p><p></p><p>Причины, зачем может понадобиться свой WireGuard туннель:</p><ol> <li data-xf-list-type="ol">Вы не доверяете сторонним сервисам.</li> <li data-xf-list-type="ol">ВПН, которым вы пользуетесь, работает с перебоями, либо показывает надоедливую рекламу.</li> <li data-xf-list-type="ol">Стоимость ВПН выше, чем стоимость аренды виртуального сервера.</li> <li data-xf-list-type="ol">Вы администрируете сайты на хостинге - тогда есть смысл доплатить за VPS (примерно 100 р. в месяц за выделенный IP) и сэкономить на VPN.</li> <li data-xf-list-type="ol">Больше свободы в выборе локации (сам использую финскую локацию, подключенную к реестру Роскомнадзора, чтобы случайно не попасть на нехороший сайт и не узнать то, что мне не положено).</li> <li data-xf-list-type="ol">Вы получаете не засвеченный IP (тогда как IP популярных VPN сервисов известны и могут блокироваться как на уровне операторов так и отдельными сайтами).</li> <li data-xf-list-type="ol">В теории больше скорость и в разы больше трафика за ту же цену, что позволит пользоваться туннелем нескольким пользователям одновременно.</li> <li data-xf-list-type="ol">У вас уже есть VPS, но с неудобной локацией. Тогда есть смысл сменить локацию (пинг до ближнего зарубежья почти такой же как по РФ) и получить дополнительно VPN.</li> </ol><p>Кроме того, WireGuard устойчивее к DPI, чем ряд других популярных VPN-протоколов, поскольку:</p><ul> <li data-xf-list-type="ul">Использует только UDP, что делает его быстрым и простым по структуре.</li> <li data-xf-list-type="ul">Его трафик выглядит как последовательность однотипных UDP-пакетов, что усложняет сигнатурное определение.</li> <li data-xf-list-type="ul">Не содержит явных «отпечатков» протокола — пакеты выглядят как случайные данные.</li> </ul><p></p><p>Если у вас нет опыта в администрировании, пишите в теме - распишу подробнее шаг за шагом. Важная обратная связь, чтобы понимать, что инструкцией будут пользоваться.</p><p></p><p>Инструкция будет для Ubuntu, поскольку эта самая популярная на сегодня сборка Linux.</p><p></p><p><strong><span style="font-size: 22px">Инструкция по настройке WireGuard</span></strong></p><p></p><p>WireGuard требует наличие iptables.</p><p>Проверить наличие iptables на сервере можно командой [ICODE]iptables -V[/ICODE]</p><p>Если iptables нет, то устанавливаем командой [ICODE]sudo apt install iptables[/ICODE].</p><p></p><p><strong>Установка WireGuard</strong></p><p></p><p>[CODE=bash]</p><p>sudo apt update</p><p>sudo apt install wireguard -y</p><p>[/CODE]</p><p></p><p>Проверить установку можно командой [ICODE]wg --version[/ICODE]</p><p>Должно вывести что-то вроде этого: [ICODE]wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/[/ICODE]</p><p></p><p><strong>Настройка WireGuard на сервере</strong></p><p></p><p>Создаем приватный и публичный ключи сервера:</p><p>[ICODE]wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key[/ICODE]</p><p></p><p>Далее создаем конфиг wg0.conf</p><p>/etc/wireguard/wg0.conf</p><p></p><p>В конфиге прописываем</p><p>[CODE]</p><p>[Interface]</p><p>Address = 10.8.0.1/24</p><p>ListenPort = 51820</p><p></p><p># ключ из файла /etc/wireguard/server_private.key</p><p>PrivateKey = <Приватный ключ сервера></p><p></p><p># Включаем маршрутизацию</p><p>PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o <сетевой интерфейс> -j MASQUERADE</p><p>PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o <сетевой интерфейс> -j MASQUERADE</p><p></p><p>[Peer]</p><p># ключ из файла /etc/wireguard/server_public.key</p><p>PublicKey =<Публичный ключ сервера></p><p>AllowedIPs = 10.8.0.2/32</p><p>[/CODE]</p><p></p><p>Если не знаете какой у вас сетевой интерфейс (eth или ens), то можно узнать командой [ICODE]ip link[/ICODE]</p><p>Примерный вывод:</p><p>[CODE=bash]</p><p>1: lo: <LOOPBACK,UP,LOWER_UP>...</p><p>2: ens1: <BROADCAST,MULTICAST,UP,LOWER_UP> ...</p><p>...</p><p>[/CODE]</p><p></p><p>Соответственно, в этом случае в конфиге прописываем ens1 :</p><p>[CODE=bash]</p><p>PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens1 -j MASQUERADE</p><p>PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens1 -j MASQUERADE</p><p>[/CODE]</p><p></p><p>Включаем Ip-forwarding: [ICODE]echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-sysctl.conf[/ICODE]</p><p>Либо можно вручную раскомментировать строчку "net.ipv4.ip_forward=1" в конфиге.</p><p></p><p>Применяем изменения: [ICODE]sudo sysctl -p /etc/sysctl.d/99-sysctl.conf[/ICODE]</p><p></p><p>Проверить можно командой [ICODE]cat /proc/sys/net/ipv4/ip_forward[/ICODE] - должно быть 1.</p><p></p><p>Добавляем правило для сетевого интерфейса ens1 (заменить на ваш):</p><p>[ICODE]sudo iptables -t nat -A POSTROUTING -o ens1 -j MASQUERADE[/ICODE]</p><p></p><p>Добавляем правила для форвардинга:</p><p>[CODE=bash]</p><p>sudo iptables -A FORWARD -i wg0 -j ACCEPT</p><p>sudo iptables -A FORWARD -o wg0 -j ACCEPT</p><p>[/CODE]</p><p></p><p>Запускаем WireGuard</p><p>[CODE=bash]</p><p>sudo systemctl enable wg-quick@wg0</p><p>sudo systemctl start wg-quick@wg0</p><p>[/CODE]</p><p></p><p>Проверить, что WireGuard запущен можно командой [ICODE]wg[/ICODE]</p><p></p><p>Теперь создаем клиентские ключи, чтобы к серверу можно было подключиться извне.</p><p>[ICODE]wg genkey | tee ~/client1_private.key | wg pubkey | tee ~/client1_public.key[/ICODE]</p><p></p><p>Публичный ключ нам не нужен (он создается автоматически на клиенте), а приватный можно получить командой: [ICODE]cat ~/client1_private.key[/ICODE]</p><p></p><p><strong>Настройка WireGuard на клиенте (ваш смартфон или компьютер, с которого подключаемся к серверу)</strong></p><p></p><p>Для этого понадобится приватный ключ клиента, полученный шагом ранее, IP адрес сервера и публичный ключ сервера (получить можно командой [ICODE]cat /etc/wireguard/server_public.key[/ICODE]).</p><p></p><p>Для Windows качаем программу с сайта <a href="https://www.wireguard.com/install/#windows-7-81-10-11-2008r2-2012r2-2016-2019-2022">wireguard.com</a>.</p><p></p><p>Создаем на компьютере конфигурационный файл wireguard.conf.</p><p>Прописываем в него следующее содержимое.</p><p>[CODE=bash]</p><p>[Interface]</p><p>PrivateKey = <CLIENT1_PRIVATE_KEY></p><p>Address = 10.8.0.2/24</p><p>DNS = 1.1.1.1</p><p></p><p>[Peer]</p><p>PublicKey = <SERVER_PUBLIC_KEY></p><p>Endpoint = <ваш IP>:51820</p><p>AllowedIPs = 0.0.0.0/0, ::/0</p><p>PersistentKeepalive = 25</p><p>[/CODE]</p><p></p><p>В программе нажимаем "добавить туннель" и загружаем созданный файл.</p><p></p><p>[ATTACH=full]4508[/ATTACH]</p><p></p><p>Если трафик не идет, то можно попробовать удалить строчку "DNS = 1.1.1.1" из конфига.</p><p></p><p>Для Android устанавливаем приложение WireGuard.</p><p>В приложении создаем туннель и загружаем конфигурационный файл.</p><p>Если вам неудобно переносить конфигурационный файл на телефон, то выбираем пункт "создать с нуля".</p><p></p><p>В настройках интерфейса вводим приватный ключ клиента, в настройках пира - публичный ключ сервера и IP адрес сервера. Если не заработает, в поле DNS-серверы можно попробовать прописать <strong>1.1.1.1</strong>.</p><p></p><p>Примерная конфигурация:</p><p>[ATTACH=full]4507[/ATTACH]</p><p></p><p></p><p><strong>Диагностика</strong></p><p></p><p>Если трафик не передается, то проверьте NAT на сервере: [ICODE]sudo iptables -t nat -L -n | grep MASQUERADE[/ICODE]</p><p></p><p>Если пусто — значит нет выхода в интернет, клиент не сможет получить доступ.</p><p></p><p>Включить можно командой [ICODE]sudo iptables -t nat -A POSTROUTING -o <сетевой интерфейс> -j MASQUERADE[/ICODE]</p><p></p><p>Также возможно, что на сервере включен ufw и он блокирует трафик.</p><p>Проверить можно командой: [ICODE]sudo ufw status[/ICODE]</p><p></p><p>Если ufw включен, то его нужно отключить либо настроить для работы с WireGuard.</p><p>Настройка.</p><p>[CODE=bash]</p><p>sudo ufw allow 51820/udp</p><p>sudo ufw allow OpenSSH</p><p>sudo ufw default allow routed</p><p>sudo ufw reload</p><p>[/CODE]</p><p></p><p>Также может быть конфликт с Docker - он ставит собственные iptables-правила и может поломать NAT.</p><p>Чтобы исключить вмешательство Docker в iptables, добавьте в файле /etc/docker/daemon.json</p><p>[CODE=json]{</p><p> "iptables": false</p><p>}[/CODE]</p><p></p><p>Перезапускаем Docker: [ICODE]sudo systemctl restart docker[/ICODE]</p><p></p><p>Если не получается, пишите в теме.</p><p></p><p>Если трафик WireGuard блокируется провайдером - напишите ваш регион и название провайдера. А также характер блокировки: постоянный или временный, работают ли при этом другие сайты без WireGuard.</p><p>[/QUOTE]</p>
[QUOTE="moder, post: 64413, member: 1"] Данный инструмент не предназначен для обхода блокировок запрещенных сайтов - с его помощью можно ускорить доступ к незапрещенным сайтам, в случае их плохой доступности на мобильном интернете. WireGuard будет работать даже в тех случаях, когда обычный VPN не справляется или когда у провайдера проблемы с DNS. Если ваш виртуальный сервер размещен в РФ, то он будет блокировать доступ к запрещенным сайтам и, в то же время, ускорять доступ к сайтам или сервисам, которые без впн работают медленно. Например, к Ютубу. Причины, зачем может понадобиться свой WireGuard туннель: [LIST=1] [*]Вы не доверяете сторонним сервисам. [*]ВПН, которым вы пользуетесь, работает с перебоями, либо показывает надоедливую рекламу. [*]Стоимость ВПН выше, чем стоимость аренды виртуального сервера. [*]Вы администрируете сайты на хостинге - тогда есть смысл доплатить за VPS (примерно 100 р. в месяц за выделенный IP) и сэкономить на VPN. [*]Больше свободы в выборе локации (сам использую финскую локацию, подключенную к реестру Роскомнадзора, чтобы случайно не попасть на нехороший сайт и не узнать то, что мне не положено). [*]Вы получаете не засвеченный IP (тогда как IP популярных VPN сервисов известны и могут блокироваться как на уровне операторов так и отдельными сайтами). [*]В теории больше скорость и в разы больше трафика за ту же цену, что позволит пользоваться туннелем нескольким пользователям одновременно. [*]У вас уже есть VPS, но с неудобной локацией. Тогда есть смысл сменить локацию (пинг до ближнего зарубежья почти такой же как по РФ) и получить дополнительно VPN. [/LIST] Кроме того, WireGuard устойчивее к DPI, чем ряд других популярных VPN-протоколов, поскольку: [LIST] [*]Использует только UDP, что делает его быстрым и простым по структуре. [*]Его трафик выглядит как последовательность однотипных UDP-пакетов, что усложняет сигнатурное определение. [*]Не содержит явных «отпечатков» протокола — пакеты выглядят как случайные данные. [/LIST] Если у вас нет опыта в администрировании, пишите в теме - распишу подробнее шаг за шагом. Важная обратная связь, чтобы понимать, что инструкцией будут пользоваться. Инструкция будет для Ubuntu, поскольку эта самая популярная на сегодня сборка Linux. [B][SIZE=6]Инструкция по настройке WireGuard[/SIZE][/B] WireGuard требует наличие iptables. Проверить наличие iptables на сервере можно командой [ICODE]iptables -V[/ICODE] Если iptables нет, то устанавливаем командой [ICODE]sudo apt install iptables[/ICODE]. [B]Установка WireGuard[/B] [CODE=bash] sudo apt update sudo apt install wireguard -y [/CODE] Проверить установку можно командой [ICODE]wg --version[/ICODE] Должно вывести что-то вроде этого: [ICODE]wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/[/ICODE] [B]Настройка WireGuard на сервере[/B] Создаем приватный и публичный ключи сервера: [ICODE]wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key[/ICODE] Далее создаем конфиг wg0.conf /etc/wireguard/wg0.conf В конфиге прописываем [CODE] [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 [/CODE] Если не знаете какой у вас сетевой интерфейс (eth или ens), то можно узнать командой [ICODE]ip link[/ICODE] Примерный вывод: [CODE=bash] 1: lo: <LOOPBACK,UP,LOWER_UP>... 2: ens1: <BROADCAST,MULTICAST,UP,LOWER_UP> ... ... [/CODE] Соответственно, в этом случае в конфиге прописываем ens1 : [CODE=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 [/CODE] Включаем Ip-forwarding: [ICODE]echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-sysctl.conf[/ICODE] Либо можно вручную раскомментировать строчку "net.ipv4.ip_forward=1" в конфиге. Применяем изменения: [ICODE]sudo sysctl -p /etc/sysctl.d/99-sysctl.conf[/ICODE] Проверить можно командой [ICODE]cat /proc/sys/net/ipv4/ip_forward[/ICODE] - должно быть 1. Добавляем правило для сетевого интерфейса ens1 (заменить на ваш): [ICODE]sudo iptables -t nat -A POSTROUTING -o ens1 -j MASQUERADE[/ICODE] Добавляем правила для форвардинга: [CODE=bash] sudo iptables -A FORWARD -i wg0 -j ACCEPT sudo iptables -A FORWARD -o wg0 -j ACCEPT [/CODE] Запускаем WireGuard [CODE=bash] sudo systemctl enable wg-quick@wg0 sudo systemctl start wg-quick@wg0 [/CODE] Проверить, что WireGuard запущен можно командой [ICODE]wg[/ICODE] Теперь создаем клиентские ключи, чтобы к серверу можно было подключиться извне. [ICODE]wg genkey | tee ~/client1_private.key | wg pubkey | tee ~/client1_public.key[/ICODE] Публичный ключ нам не нужен (он создается автоматически на клиенте), а приватный можно получить командой: [ICODE]cat ~/client1_private.key[/ICODE] [B]Настройка WireGuard на клиенте (ваш смартфон или компьютер, с которого подключаемся к серверу)[/B] Для этого понадобится приватный ключ клиента, полученный шагом ранее, IP адрес сервера и публичный ключ сервера (получить можно командой [ICODE]cat /etc/wireguard/server_public.key[/ICODE]). Для Windows качаем программу с сайта [URL='https://www.wireguard.com/install/#windows-7-81-10-11-2008r2-2012r2-2016-2019-2022']wireguard.com[/URL]. Создаем на компьютере конфигурационный файл wireguard.conf. Прописываем в него следующее содержимое. [CODE=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 [/CODE] В программе нажимаем "добавить туннель" и загружаем созданный файл. [ATTACH type="full" alt="1764324376833.jpg"]4508[/ATTACH] Если трафик не идет, то можно попробовать удалить строчку "DNS = 1.1.1.1" из конфига. Для Android устанавливаем приложение WireGuard. В приложении создаем туннель и загружаем конфигурационный файл. Если вам неудобно переносить конфигурационный файл на телефон, то выбираем пункт "создать с нуля". В настройках интерфейса вводим приватный ключ клиента, в настройках пира - публичный ключ сервера и IP адрес сервера. Если не заработает, в поле DNS-серверы можно попробовать прописать [B]1.1.1.1[/B]. Примерная конфигурация: [ATTACH type="full" alt="1764322728211.jpg"]4507[/ATTACH] [B]Диагностика[/B] Если трафик не передается, то проверьте NAT на сервере: [ICODE]sudo iptables -t nat -L -n | grep MASQUERADE[/ICODE] Если пусто — значит нет выхода в интернет, клиент не сможет получить доступ. Включить можно командой [ICODE]sudo iptables -t nat -A POSTROUTING -o <сетевой интерфейс> -j MASQUERADE[/ICODE] Также возможно, что на сервере включен ufw и он блокирует трафик. Проверить можно командой: [ICODE]sudo ufw status[/ICODE] Если ufw включен, то его нужно отключить либо настроить для работы с WireGuard. Настройка. [CODE=bash] sudo ufw allow 51820/udp sudo ufw allow OpenSSH sudo ufw default allow routed sudo ufw reload [/CODE] Также может быть конфликт с Docker - он ставит собственные iptables-правила и может поломать NAT. Чтобы исключить вмешательство Docker в iptables, добавьте в файле /etc/docker/daemon.json [CODE=json]{ "iptables": false }[/CODE] Перезапускаем Docker: [ICODE]sudo systemctl restart docker[/ICODE] Если не получается, пишите в теме. Если трафик WireGuard блокируется провайдером - напишите ваш регион и название провайдера. А также характер блокировки: постоянный или временный, работают ли при этом другие сайты без WireGuard. [/QUOTE]
Предпросмотр
Имя
Проверка
Ответить
Главная
Форумы
Противодействие интернет-цензуре
Разработка, техподдержка, инструкции
Настройка WireGuard на виртуальном сервере (Ubuntu) - свой VPN, устойчивый к блокировкам
Сверху