vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2022-01-15 05:39 pm

Wireguard и все-все-все

Вот думаю, а не перейти ли мне с openvpn на wiregard для создания приватной сети, объединяющей мои компьютеры.Преимущества wireguard - бо́льшая скорость, более простая ключевая инфраструктура, меньше любителей резать протокол на файволлах.

Недостатки - более простая ключевая инфраструктура, требующая дописывания в конфиг на сервере всех peer-ов. С openvpn-то в этом плане всё просто - предъявил peer при коннекте сертификат, подписанный УЦ, которому сервер доверяет, и сервер его пустил. Еще и в DNS оно само прописывается. Потребности в отзыве сертификатов VPN-клиентов у меня пока не возникало, хотя я знаю как это делается. У wg конечно отлучить клиента от сети проще - никаких crl-ей не надо, выкинул его ключ из конфига сервера и всё. Кроме того, жесткая завязка на протокол. openvpn умеет udp, умеет tcp, умеет делить порт с веб-сервером, умеет ходить через прокси. В общем варианты обхода резки на файрволлах там многообразны.

Кстати, я вот если я вдруг соберусь перейти на wireguard, мне мой личный удостоверяющий центр X.509 совсем перестанет быть нужным. Сейчас у меня все сервисы на wagner.pp.ru (web, jabber, smtp, imap) используют let's encrypt-овские сертификаты. Хотя это и менее секьюрно и подтверждать смену сертификата (вернее двух imap и smtp) в почтовом клиенте на каждой машине, где он у меня стоит, приходится раз в квартал.

Локальные postfix-ы (которые у меня по-прежнему есть на десктопе и на всех ноутбуках) уже давно перешли с авторизации у сервера по сертификатам на парольную. (впрочем, локальные постфиксы надо вообще обязать ходить по smtp внутри VPN и там их пускать без SSL и авторизации). Остается, пожалуй только локальный веб-сервер, который для тестовых целей на десктопе. Но в принципе, и на него можно летсэнкриптовский сертификат получать. Надо только отдавать letsencrypt-у для него AAAA запись и не отдавать A. Дома-то у меня провайдер IPV6 поддерживает.

Вот интересно, реально ли для ноутбуков, которые заметную часть времени проводят в сетях, где ipv6 нет, сделать wireguard-овскую vpn окном в ipv6 мир. в принципе ничто не мешает раздать им адреса из какой-нибудь /112 или даже /80 подсетки той /64 которая у меня на сервере есть. Благо в конфиге wg все равно пишутся конкретные адреса. А роутить ::/0 через wireguard - штатное и рекомендуемое поведение, благо будучи ядерным модулем, он как-то сам разбирается где его пакеты, а где остальное.

Тонкость тут заключается в том, чтобы заметить, выдали ли в локальной сети ноутбуку globally routable ipv6 адрес или нет. И если не выдали сделать wireguard-овский сервер дефолтным route для ipv6. Еще желательно это уметь делать вручную. На случай если вдруг выяснится что в данной сети есть нехорошие ipv6 firewall-ы.

Интересно, правда, как это уживется с dyngo. Не придется ли туда какую-нибудь извращенную логику дописывать, чтобы соображало какой из двух адресов слать на сервер, чтобы тот создал AAAA-запись, соответствующую более подходящему ipv6-адресу? В смысле тому, на который по ssh пустят. Или наплевать, и всегда ходить через wireguard, считая его оверхед пренебрежимо малым?

[identity profile] juunitaki.livejournal.com 2022-01-15 03:22 pm (UTC)(link)
Разве нелья поднять IPv6 маршрут через VPN с метрикой больше, чем default по dhcp?

[personal profile] mdrt 2022-01-16 06:09 am (UTC)(link)
Для себя я решил: чем проще - тем лучше. И весь трафик отправил через wireguard.

Лет уже пять полёт нормальный.

[personal profile] mdrt 2022-01-16 04:14 pm (UTC)(link)
Вероятно.

Однако всё-же не вижу смысла устраивать пляски с dyngo и роутами, когда оно и так будет отлично работать.

У меня не получилось выделить вклад wg из RTT до пира, то есть никакой измеримой разницы в RTT что с wg что без него не было (гигабит, мск-франкфурт, мск-лондон). Так что я сделал вывод, что на не совсем уж слабом железе оно действительно работает на wire speed.

[personal profile] mdrt 2022-01-16 06:01 pm (UTC)(link)
Ааа...

Тогда конечно. Я, правда, не видал ещё динамической перестройки wg peers через avahi. Но идея занимательная. Тут надо бы поразмыслить.

Спасибо, извините, что побеспокоил.



llivejo: (Default)

[personal profile] llivejo 2022-01-15 09:37 pm (UTC)(link)
> подтверждать смену сертификата (вернее двух imap и smtp) в почтовом клиенте на каждой машине, где он у меня стоит, приходится раз в квартал.

по-моему если не перегенерировать приватный ключ, то обновление сертификата проходит для всех клиентов незаметно (я использую acme_tiny вместо Certbot)

[personal profile] fhunter 2022-01-15 10:42 pm (UTC)(link)
С Wireguard может быть риск того, что его будут блокировать по сигнатуре протокола, не разбираясь - куда именно он идёт. Некоторые провайдеры так уже делали в районе сентября 2021.

У Openvpn всё же обычное TLS соединение, рисков несколько меньше.
beldmit: (Default)

[personal profile] beldmit 2022-01-15 10:59 pm (UTC)(link)
У VPN оно тоже не совсем обычное. Точнее, более-менее обычный handshake, а дальше - нифига.

[personal profile] fhunter 2022-01-15 11:41 pm (UTC)(link)
Я исхожу из того, что сложных правил на массовых DPI писать никто не будет.
Ничего сложнее "вот этот порт, вот эта цепочка байт" на скоростях уже в гигабиты нормально работать не может. (Иллюстрацией можно посмотреть про "замедление твиттера", которое пытались сделать по "t.co" и не осилили.
Значит - если протокол хотя бы по начальной сигнатуре похож на TLS/SSL - его не будут фильтровать. А уж если он висит на 443-м порту - тем более. А openvpn такое умеет. при этом умеет и делить порт с веб-сервером - так что активные DPI тоже увидят всё что требуется
burbilog: (Default)

[personal profile] burbilog 2022-01-23 08:52 pm (UTC)(link)
Я пользую wireguard + udpspeeder + udp2raw

Если они не научатся что-то отлавливать в потоке udp2raw, прикидывающегося честным tls трафиком на 443 порту, должно выдержать.

Ну а на самый крайний случай надо морочиться v2ray и там уже просто честный https снаружи.

[personal profile] usovalx 2022-02-17 01:13 pm (UTC)(link)

Так сказать лучше поздно чем никогда ;)

Может будет удобнее на p2p vpn посмотреть? Как пример - nebula vpn или tinc (возможно ещё zerotier)?

Они весьма аггресивно пробивают прямые соединения между машинами, так что можно просто весь трафик между машинами гонять по vpn. Единственное ограничение - nebula пока совсем не умеет turn если обе стороны совсем уж недоступны.

[personal profile] usovalx 2022-02-17 04:38 pm (UTC)(link)
Заменить всю гимнастику с регистрацией в DNS, выбором куда ходить - в VPN или напрямую и всем прочим.
Если vpn устанавливает прямые соединения вся эта гимнастика не нужна.

[personal profile] usovalx 2022-02-18 08:06 pm (UTC)(link)
Конкретно для nebula - ему нужно достучаться до координатора (lighthouse in their terminology).
В нормальной ситуации он живёт где-то в облаке, на публичном IP.

Но можно поднять второй прямо в локалке - и тогда машины внутри локалки переживут потерю интернета (в смысле nebula будет способна устанавливать прямые соединения между машинами в локальной сети).

[personal profile] usovalx 2022-02-19 08:53 pm (UTC)(link)
Буду завязывать с агитацией ;)

В случае nebula роль lighthouse играет она сама по себе (это просто флаг в конфиге любого из узлов сети).

[personal profile] usovalx 2022-02-20 06:57 pm (UTC)(link)
В данном случае - несколько выделенных хостов. Одни в VPS, второй на даче - оно вполне работает с несколькими координаторами.
Но да - нужна какая-то машина или с openWRT или с линуксом/виндой которая более менее стабильно поднята.

[personal profile] usovalx 2022-02-19 08:59 pm (UTC)(link)
Не, как ходить во внешний мир это другой вопрос - тут я предлагал решение только для связи между своими машинами по кратчайшему пути, пробиваясь через возможные NAT и т.п. - вот эту часть nebula решает весьма неплохо.

И заодно позволяет прости использовать внутренние VPN адреса не задумываясь в одной сети мы находимся или нет.

[personal profile] usovalx 2022-02-20 06:59 pm (UTC)(link)
Не, понятно что статические VPN адреса можно и нужно вписать в DNS.
Более того оно само может работать как DSN сервер для имён вписанных в сертификаты.

[personal profile] usovalx 2022-02-17 04:43 pm (UTC)(link)
Похожую схему поверх WireGuard делает tailscale, но это надо отдавать всю авторизацию им, и на даче при мертвом аплинке оно не заработает.

[personal profile] usovalx 2022-02-18 08:08 pm (UTC)(link)
Детали?

В оригинале uplink/downling использовался для спутниковой связи.
В моём использовании - линк к провайдеру/интернет.