Комментарии 28
Если вы не доверяете vps, то зачем вы шифруете трафик до него? Сделайте тупой gre или vxlan с plaintext трафиком, внутри которого уже гоняйте нормальный шифрованный трафик. И быстрее, и отлаживать проще (видно вложенный шифрованный трафик в tcpdump).
Использование же sshtunnel чревато tcp головного udp, это очень плохой антипаттерн для трафика.
(кроме повышения скорости, хотя тут мне кажется именно различие конфигурации и привело к этому)
Тоже присматриваюсь к Wireguard, но пока что старый добрый OpenVPN у меня по-прежнему в строю. Почитал предыдущие статьи, как понимаю это пока что только в последних ядрах линукса можно получить такие скорости (потому что там Wireguard впаян в ядро), а с телефонами картинка мрачная…
3 года назад на wireguard объединял хосты в разных ДЦ у DigitalOcean в одну сеть, ну и затестил опенвпн и ваергуард, ну так голый канал выдавал 1,7Гб/с, задержки 1-2 мс, в опенвпн — 103 Мб/с, и 7мс, wireguard стабильно держал 600Мб/с и 3 мс (правда первый пакет идёт 7мс). т.к. хост в другом дц нужен был как удалённая реплика для монги, вопрос с выбором сам отпал. За 2 года как я там работал — проблем ниразу не возникло.
Почитал предыдущие статьи, как понимаю это пока что только в последних ядрах линукса можно получить такие скорости (потому что там Wireguard впаян в ядро),То, что он не был принят в ядро, означало лишь то, что при сборке ядра нужно было накладывать патчи. Наоборот, принятие WG в ядро может привести к некоторой просадке производительности, потому что одним из условий принятия было «мы принимаем вашу криптографию, без которой WG работать не может, в ядро, но в некоторых моментах в качестве ответного жеста вы обязуетесь использовать то, что уже есть в ядре, пусть оно и медленнее, чем ваше». Впрочем, это всё равно быстрее, чем OpenVPN, который работает в юзерспейсе. Конечно, ещё есть IPSec, но WG выигрывает у него простотой настройки.
а с телефонами картинка мрачнаяНаличие WG в ядре не гарантирует, что производитель вашего телефона не отключил WG на этапе сборки ядра, поэтому кастомные ядра — наше всё.
Помимо того, о чём уже написали выше, Wireguard поддерживает роуминг клиента. К примеру, вы с телефона подключены через SSH/RDP по мобильной сети к какому-либо серверу, переключаетесь на Wi-Fi, но соединение остаётся активным и не прерывается. Лично для меня, это самый огромный плюс, так как больше никто так не умеет, а пользуюсь я этим достаточно часто.
Можете мое сообщение всерьез не рассматривать — но ровно так у меня себя ведет Cisco VPN client (anyconnect который)
Не буду спорить, возможно там и есть такой функционал, но за полчаса поисков я не смог ничего найти про плавное переключение между разными сетями без разрыва соединения между сервером и клиентом VPN.
В любом случае, Wireguard пока не конкурент Cisco. Должно пройти достаточно много времени, прежде чем новому типу VPN начнут доверять компании.
так как больше никто так не умеет
вы что-то путаете, openvpn работает ровно так же.
убрал маршрут по умолчанию с основного провайдера (трафик побежал через резервного) — задержки увеличились (обвёл красным).
вернул обратно — уменьшились.
всё это без потерь пакетов. в режиме static key, но, вроде бы, это не принципиально.
критично только, что через udp (в случае tcp будет реконнект с потерей пакетов).
Ну и udp все-таки быстрее будет, но в вашем случае это не поменять (хотя, провайдер 53 порт тоже режет? не должен)
провайдер режет только входящие соединения и только от своих же сетей. Я попробовал воспользоваться STUN-клиентом для открытия UDP-порта 51820, затем поднял на этом порту netcat и попытался подключиться по полученному от STUN-сервера адресу со своего VPS. Соединение успешно установилось, данные пошли. Но при попытке соединения с узлов в квартире 2 и квартире 3, которые являются клиентами того же провайдера, что и я, я получал ошибку «Connection refused».
С отключенной компрессией и отключенным tcp-nodelay:
rtt min/avg/max/mdev = 124.963/143.488/249.760/38.576 ms
С отключенной компрессией и включенным tcp-nodelay
rtt min/avg/max/mdev = 124.819/137.237/174.284/17.251 ms
В обоих случаях скорость по показаниям iperf держится в районе 3.5 — 4.7 мбит/сек, в зависимости от размера tcp-window
При этом WireGuard дает такие цифры:
rtt min/avg/max/mdev = 124.889/127.775/153.315/7.608 ms
и при этом скорость находится в районе 5 мбит, иногда даже чуточку выше, практически независимо от размера tcp window. В общем выдает те же значения, что и какой-нибудь условный speedtest
EoIP+IPSec не рассматривали как альтернативу?
Tinc VPN умеет в L2 и mesh. (Но по скорости он как OpenVPN т.к. тоже не в ядре)
У меня между домашними сетями tun. При 100мбитах, в среднем, скорость между сетями 20-30мбит. К сожалению пластиковый роутер не в состоянии справляться с шифрованием быстрее + openssl на openwrt весьма отличается от "взрослого" openssl. Я пробовал wireguard год назад, и получил прирост 3-5мбит, что в моем понимании не серьезно.
Для себя сделал вывод что wireguard штука хорошая, но видимо на пластиковых роутерах особых плюсов перед openvpn я не получу.
При 100мбитах, в среднем, скорость между сетями 20-30мбит. К сожалению пластиковый роутер не в состоянии справляться с шифрованием быстрее + openssl на openwrt весьма отличается от "взрослого" openssl. Я пробовал wireguard год назад, и получил прирост 3-5мбит, что в моем понимании не серьезно.
честно говоря, пока не тестировал на роутерах, но ваши результаты вызывают сомнения.
https://openwrt.org/docs/guide-user/services/vpn/openvpn/performance
https://openwrt.org/docs/guide-user/services/vpn/wireguard/performance
А как же статьи с Wireguard, Shadowsocks и v2ray?
И маскировкой за Cloudflare
На компьютере с интерфейсом 192.168.0.1
#включим IP forwarding, если он не включен
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ИМЯ_ИНТЕРФЕЙС_С_192.168.0.1 -j MASQUERADE
На компьютерах из сети 10.x.x.x
route add -net 192.168.0.0/24 gw 10.0.0.2
Переход с OpenVPN на WireGuard для объединения сетей в одну сеть L2