Вопрос или проблема
Я настроил локальный домашний VPN на Raspberry Pi 4 Model B 2019 Quad Core (4 ГБ ОЗУ), работающем на Ubuntu 20.04, подключенном к моему домашнему маршрутизатору через Ethernet. Я использовал PiVPN с Pihole для настройки. Я настроил клиент на своем iPhone и Mac, и он подключается, но скорость соединения очень низкая по сравнению с моей домашней скоростью. Мой тарифный план от интернет-провайдера AT&T Fiber с гигабитной скоростью, поэтому скорость загрузки/выгрузки на моем RPi4 довольно близка к следующей:
speedtest cli
ISP: AT&T U-verse
Latency: 3.32 ms (0.83 ms jitter)
Download: 913.95 Mbps (data used: 887.2 MB )
Upload: 921.47 Mbps (data used: 1.1 GB )
Packet Loss: 0.0%
Для своих клиентов (iPhone и Mac, оба подключены через Wifi) я использовал speedtest.net для получения их скоростей без VPN (просто подключены напрямую к домашней сети)
Mac: 397mbps/486mbps (download/upload)
iPhone: 377mbps (download)
После подключения к VPN соединения были значительно ниже (с использованием того же теста):
Mac: 15.65mbps/15.11mbps (download/upload)
iPhone: 8.45mbps (download)
Я начал искать другие темы, где люди сталкивались с такой же проблемой, и попробовал следующее:
- Изменил порт по умолчанию (51820) на другие порты (пробовал 51821, 81, 443), чтобы выяснить, не ограничивает ли мой интернет-провайдер (AT&T) какие-либо из этих портов. Безуспешно.
- Переустановил PiVPN без интеграции с PiHole (вдруг это как-то мешает). Безуспешно.
- Изменил MTU сервера и клиента на разные значения (по умолчанию это 1420): 1400, 1300, 1200. Безуспешно. (Я сделал ifconfig, и кажется, что мой сетевой mtu составляет 1500, поэтому значение по умолчанию было бы в порядке)
- Провел тест iperf3 с использованием моего Mac, чтобы увидеть, смогу ли я что-то найти с этим тестом:
Тест iperf без vpn
iperf3 -c 192.168.1.93
Подключение к хосту 192.168.1.93, порт 5201
[ 5] local 192.168.1.64 port 57206 connected to 192.168.1.93 port 5201
[ ID] Интервал Передача Скорость
[ 5] 0.00-1.00 сек 76.2 MBytes 639 Mbits/sec
[ 5] 1.00-2.01 сек 72.2 MBytes 598 Mbits/sec
[ 5] 2.01-3.00 сек 62.8 MBytes 533 Mbits/sec
[ 5] 3.00-4.00 сек 55.2 MBytes 465 Mbits/sec
[ 5] 4.00-5.00 сек 72.9 MBytes 612 Mbits/sec
[ 5] 5.00-6.00 сек 72.4 MBytes 608 Mbits/sec
[ 5] 6.00-7.00 сек 68.0 MBytes 569 Mbits/sec
[ 5] 7.00-8.00 сек 61.4 MBytes 516 Mbits/sec
[ 5] 8.00-9.00 сек 70.4 MBytes 591 Mbits/sec
[ 5] 9.00-10.00 сек 70.6 MBytes 592 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Интервал Передача Скорость
[ 5] 0.00-10.00 сек 682 MBytes 572 Mbits/sec sender
[ 5] 0.00-10.01 сек 681 MBytes 571 Mbits/sec receiver
Тест iperf с vpn
iperf3 -c 10.6.0.1
Подключение к хосту 10.6.0.1, порт 5201
[ 5] local 10.6.0.2 port 59800 connected to 10.6.0.1 port 5201
[ ID] Интервал Передача Скорость
[ 5] 0.00-1.00 сек 3.16 MBytes 26.3 Mbits/sec
[ 5] 1.00-2.00 сек 0.00 Bytes 0.00 bits/sec
[ 5] 2.00-3.00 сек 0.00 Bytes 0.00 bits/sec
[ 5] 3.00-4.00 сек 1.21 MBytes 10.2 Mbits/sec
[ 5] 4.00-5.00 сек 1.72 MBytes 14.4 Mbits/sec
[ 5] 5.00-6.00 сек 1.58 MBytes 13.2 Mbits/sec
[ 5] 6.00-7.00 сек 1.91 MBytes 16.1 Mbits/sec
[ 5] 7.00-8.00 сек 1.72 MBytes 14.4 Mbits/sec
[ 5] 8.00-9.00 сек 0.00 Bytes 0.00 bits/sec
[ 5] 9.00-10.00 сек 0.00 Bytes 0.00 bits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Интервал Передача Скорость
[ 5] 0.00-10.00 сек 11.3 MBytes 9.48 Mbits/sec sender
[ 5] 0.00-15.52 сек 11.3 MBytes 6.11 Mbits/sec receiver
Этот тест лишь подтвердил то, что я уже наблюдал по результатам speedtest.net.
У меня не осталось других вариантов, поэтому у меня есть несколько вопросов, если вы можете мне помочь:
- Ограничивает ли AT&T пакеты Wireguard? Может ли это быть причиной того, что я застрял на 10mbps?
- Нормально ли ожидать падения скорости с 400mbps до 10mbps при использовании Wireguard?
- Как мне исправить эту проблему? что вы рекомендуете для ускорения моего соединения?
Несколько других вещей, которые стоит отметить:
- Я использую маршрутизатор AT&T Pace 5268AC (пересылка портов, похоже, работает нормально)
- Это мой текущий журнал отладки pivpn -d:
=============================================
:::: Последний коммит ::::
Ветка: master
Коммит: f80b0a7962d91862132c0a4abd65c1e67bd37bd7
Автор: 4s3ti
Дата: Пт Дек 3 21:41:13 2021 +0100
Резюме: Обновление журнала изменений
=============================================
:::: Настройки установки ::::
PLAT=Ubuntu
OSCN=focal
USING_UFW=1
IPv4dev=eth0
install_user=ubuntu
install_home=/home/ubuntu
VPN=wireguard
pivpnPORT=443
pivpnDNS1=1.1.1.1
pivpnDNS2=1.0.0.1
pivpnHOST=REDACTED
pivpnPROTO=udp
pivpnMTU=1420
pivpnDEV=wg0
pivpnNET=10.6.0.0
subnetClass=24
ALLOWED_IPS="0.0.0.0/0, ::0/0"
UNATTUPG=0
INSTALLED_PACKAGES=()
=============================================
:::: Конфигурация сервера показана ниже ::::
[Interface]
PrivateKey = server_priv
Address = 10.6.0.1/24
MTU = 1420
ListenPort = 443
### begin user ###
[Peer]
PublicKey = user_pub
PresharedKey = user_psk
AllowedIPs = 10.6.0.2/32
### end user ###
### begin Phone ###
[Peer]
PublicKey = Phone_pub
PresharedKey = Phone_psk
AllowedIPs = 10.6.0.3/32
### end Phone ###
=============================================
:::: Конфигурация клиента показана ниже ::::
[Interface]
PrivateKey = user_priv
Address = 10.6.0.2/24
DNS = 1.1.1.1, 1.0.0.1
[Peer]
PublicKey = server_pub
PresharedKey = user_psk
Endpoint = REDACTED:443
AllowedIPs = 0.0.0.0/0, ::0/0
=============================================
:::: Рекурсивный список файлов в ::::
:::: [4m/etc/wireguard показан ниже ::::
/etc/wireguard:
configs
keys
wg0.conf
/etc/wireguard/configs:
Phone.conf
clients.txt
user.conf
/etc/wireguard/keys:
Phone_priv
Phone_psk
Phone_pub
user_priv
user_psk
user_pub
server_priv
server_pub
=============================================
:::: Самопроверка ::::
:: [OK] IP переадресация включена
:: [OK] Ufw включена
:: [OK] Правило MASQUERADE iptables установлено
:: [OK] Установлено правило ввода Ufw
:: [OK] Установлено правило пересылки Ufw
:: [OK] WireGuard работает
:: [OK] WireGuard включен (он автоматически запустится при перезагрузке)
:: [OK] WireGuard слушает на порту 443/udp
=============================================
:::: Есть проблемы с подключением? Ознакомьтесь с часто задаваемыми вопросами:
:::: https://docs.pivpn.io/faq
=============================================
:::: ПРЕДУПРЕЖДЕНИЕ: Этот скрипт должен был автоматически скрыть конфиденциальные ::::
:::: данные, однако все равно убедитесь, что PrivateKey, PublicKey ::::
:::: и PresharedKey скрыты перед тем, как сообщить о проблеме. Пример ключа ::::
:::: который вы не должны видеть в этом журнале выглядит следующим образом: ::::
:::: YIAoJVsdIeyvXfGGDDadHh6AxsMRymZTnnzZoAb9cxRe ::::
=============================================
:::: Отладка завершена ::::
:::
::: Вывод отладки завершен выше.
::: Копия сохранена в /tmp/debug.log
редактировать
вот как выглядит htop во время выполнения speedtest
Я смог улучшить это, réduisant MTU до 1432 (MTU = 1432
в вашей конфигурации wireguard). Вот результаты до/после на моей локальной сети (wifi) между MBP и моим Raspi 4:
значение MTU по умолчанию:
$ iperf3 -c 172.16.42.1 -p 5201
Подключение к хосту 172.16.42.1, порт 5201
[ 5] local 172.16.42.2 port 60457 connected to 172.16.42.1 port 5201
[ ID] Интервал Передача Скорость
[ 5] 0.00-1.00 сек 148 KBytes 1.21 Mbits/sec
[ 5] 1.00-2.00 сек 30.7 KBytes 251 Kbits/sec
[ 5] 2.00-3.00 сек 54.5 KBytes 448 Kbits/sec
[ 5] 3.00-4.00 сек 5.34 KBytes 43.8 Kbits/sec
[ 5] 4.00-5.00 сек 33.4 KBytes 273 Kbits/sec
[ 5] 5.00-6.00 сек 86.9 KBytes 712 Kbits/sec
[ 5] 6.00-7.01 сек 28.1 KBytes 229 Kbits/sec
[ 5] 7.01-8.00 сек 45.4 KBytes 374 Kbits/sec
[ 5] 8.00-9.00 сек 33.4 KBytes 273 Kbits/sec
[ 5] 9.00-10.00 сек 45.4 KBytes 372 Kbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Интервал Передача Скорость
[ 5] 0.00-10.00 сек 511 KBytes 419 Kbits/sec sender
[ 5] 0.00-10.69 сек 411 KBytes 315 Kbits/sec receiver
iperf Выполнено.
пониженное значение MTU:
$ iperf3 -c 172.16.42.1 -p 5201
Подключение к хосту 172.16.42.1, порт 5201
[ 5] local 172.16.42.2 port 60683 connected to 172.16.42.1 port 5201
[ ID] Интервал Передача Скорость
[ 5] 0.00-1.00 сек 12.9 MBytes 108 Mbits/sec
[ 5] 1.00-2.00 сек 14.0 MBytes 117 Mbits/sec
[ 5] 2.00-3.00 сек 13.7 MBytes 115 Mbits/sec
[ 5] 3.00-4.00 сек 14.4 MBytes 121 Mbits/sec
[ 5] 4.00-5.00 сек 15.2 MBytes 127 Mbits/sec
[ 5] 5.00-6.00 сек 15.4 MBytes 129 Mbits/sec
[ 5] 6.00-7.00 сек 15.4 MBytes 129 Mbits/sec
[ 5] 7.00-8.00 сек 17.1 MBytes 143 Mbits/sec
[ 5] 8.00-9.00 сек 16.0 MBytes 134 Mbits/sec
[ 5] 9.00-10.00 сек 16.0 MBytes 134 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Интервал Передача Скорость
[ 5] 0.00-10.00 сек 150 MBytes 126 Mbits/sec sender
[ 5] 0.00-10.03 сек 149 MBytes 125 Mbits/sec receiver
iperf Выполнено.
Этот гист содержит дополнительную информацию о нахождении оптимального сочетания MTU для сервера/клиента в вашей сети: https://gist.github.com/nitred/f16850ca48c48c79bf422e90ee5b9d95
Ответ или решение
Вопрос о медленной скорости соединения с использованием Raspberry Pi 4 и WireGuard рассматриваем в этом ответе с учетом предоставленных деталей и с использованием формата FOREST.
Факт (Fact)
Вы настроили локальную VPN на Raspberry Pi 4 Model B (2019, 4 ГБ ОЗУ), работающем под управлением Ubuntu 20.04, используя PiVPN и Pi-hole. Все соединения, как на клиентских устройствах (iPhone и Mac), показывают значительно более низкие скорости при подключении к VPN (например, 15.65 Мбит/с на Mac и 8.45 Мбит/с на iPhone), чем при прямом подключении к сети (397 Мбит/с и 377 Мбит/с соответственно).
Возможности (Opportunity)
Ваши тесты производительности с использованием iperf3 показывают серьезное снижение скорости при работе с VPN (до 9.48 Мбит/с), что также подтверждает проблему. Это предоставляет возможность для оптимизации настроек и настройки сети, а также проведенной диагностики.
Рекомендации (Recommendation)
-
Настройка MTU: Вы обнаружили, что снижение значения MTU до 1432 значительно улучшает скорость соединения. Рекомендуется продолжать тестирование с MTU в диапазоне от 1430 до 1450, чтобы найти оптимальное значение для вашей сети.
-
Оптимизация маршрутизации: Убедитесь, что процесс маршрутизации на вашем Raspberry Pi и на клиентских устройствах настроен правильно, так как неправильно настроенные маршруты могут препятствовать достижению высоких скоростей.
-
Проверка нагрузок на процессор: Используйте
htop
и другие утилиты для мониторинга нагрузки на CPU Raspberry Pi. Если процессор сильно загружен, это может привести к задержкам и снижению скорости. -
Изменение используемого протокола: В случае продолжительных проблем, рассмотрите возможность тестирования с использованием другого протокола, такого как IPSec, хотя WireGuard должен был бы предлагать лучшие характеристики производительности.
-
Проверка программного обеспечения: Убедитесь, что программные компоненты, включая WireGuard и PiVPN, находятся в актуальном состоянии. Регулярные обновления могут включать оптимизации производительности и исправления ошибок.
-
Настройка firewall: Убедитесь, что ваш фаервол (UFW) правильно настроен и не блокирует некоторые порты, или не вызывает задержек в обработке пакетов.
Эмоции (Emotion)
Проблемы с производительностью могут вызывать фрустрацию, особенно когда есть ожидания по высокой скорости от вашего ISP. Однако с правильной диагностикой и оптимизацией вы можете значительно улучшить качество своего VPN-соединения и вернуть свое спокойствие, наслаждаясь безопасным и быстрым интернет-доступом откуда угодно.
Груз ответственности (Satisfaction)
Поскольку вы уже предприняли многие шаги по решению этой проблемы, такие как изменение MTU и тесты с iperf, продолжайте мониторинг и оптимизацию всех упомянутых аспектов. Нахождение решения не только улучшит ваше опыт использования VPN, но и положительно скажется на вашей сети в целом. Успехов вам в оптимизации вашего VPN и получении высокоскоростного доступа!