Проблема настройки своего VPN через WireGuard на VDS: подключается, но нет интернета

Велик соблазн написать «наконец-то нормальный» мануал для настройке wireguard. Но в итоге такой мануал станет очередным, который не решает все проблемы пользователя при настройке. Поэтому данная запись носит цель подсветить возможные проблемы, с которыми может столкнуться рядовой пользователь при настройке базового vpn через wireguard на типовом vds.

Использовал данный мануал по настройке:

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

Мой VDS

  • базовый VDS в DIgitalOcean за $4: 512 MB Memory / 10 GB Disk / SGP1 - Ubuntu 22.10 x64
  • регион Сингапур. Скорее всего не лучший вариант, но точно рабочий. Изначально пробовал другие регионы, но в процессе поиска проблем менял сервера. Встречал комменты, что для некоторых регионов не "заводилось". Пример замера скорости в конце статьи.

Примечание: при регистрации Digital Ocean предоставил пробный период с "$200.00 (expires in 59 days)". При этом DO сделал списание (и сразу возврат) тестовой суммы в $5 при регистрации. Если есть подходящая карта, то скорее всего есть рабочий вариант завести новый аккаунт и раскатать wireguard еще раз на два месяца. При необходимости повторить.

Пробовал настраивать VDS по нескольким инструкциям. Вцелом, они однотипны и по каждой из них была проблема на финальном шаге - подключаюсь в WireGuard через клиент, но интернета нет. Скорее всего если есть проблема, то она будет воспроизводиться именно на этом шаге.

Полагаю, что вы прошли инструкцию и понимаете о чем идет речь дальше.

Еще раз проверяем файлы конфигураций

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

  • первый файл wg0.conf располагается на самом VDS и задает настройки для wireguard
  • второй, к примеру, mac.conf в моем случае, в котором задаются настройки клиента

Пример моего файла wg0.conf

[Interface] Address = 10.0.0.1/24 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE ListenPort = 51830 PrivateKey = <private_key> [Peer] PublicKey = <public_key> AllowedIPs = 10.0.0.2/32

Пройдемся по основным полям:

  1. PrivateKey & PublicKey. В процессе настройке можно вполне легко перепутать данные для вставки в поля PrivateKey и PublicKey при вставке в файлы конфигураций. Проверьте еще раз, что в этой части все правильно.
  2. ListenPort. У меня указан 51830, но вроде как 51820 согласно другим инструкциям тоже должен работать. Проблем тут быть не должно.
  3. AllowedIPs. По сути данное значение должно совпадать с указанным в файле настроек клиента.
  4. ⚡⚡⚡ PostUp & PostDown. Молния. Даже три. В инструкции указана такая строчка:
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Данные команды выполняются при старте/останове wireguard сервера. Здесь нас интересуют значения %i и eth0.

Так понял значение %i является шаблоном для сетевого интерфейса, вместо которого в итоге подставляется конкретное значение. В моем случаем указал хардкодом 'wg0'. Без этого у меня не работало.

Также вместо eth0 иногда требуется указать ваше значение сетевого интерфейса. Для просмотра сетевых интерфейсов можно использовать команду ifconfig -a в терминале VDS. В моем случае eth0, но может быть ens3 или другое значение. Если здесь указан неправильный интерфейс, то при просмотре статуса через команду systemctl status wg-quick@wg0.service видел ошибку в консоли. В моем случае правка относительно инструкции не понадобилась.

Пример моего файла mac.conf (файл клиента)

[Interface] PrivateKey = <private_key> Address = 10.0.0.2/32 # должно совпадать с указанным в wg0.cong в для настойки [Peer] DNS = 1.1.1.1 # сами задаем DNS, можно 8.8.8.8 или любой другой [Peer] PublicKey = <public_key> Endpoint = <ip_vds>:51830 # проверяем порт AllowedIPs = 0.0.0.0/0 # пропускаем весь трафик через wireguard PersistentKeepalive = 20

Основные момент прокомментировал по файлу.

Клиент настраивал на MacOS. Приложение WireGuard можно скачать из AppStore. Приложение в итоге рабочее, но не отличается многословностью в случае ошибок. Даже в кривыми конфигами подключается и горит зеленым. что появились строки - получено данных, отправлено данных, последнее рукопожатие. Пример скрина с удачно запущенным wireguard:

Пример скрина с удачно запущенным wireguard
Пример скрина с удачно запущенным wireguard

Напоследок замеры скорости по WI-FI:

Через wireguard
Через wireguard
Без wireguard
Без wireguard
66
20 комментариев

Зачем все эти сложности, когда на гитхабе куча скриптов автоинсталлеров, после которых все работает как часы, годами?)
Ну серьёзно

8
Ответить

Поделитесь примерами проверенных скриптов?

1
Ответить

Комментарий недоступен

4
Ответить

При правильно выбранной локации и хостере, трафик через WG не то чтобы занижается, как у топик стартера аж до 3-х раз, а наоборот становится выше, то есть вытаскивает, например, мобильный интернет на более высокую скорость. Проверено неоднократно. Арендовать сервера на DO, такой себе челлендж. У меня, например, все IP DO, на серверах стоят в правилах на блокировку, так как с адресов DO, порядка 60% паразитного трафика идёт, всякие спамеры, сканеры и прочая нечесть.

3
Ответить

Зачем столько танцев с бубном если есть AmneziaVPN?
Там и вг и сокс с обфускацией

1
Ответить

Очень интересно-странный вариант, так как мобильное приложение не позволяет выбрать сами приложения трафик которых необходимо пускать через туннель и те, которые напрямую. Предусмотрено либо весь трафик, либо сайты...🤔
К тому же логинится через приложение к серверу, очень своеобразное решение.

1
Ответить

Комментарий недоступен

1
Ответить