Проблема настройки своего 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
Пройдемся по основным полям:
- PrivateKey & PublicKey. В процессе настройке можно вполне легко перепутать данные для вставки в поля PrivateKey и PublicKey при вставке в файлы конфигураций. Проверьте еще раз, что в этой части все правильно.
- ListenPort. У меня указан 51830, но вроде как 51820 согласно другим инструкциям тоже должен работать. Проблем тут быть не должно.
- AllowedIPs. По сути данное значение должно совпадать с указанным в файле настроек клиента.
- ⚡⚡⚡ PostUp & PostDown. Молния. Даже три. В инструкции указана такая строчка:
Данные команды выполняются при старте/останове wireguard сервера. Здесь нас интересуют значения %i и eth0.
Так понял значение %i является шаблоном для сетевого интерфейса, вместо которого в итоге подставляется конкретное значение. В моем случаем указал хардкодом 'wg0'. Без этого у меня не работало.
Также вместо eth0 иногда требуется указать ваше значение сетевого интерфейса. Для просмотра сетевых интерфейсов можно использовать команду ifconfig -a в терминале VDS. В моем случае eth0, но может быть ens3 или другое значение. Если здесь указан неправильный интерфейс, то при просмотре статуса через команду systemctl status wg-quick@wg0.service видел ошибку в консоли. В моем случае правка относительно инструкции не понадобилась.
Пример моего файла mac.conf (файл клиента)
Основные момент прокомментировал по файлу.
Клиент настраивал на MacOS. Приложение WireGuard можно скачать из AppStore. Приложение в итоге рабочее, но не отличается многословностью в случае ошибок. Даже в кривыми конфигами подключается и горит зеленым. что появились строки - получено данных, отправлено данных, последнее рукопожатие. Пример скрина с удачно запущенным wireguard:
Напоследок замеры скорости по WI-FI: