Как стать автором
Обновить

Комментарии 28

Если вы не доверяете vps, то зачем вы шифруете трафик до него? Сделайте тупой gre или vxlan с plaintext трафиком, внутри которого уже гоняйте нормальный шифрованный трафик. И быстрее, и отлаживать проще (видно вложенный шифрованный трафик в tcpdump).


Использование же sshtunnel чревато tcp головного udp, это очень плохой антипаттерн для трафика.

я так понимаю, что для организации gre нужен выделенный IP с обеих сторон, но у меня этого нет — именно поэтому и было принято подобное решение. А vxlan я даже не рассматривал. Почитаю о нем.

vxlan даст вам udp транспорт (без шифрования). Но там надо иметь endpoint'ы с обоих сторон.


Если вам очень нужно иметь tcp-туннель, то можно сделать tcp без шифрования. Кстати, тот же ssh умеет использовать jump hosts, так что можно наколхозить сеть на одном ssh.

Поделитесь пожалуйста, чем ещё на практике Wireguard лучше OpenVPN?
(кроме повышения скорости, хотя тут мне кажется именно различие конфигурации и привело к этому)
Тоже присматриваюсь к 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 будет реконнект с потерей пакетов).

Не могли бы вы к статье приложить OpenVPN конфигурацию? Хотелось бы на нее тоже взглянуть
приложил
Спасибо. Я просто думал можно ли как-то уровнять условия с Wireguard, чтобы более объективно сравнить задержку и скорость. Навскидку, в конфиге не хватает tcp-nodelay, который может сильно повлиять, и comp-lzo компрессию надо бы убрать, она грузит цпу, а толку от нее мало, бывает даже больше вреда. Ну и udp все-таки быстрее будет, но в вашем случае это не поменять (хотя, провайдер 53 порт тоже режет? не должен). Интересно как изменилась бы задержка с такими настройками.
Попробовал включить tcp-nodelay и выключить компрессию — скорость возросла незначительно до ~4 мбит/сек, но пинг, как мне показалось, стал еще более нестабильным, хотя нужно попробовать потестировать еще, так как может канал был более загруженным. Я сообщу Вам, когда проведу более масштабное тестирование с этими настройками.

Ну и 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
Спасибо!
Нет., не рассматривал, так как с самого начала настроил OpenVPN и он просто работал. На WireGuard перешел, из-за того, что меня привлекла его простота

Tinc VPN умеет в L2 и mesh. (Но по скорости он как OpenVPN т.к. тоже не в ядре)

У меня между домашними сетями tun. При 100мбитах, в среднем, скорость между сетями 20-30мбит. К сожалению пластиковый роутер не в состоянии справляться с шифрованием быстрее + openssl на openwrt весьма отличается от "взрослого" openssl. Я пробовал wireguard год назад, и получил прирост 3-5мбит, что в моем понимании не серьезно.
Для себя сделал вывод что wireguard штука хорошая, но видимо на пластиковых роутерах особых плюсов перед openvpn я не получу.

Совсем не реклама, используйте кинетик, у меня дает 50-55 Мбит на wireguard.
При 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
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории