Комментарии 50
systemd[1]: Starting WireGuard via wg-quick(8) for wg0/server...
wg-quick[4030]: [#] ip link add wg0-server type wireguard
wg-quick[4030]: RTNETLINK answers: Operation not supported
wg-quick[4030]: Unable to access interface: Protocol not supported
wg-quick[4030]: [#] ip link delete dev wg0-server
wg-quick[4030]: Cannot find device "wg0-server"
systemd[1]: wg-quick@wg0-server.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start WireGuard via wg-quick(8) for wg0/server.
systemd[1]: Unit wg-quick@wg0-server.service entered failed state.
systemd[1]: wg-quick@wg0-server.service failed.
А openVPN там же становится сразу и без танцев.
Disclaimer: это точка зрения с позиции продвинутого юзера.
У вас нет пакета wireguard-dkms. В старых версиях wireguard был out-of-tree module и его надо было компилировать (этим dkms занимается). А wg-quick — это userspace утилита, она не может принудить ядро к поддержки того, чего в ядре нет.
Опять же, в том тесте что делал сегодня:
[root@ ~]# yum install wireguard-dkms
Loaded plugins: fastestmirror
Repository copr:copr.fedorainfracloud.org:jdoss:wireguard is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* base: ftp.rz.uni-frankfurt.de
* epel: mirror.23media.com
* extras: mirror.23media.com
* updates: ftp.rz.uni-frankfurt.de
Package 1:wireguard-dkms-0.0.20200215-2.el7.noarch already installed and latest version
Nothing to do
Репозиторий указывать другой? Вот это все никак не способствует еще более широкому распространению WG имхо. А жаль.
Я не спец по центосям, но гугль говорит так:
curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
yum install epel-release
yum install wireguard-dkms wireguard-tools
Тоже самое, nothing to do
Плюс там же в комментах есть чей-то чужой пакет
www.reddit.com/r/WireGuard/comments/cy8nk0/wireguard_module_not_loading_with_centos_7_kernel
У меня была эта же проблема на CentOS 7.7
запустил вот эти команды и теперь всё работает:
yum install kernel-headers-"$(uname -r)" kernel-devel-"$(uname -r)" -y
sudo dkms build wireguard/0.0.20200215
sudo dkms install wireguard/0.0.20200215
sudo modprobe wireguard
Вместо «0.0.20200215» вам нужно будет использовать вашу версию wireguard, которую можно найти вот так:
dkms status
Ну вам уже ответили. Могу только добавить, что с Linux 5.6 вообще ставить ничего не будет.
Обязательный момент, если Вы делаете настройку WG в Ubuntu и у Вас не стартует сервис:
Feb 07 08:59:32 my-wg-vscale systemd[1]: Starting WireGuard via wg-quick(8) for wghub…
Feb 07 08:59:32 my-wg-vscale wg-quick[30137]: [#] ip link add wghub type wireguard
Feb 07 08:59:32 my-wg-vscale wg-quick[30137]: RTNETLINK answers: Operation not supported
Feb 07 08:59:32 my-wg-vscale wg-quick[30137]: Unable to access interface: Protocol not supported
Feb 07 08:59:32 my-wg-vscale wg-quick[30137]: [#] ip link delete dev wghub
Feb 07 08:59:32 my-wg-vscale wg-quick[30137]: Cannot find device «wghub»
Feb 07 08:59:32 my-wg-vscale systemd[1]: wg-quick@wghub.service: Main process exited, code=exited, status=1/FAILURE
Feb 07 08:59:32 my-wg-vscale systemd[1]: wg-quick@wghub.service: Failed with result 'exit-code'.
Feb 07 08:59:32 my-wg-vscale systemd[1]: Failed to start WireGuard via wg-quick(8) for wghub.
Не забываем проверять загрузку модуля ядра modprobe wireguard:
root@my-wg-vscale:~#modprobe wireguard
modprobe: FATAL: Module wireguard not found in directory /lib/modules/4.15.0-50-generic
Устанавливаем:
root@my-wg-vscale:~#apt-get install linux-headers-$(uname -r)
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
linux-headers-4.15.0-50
Профит, сервис запускается.
К wireguard'у есть одна претензия. Они назвали этот параметр AllowedIPs, и теперь миллионы человек не могут настроить wireguard, потому что не понимают, что туда писать.
(если кто-то нашёл этот коммент и не знает что туда писать — это список адресов или CIDR'ов, которые "перехватывает" wireguard для заворачивания в туннель. Фактически, это список адресов, с которыми вы хотите общаться через VPN).
Там другая проблема всплывает: с динамической маршрутизацией или если нужны пересекающиеся адреса (несколько равноправных выходных узлов)
Это не проблема VPN-сервера никаким образом. Вы включаете маршрутизацию на "сервере" wg (если у вас звезда или звёзды) и спокойно разруливаете их любым удобным для вас протоколом.
Если у вас же mesh, то тут есть соотв. софт (да хоть bgp с "protocol direct"). Это точно не задача vpn-сервера и любая попытка вытащить сложную маршрутизацию туда ухудшит возможности "конструктора".
PostUp = ip address add dev %i <local-ip> peer <remote-ip>
Клиенту не нужно держать полноценную сессию для маршрутизации.
(У меня в планах попробовать поиграться с wg и ipv6/ra — там можно анонсировать сети от роутера). Будут ли ra ходить через wg?
По поводу маршрутизации скажу так. Если удаленный сервер дает доступ только к определенным сетям (например, рабочий vpn), то адреса придется прописывать на каждом клиенте. И на каждом же обновлять по мере необходимости.
Мой случай: это либо две точки входа в удаленную сеть, чтобы попасть внутрь, либо две равноправные точки выхода, которые надо динамически переключать между собой.
С точки зрения того же ospf стоит рассматривать сеть wg как point to multipoint non broadcast, прописать neighbour для доступных через vpn маршрутизаторов и проблемы с прописываем одинаковых мультикастовых allowed ip для разных пиров снимутся сами собой.
Ещё они сильно не хотят делать DisallowedIPs
или поддержку !
в AllowedIPs
. В итоге для исключения одной несчастной подсети приходиться писать абсолютно все остальные, которые не перекроют. Например официальное приложение на Android делает вот это, при включении опции Exclude local networks
:
AllowedIPs = 0.0.0.0/5, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 8.8.8.8/32
Скажем, у меня из домашней сети wg-тоннель к зарубежному серверу, куда маршрутизируются все нелюбимые РКНом адреса. AllowedIPs там 0.0.0.0/0, а маршруты уже строятся динамически.
С точки зрения настраивающего не понятно — это адреса в туннеле, или это адреса, с которых разрешено подключаться к wg? (так сказать, обратная сторона Endpoint). Вот я довольно серьёзно тупил при чтении мана над этим вопросом. Особенно, с учётом man'а к wg-quick, который говорит "ну, тут все параметры как у wg, плюс несколько своих".
Но да, производительность у ваергарда топовая, если живешь в свободной стране, это достаточно хороший выбор
это список адресов или CIDR'ов, которые "перехватывает" wireguard
wg ничего не перехватывает. Что маршрутизацией на интерфейс завернули, то и передаёт. Так что allowedips это именно список разрешенных к проброске к данному пира через vpn адресов
wg-quick перехватывает, настраивая маршруты ip-set'ом.
ну это все-таки побочное действие именно wg-quick
если настраивать интерфейсы через systemd-networkd, то такой побочки нет и о маршрутах нужно заботиться самостоятельно. А вот сам wireguard пакеты с ip не в списке allowed от пира принимать не будет. И это основное предназначение параметра.
О как, т.е. это ещё и подобие файрвола на трафик из туннеля?
в первую очередь
wg это не point-to-point, а point-to-multipoint, т.е. один wg интерфейс может общаться с несколькими пирами. Традиционным фаерволом трафик разрулить будет весьма проблематично.
На десктопе-сервере тоже есть плюсы, но, имхо, менее выражены
А что на телефоне с клиентами и Persistent VPN? Смогу ли я указать DNS внутри моей сети, через которую я выхожу в общий интернет?
У меня просто в домашней локалке сейчас l2tp/IPsec и я всё в pi-hole заворачиваю
Бонусом — на тот же сервер можно ходить не только микротиками, но и любым другим компьютером|телефоном без проблем. Ну и мне гораздо больше нравится жизнь без pre-shared key, но это уже личное.
Микротики, ноут, телефон и нода в Google Cloud :)
Случайно не по 53 порту подключались? Не смог на МФ подключиться с андройда по 53 порту, на других портах работает отлично
Оп. А Мегафон режет его?
И маршруты на адреса пиров есть в таблице маршрутов всегда, даже если пир оффлайн?
Это by design фича, или всё таки как то будет дописываться?
Они получили автоматизированное криптографическое доказательство математических методов, лежащих в основе WireGuard, хотя в самом коже всё ещё могут быть проблемы безопасности.
Опечатку исправьте, коже->коде
WireGuard — быстрый и безопасный VPN в ядре Linux