Проблемы установки Wireguard на Linux и объединение сетей
Устанавливая ранее Wireguard сервер на Centos7 (хотя такое случается и с Убунтой), при инсталляции наткнулся на неприятный баг, с которым не стал разбираться, как следует, а обошёл его. В частности, категорически не хотела работать стандартная конфигурация и вынудила привязывать интерфейс сервера к реальному IP, что неправильно и порождает цепную реакцию хаоса. Присмотревшись повнимательнее, стало понятно следующее.
При контрольной инсталляции на подопытную виртуалку получаем такой результат:
# systemctl start wg-quick@wg0-server
Job for wg-quick@wg0-server.service failed because the control process exited with error code.
А в journalctl -xe видим такую картину:
а на
# modprobe wireguard
Отвечает: modprobe: FATAL: Module wireguard not found.
Что является характерным показанием к пересборке драйверов ядра линукс, но сначала нужно проверить пациента на гипотетическую переносимость операции:
# uname -r
Теперь проверим состояние Wireguard'а:
# dkms status
Added, Карл! Но не Installed, что нам необходимо. Поэтому, выполняем команду построить стену заново, чётко выразив свои требования по поводу только что узнанной версии:
# dkms build wireguard/1.0.20211208
Тут он начиная грязно ругаться, на что мы ему интеллигентно ответствуем:
# yum install "kernel-devel-uname-r == $(uname -r)"
Далее спокойно и упрямо настаиваем на своём:
# dkms build wireguard/1.0.20211208
# dkms status
# dkms install wireguard/1.0.20211208
Придирчивый прораб не должен заметить ни одного изъяна в конструкции, никаких erroroв и мелких wrningов.
Так, с этим поросёнком мы разобрались, теперь можно приниматься за шоколадный десерт, объединение в сеть разных клиентов, например Windows. Итак, мы проведём рекогносцировку и определимся, что мы имеем. Сервер с адресом 10.0.0.1 в подсети 10.0.0.0/24, к которому будем последовательно добавлять удалённые узлы 10.0.0.2..10.0.0.x, но чтобы они могли авторизоваться во внутренней сети, допустим 192.168.100.0/24, нам необходимо в конфигурации клиента это явно обозначить:
AllowedIPs = 10.0.0.0/32, 192.168.100.0/24
Теперь осталось только настроить паромщика на переправе, который с левого берега будет всех нуждающихся направлять на правый без долгих рассуждений:
PostUp = iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE; iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o wg0-server -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE; iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o wg0-server -j MASQUERADE
Приятным бонусом обретенной гомогенности будет отсутствие характерного скрежета борта Windows об айсберг VPN с отрывающимися болтами, падающими тарелками, тонущими дикаприо, отваливающимися удалёноками, туннелями и прочими разрывами соединений.
Да, такой вариант в общем виде весьма небезопасен, но это лишь рабочий каркас, на который можно с чистой совестью нанизывать свои бордюры на ограничения под зловещей маской подсети и правилами файрвола.




