Дружим Wireguard 3X-UI с Mikrotik
В новом для меня типе туннеля долго не мог разобраться т.к. для его работы нужны ключи шифрования а они бывают Server и Peer бывают Secret и Public какой куда вставлять и что как настраивать будем разбираться.
В ранее оформленной статье мы рассматривали как установить и настроить панель 3X-UI по этому в рамках этой статьи мы рассмотрим только настройку Wireguard.
1) Добавим новый входящий откроем Inbounds -> Add Inbound
Remark - название нашего соединения
Protocol - используемый протокол (выберем Wireguard)
Sniffing - я всегда включаю по умолчанию
Allowed IP's - указываются ip-адрес wireguard-клиента (peer)
Wireguard это относительно простой протокол маршрутизация в котором указывается напрямую в конфигурации.
Если просто то AllowedIPs должен содержать ip-адрес wireguard-клиента (peer) с маской 32, и разрешенные сети (например 192.168.х.0/24) которые при этом не должны пересекаться. Но в этой статье мы рассматриваем VPN сервер для выхода в интернет, а не маршрутизирования сетей по этому тут мы указываем только адреса пира(ов) если их несколько.
Остальные поля заполнятся сами, единственно при желании можете поменять Port.
На этом настройка серверной части закончена, на выходе вы получите конфиг следующего вида:
[Interface] PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= Address = 10.0.0.2/24 DNS = 1.1.1.1, 1.0.0.1 MTU = 1420
# Wireguard-1 [Peer] PublicKey = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY= AllowedIPs = 0.0.0.0/0, ::/0 Endpoint = yourdomain.com:yourport
Теперь осталось дело за малым настроить Mikrotik и ввести Key куда следует
1) Создадим интерфейс (его нужно создавать всегда и когда Mikrotik является сервером и когда клиентом) WireGuard -> Add
Name - имя интерфейса может быть любое
MTU - следует указывать тоже что и на сервере 3X-UI
PrivateKey - тут указываем SecretKey который берем из настроек Peer в 3X-UI
если рассматривать конфиг то это следующий ключ
[Interface] PrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=
Будьте внимательны все ключи должны заканчиваться знаком «=», если копировать через двойной клик этот знак не выделяется и ключ копируется не полностью!
PublicKey - сгенерируется сам и если всё хорошо он совпадtn с ключом в 3X-UI
2) Создадим клиентское подключение Peer WireGuard -> Peers -> Add
Name - имя peer может быть любое
Allowed IP's - указываются 0.0.0.0/0 и ::/0 т.к. мы будем разрешать весь трафик в туннеле
Endpoint - адрес нашего сервер 3X-UI
Enpoint Port - порт который мы указывали выше в настройках Wireguard
Persistent Keepalive - это время посылки пакета поддерживающего связь не разрывной (если не указывать то микротик будет устанавливать связь только при наличии трафика) рекомендуемое значение 00:00:25
PublicKey - тут указываем PublicKey из настроек Wireguard в 3X-UI
если рассматривать конфиг то это следующий ключ
# Wireguard-1 [Peer] PublicKey = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY=
3) Добавим адрес для нашего интерфейса Wireguard IP -> Address -> Add
Address - берем из настроек Peer в 3X-UI только маску указываем /24
Network - если просто, то тот же адрес только с 0 на конце
Interface - выбираем ранее созданный интерфейс Wireguard
Если всё хорошо то мы увидим успешное рукопожатие в таблице Peers
ВНИМАНИЕ! Если вы не заполняли значение Persistent Keepalive , то пока нет обмена трафиком HandShake не произойдет и в логах Mikrotik будет пусто по этому совет запустите параллельно из терминала ping 10.0.0.1 (внутренний адрес wireguard в 3X-UI), а лучше укажите Persistent Keepalive равный 25с, иначе может сложиться впечатление, что ничего не поднимается (лично потратил на борьбу с несуществующей проблемой часа 3)
4) Так же в дополнение нам нужно добавить правило Masquerade в Firewall, чтоб в дальнейшем маршрутизировать трафик. IP -> Firewall -> NAT -> Add
Out. Interface - выбираем наш созданный интерфейс Wireguard
На вкладке Action выбираем Masquerade
Дальше настраиваем маршрутизацию как душе угодно. В статье Маршрутизация отдельных приложений я как раз рассматривал один из примеров.