- Wireguard VPN can’t access internet and LAN
- Проблема настройки своего VPN через WireGuard на VDS: подключается, но нет интернета
- Wireguard handshake works but no internet access
- 2 Answers 2
- Example configuration
- Server configuration
- Client configuration
- Wireguard пропадает интернет
- Нет интернета через wireguard
Wireguard VPN can’t access internet and LAN
I have a server running Ubuntu 20.04 and wireguard 1.0.20200513-1~20.04.2. I installed the wireguard app on my phone (Android Samsung S20+) and disabled WIFI and connected to 4G. When the VPN is active I can access the server and nothing else on my home network (192.168.1.X) or the internet. The server has a 10.0.0.1 (VPN) and 192.168.1.171 (LAN) interface. The phone gets a 10.0.0.2 interface. I’m guessing I need to setup a route. Server firewall (ufw status) is inactive. Any help would be much appreciated. /etc/wireguard/wg0.conf
[Interface] Address = 10.0.0.1/24 Address = ::1/64 SaveConfig = true ListenPort = 51820 PrivateKey = [Peer] PublicKey = AllowedIPs = 10.0.0.2/32, Endpoint = :8598
Cellphone config [Interface] PrivateKey = Address = 10.0.0.2/24 DNS = 1.1.1.1, 1.0.0.1 [Peer] PublicKey = AllowedIPs = 10.0.0.0/24, 192.168.1.0/24 Endpoint = :51820
net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enp2s0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp2s0 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp2s0
ip route get from 10.0.0.2 iif wg0 192.168.1.1 192.168.1.1 from 10.0.0.2 dev enp2s0 cache iif wg0
[Interface] Address = 10.0.0.1/24 SaveConfig = true PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE ListenPort = 51820 PrivateKey = [Peer] PublicKey = AllowedIPs = 10.0.0.2/32
Проблема настройки своего VPN через WireGuard на VDS: подключается, но нет интернета
Велик соблазн написать «наконец-то нормальный» мануал для настройке wireguard. Но в итоге такой мануал станет очередным, который не решает все проблемы пользователя при настройке. Поэтому данная запись носит цель подсветить возможные проблемы, с которыми может столкнуться рядовой пользователь при настройке базового vpn через wireguard на типовом 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 =
Пройдемся по основным полям:
- PrivateKey & PublicKey. В процессе настройке можно вполне легко перепутать данные для вставки в поля PrivateKey и PublicKey при вставке в файлы конфигураций. Проверьте еще раз, что в этой части все правильно.
- ListenPort. У меня указан 51830, но вроде как 51820 согласно другим инструкциям тоже должен работать. Проблем тут быть не должно.
- AllowedIPs. По сути данное значение должно совпадать с указанным в файле настроек клиента.
- ⚡⚡⚡ 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 [email protected] видел ошибку в консоли. В моем случае правка относительно инструкции не понадобилась.
Пример моего файла mac.conf (файл клиента)
[Interface] PrivateKey =
Основные момент прокомментировал по файлу.
Клиент настраивал на MacOS. Приложение WireGuard можно скачать из AppStore. Приложение в итоге рабочее, но не отличается многословностью в случае ошибок. Даже в кривыми конфигами подключается и горит зеленым. что появились строки — получено данных, отправлено данных, последнее рукопожатие. Пример скрина с удачно запущенным wireguard:
Wireguard handshake works but no internet access
First off: this is not a duplicate. I’ve tried everything except OpenVPN or IPSec. I’m receiving a handshake between the client and server, and SSH and Ping work between clients, but I cannot access the global internet or even have access to the server’s public IP. My config is just the usual, keys, endpoints, I followed the Linode guide exactly. My client is openSUSE but my server is ubuntu, which I’m assuming is the chokepoint.
2 Answers 2
This is exactly the situation I had. Does your server have a public IP or is it behind a NAT? If it’s behind a NAT, the PostUp and PostDown iptables commands from the Linode guide don’t apply.
Try adding the following to your server configuration file, changing eth0 to whatever your computer calls it:
PreUp = iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0 PreDown = iptables -t nat -D POSTROUTING -j MASQUERADE -o eth0
Example configuration
Here’s an example configuration where the router is at 10.0.1.1 (normal network) and 10.0.0.x is the new WireGuard network, with the server being configured for 10.0.0.1 and the client for 10.0.0.2. The port used is 51820 and the default network interface is eth0. All traffic is routed through WireGuard, but it does not stay within the WireGuard subnet. The client has access to the server’s local network (10.0.1.x) and the general internet. Don’t forget to forward the 51820 port from your router to your server and to enable ipv4 forwarding on the server ( # sysctl -w net.ipv4.ip_forward=1 )
Server configuration
[Interface] Address = 10.0.0.1/24 PrivateKey = YOUR_SEVER_PRIVATE_KEY ListenPort = 51820 PreUp = iptables --table nat --append POSTROUTING --jump MASQUERADE --out-interface eth0 PreDown = iptables --table nat --delete POSTROUTING --jump MASQUERADE --out-interface eth0 [Peer] PublicKey = YOUR_CLIENT_PUBLIC_KEY AllowedIPs = 10.0.0.2/32
Client configuration
[Interface] Address = 10.0.0.2/24 DNS = 10.0.1.1 PrivateKey = YOUR_CLIENT_PRIVATE_KEY ListenPort = 51820 [Peer] PublicKey = YOUR_SERVER_PUBLIC_KEY AllowedIPs = 0.0.0.0/0, ::/0 Endpoint = YOUR.DYNAMIC_DNS.COM:51820
Wireguard пропадает интернет
WireGuard — это один из наиболее быстрых и безопасных протоколов VPN, который позволяет пользователям обеспечить конфиденциальность своей онлайн-активности. Однако, иногда пользователи могут столкнуться с проблемой, когда интернет пропадает при использовании WireGuard.
Существует несколько причин, почему WireGuard может привести к пропаданию интернета. Ниже мы рассмотрим некоторые из них и дадим советы, как решить эту проблему.
Во многих случаях, проблема пропадания интернета при использовании WireGuard может быть вызвана неправильной настройкой конфигурации. Вам следует проверить, правильно ли настроен ваш конфигурационный файл WireGuard. Обратите внимание на настройки IP-адресов и маршрутизации.
Если вы используете WireGuard в сочетании с другими VPN-сервисами, такими как OpenVPN или IPSec, это может привести к проблеме пропадания интернета. В таком случае, вы должны отключить другие VPN-сервисы, чтобы избежать конфликтов.
Если на вашем устройстве не настроена правильная маршрутизация, это может привести к проблеме пропадания интернета при использовании WireGuard. Вы можете проверить настройки маршрутизации и настроить их правильно.
WireGuard использует UDP-порт для связи с сервером VPN. Если ваш брандмауэр заблокировал этот порт, это может привести к проблеме пропадания интернета. В этом случае, вы должны настроить свой брандмауэр, чтобы разрешить доступ к порту, используемому WireGuard.
В заключение, WireGuard — это отличный VPN-протокол, который обеспечивает быстрый и безопасный доступ в интернет. Однако, если у вас возникла проблема пропадания интернета при использовании WireGuard, вы можете заказать на нашем сайте готовый сконфигурированный сервер VPN.
Нет интернета через wireguard
So I have setup my interfaces and keys. My server config looks like this:
[Interface] Address = 10.200.200.1/24 SaveConfig = true ListenPort = 51820 PrivateKey = xxxxx PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s31f6 -j MASQUERADE [Peer] # client phone PublicKey = xxxxxx AllowedIPs = 10.200.200.2/32
My client.conf config looks like this:
[Interface] Address = 10.200.200.2/24 PrivateKey = xxxxxx DNS = 1.1.1.1 [Peer] PublicKey = xxxxxxx AllowedIPs = 0.0.0.0/0, ::/0 Endpoint = example.com:51820
interface: wg0 public key: xxxxxx private key: (hidden) listening port: 51820 peer: xxxxxx endpoint: xxxxxxx:57556 allowed ips: 10.200.200.2/32 latest handshake: 14 seconds ago transfer: 29.58 KiB received, 1.09 KiB sent
So the sent bytes is very little for some reason. On my phone when I try loading a web page it just seems to be stuck loading forever without any progress. Any ideas what I am doing wrong? I have port forwarding setup on my router for UDP 51820 as well.
Edit: I am also able to ping the client at 10.200.200.2 with some packet loss
PING 10.200.200.2 (10.200.200.2) 56(84) bytes of data. 64 bytes from 10.200.200.2: icmp_seq=2 ttl=64 time=186 ms 64 bytes from 10.200.200.2: icmp_seq=3 ttl=64 time=146 ms 64 bytes from 10.200.200.2: icmp_seq=4 ttl=64 time=53.6 ms 64 bytes from 10.200.200.2: icmp_seq=5 ttl=64 time=62.6 ms 64 bytes from 10.200.200.2: icmp_seq=6 ttl=64 time=341 ms 64 bytes from 10.200.200.2: icmp_seq=7 ttl=64 time=299 ms 64 bytes from 10.200.200.2: icmp_seq=8 ttl=64 time=57.6 ms 64 bytes from 10.200.200.2: icmp_seq=9 ttl=64 time=226 ms ^C — 10.200.200.2 ping statistics — 9 packets transmitted, 8 received, 11.1111% packet loss, time 35ms rtt min/avg/max/mdev = 53.550/171.364/340.672/104.520 ms