Pull to refresh

Comments 32

WireGuard будет поставляться из коробки со всеми ОС, включая мобильными.

а он разве ещё тогда не?

Спасибо за ответ. Я имею в виду момент, когда wireguard не придётся дополнительно устанавливать.

Конечно, можно установить ПО самостоятельно. Но если все основные ОС включат Wireguard в свой состав, то проблема интеграции пользовательского трафика в существующую сетевую схему станет ещё более актуальной.

Это юзерспейсная реализация протокола. При этом ядро Linux умеет само в WireGuard, но Android пока это не использует. С точки зрения производительности и энергопотребления ядерная реализация гораздо выгоднее.

AllowedIPs - это не "список разрешенных подсетей", а набор IP-адресов, которые локальный хост должен направлять удаленному узлу через туннель WireGuard. Этот параметр сообщает локальному хосту, что входит в туннель.

Спасибо, вы совершенно точно сформулировали то, что у меня не вышло

Нет, это таки список разрешенных src к приему из wg-туннеля. Если из туннеля прилетит что-то с src не в списке - оно будет отброшено. Вполне может быть поднято несколько разных туннелей, с абсолютно идентичными списками AllowedIPs (даже состоящими только из default-а), а что в какой туннель отправлять разруливать уже на уровне таблиц маршрутизации.

совсем нет, это именно "список разрешённых". по умолчанию wg добавляет эти же адреса в таблицу маршрутизации, но это совсем не обязательно.

wg самостоятельно ничего не добавляет. Вы, скорее всего, имеете в виду утилиту wg-quick из набора wireguard-tools?

Помоему логично что сервис с именем wg-quick пинает бинарник с именем wg-quick не?

Да, всё верно. но сама утилита wg не добавляет маршруты. Маршрутами занимается указанная вами утилита wg-quick

прошу прощения за некоторую резкость в моём комменте выше, я был уверен что отвечаю на другой коментарий на эту же тему в этом же посте.

Зависит от страны.

В таких странах как Иран и Китай с хорошими DPI нужны более интересные решения вроде Shadowsocks + v2ray, obfs proxy, port knocking и т.д.

Вы разделяете утилиту wg-quick и wg, но wg-quick это, условно говоря, bash обёртка вокруг wg. Если вам чего-то не хватает в wg-quick то дописать это прямо в него достаточно просто.

https://github.com/WireGuard/wireguard-tools/blob/master/src/wg-quick/linux.bash

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

Ваша текущая связка из wg-quick для одной части задачи и wg для другой выглядит сложнее и не такой "очевидной для других специалистов". По-моему лучше дописать вторую часть в свой новый форкнутый bash и хорошенько прокомментировать его + создать хорошую документацию.

Если это будут какие-то универсальные дополнения, то можно послать PR в репозиторий самого wg-quick, тогда у всех будет ваша версия. The power of open source :)

Хорошая статья для новичков, но я думаю кому нужно было то те нашли документацию, которая есть и хорошо написана

Спасибо! Надеюсь, эта статья сможет помочь кому-нибудь разобраться с Wireguard!

Да что говорить - шикарная статья на самом деле. Спасибо огромное!

По поводу PersistentKeepAlive – просто. Этот параметр нужен для увеличения надёжности соединения именно в случае с NAT и брандмауэром. Для определения мертвых соединений wireguard использует механизм Passive Keepalive, см. 15 стр. Whitepaper. Поэтому, если у вас настроен нормально брандмауэр или NAT и Wireguard, то никаких проблем быть не может «by design». Но вы используете NAT, как я понял (соединяете датацентры), и поэтому вам этот параметр необходим. А так раз в 120 секунд новые безопасные сессии создаются, поэтому при PAT или DNAT, если не будет передача осуществляться, произойдёт, возможно, обрыв.

Because every transport data message sent warrants a reply of some kind—either an organic one generatedby the nature of the encapsulated packets or this keepalive message—we can determine if the secure sessionis broken or disconnected if a transport data message has not been received for (Keepalive-Timeout+Rekey-Timeout) seconds, in which case a handshake initiation message is sent to the unresponsive peer,once everyRekey-Timeoutseconds, as in section 6.4, until a secure session is recreated successfully or untilRekey-Attempt-Timeseconds have passed

В теории, всё именно так, как вы и сказали. На практике, если не выставлять этот параметр, даже без NAT соединение может рваться наглухо. Вплоть до необходимости переподнимать wg с обоих сторон

Если действительно так, что без нат (или брандмауэра) идет разрыв – где ваш багрепорт? Некомильфо.

Имхо, здесь какая-то плозая конфигурация. Потому как есть четкий алгоритм работы.

Как добавить сервер, не выключая сетевой интерфейс

если использовать systemd unit который поставляется в большинстве дистрибутивов в одном пакете с wg tools то проблемы не будет совсем

пишем конфиг, кладём его по пути /et/wireguard/IFNAME.conf, дальше через systemd играемся:
systemctl start/stop/restart/reload/enable/disable wg-quick@IFNAME.service
мякотка в том что при reload (а на самом деле, по моему опыту, и при restart) даже не теряется ни одного пакета (при условии конечно что изменённый конфиг не ломает связности и вообще написан без очепяток).

Единственное что я всё никак не могу запомнить как в этом конфиге указывать wg должен он или не должен использовать AllowedIPs как маршруты..

даже не теряется ни одного пакета

Это не значит, что не было сброса всего VPN соединения. Представим, что на одном интерфейсе у вас висит, допустим, 100 соединений.. И для того, чтобы изменить или добавить одно, придётся рвать соединение со всеми?
Утилита wg-quick именно что тушит интерфейс, а потом создаёт его заново. Убедиться можно, изучив логи.

Это не значит, что не было сброса всего VPN соединения

тем не менее это не вызывает никаких проблем, на моём опыте, хотя в теории конечно может.

Утилита wg-quick именно что тушит интерфейс

это при операции restart, при reload насколько я помню нет.

Ни в system unit.service не нашёл описания reload, ни у wg-quick

поделитесь, пожалуйста, какой это дистрибутив?

opensuse. но уверен что видел и в других.

Sign up to leave a comment.