Форум OlegON > Компьютеры и Программное обеспечение > Сеть

Как работает Wireguard, на пальцах : Сеть

02.05.2024 6:50


06.11.2023 18:45
OlegON
 
Только что завел Wireguard приблизительно на 5 сервере за сегодняшний день. С учетом того, что моя любимая организация портит сеть по черному, задача не самая тривиальная, учитывая stateless соединения Wireguard

Для начала просто закрываю SSH и ставлю утилитки, все, как обычно.
Код:
dnf in wireguard-tools iptables mc traceroute lynx bind9-next-utils tcpdump
iptables -A INPUT -p tcp --dport 22 ! -s 77.37.184.187 -j DROP
echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf;sysctl -p
Ключи генерирую.
Код:
wg genkey | tee server_private_key | wg pubkey > server_public_key
wg genkey | tee client_private_key | wg pubkey > client_public_key
На стороне микротика как-то все было понятно, не слишком сильнее сложно и на стороне сервера. Просто создаем файлик /etc/wireguard/wg0.conf
Код:
[Interface]
PrivateKey = хххххххххххххххххххх
Address = 10.8.0.1/24
ListenPort = ххххх
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens3 -j MASQUERADE
Table = off

[Peer]
PublicKey = хххххххххххххххххххх
PresharedKey = хххххххххххххххххххх
AllowedIPs = 0.0.0.0/0
Endpoint = 77.37.184.187:ххххх
Далее запускаем и включаем сервис
Код:
systemctl start wg-quick@wg0.service
route add -net 192.168.0.0/16 gw 10.8.0.2 metric 0 dev wg0
Все просто и работает с полпинка, когда работает. У меня не всегда работало.

Почему-то, мне кажется, что соединение одностороннее, то есть если микрот коннектился, то сервер Endpoint игнорировал. Хотя, в ответ на команду wg выводится, что пир присоединен, судя по небольшому времени последнего рукопожания. В общем, невозможно понять, работает оно нормально или нет и кто к кому подключился.

И совсем не понимаю, что такое AllowedIPs. Как я понял, это подсети, которые дозволительно рутить с пира-клиента. У меня почему-то никакие IP не проходили через WG пока я не разрешал все 0.0.0.0/0. Но тут выяснился замечательный прикол, что если какие-то адреса указываешь разрешенными, то автоматом WG рутит на свой интерфейс все эти самые адреса, а если попытаться указать 0.0.0.0/0, то... В общем, если посмотрите выше, я сервис не включаю, а запускаю только. В один прекрасный момент остался без связи с VPS и пришлось ее перезаливать. Чтобы рутинг не ломался, надо поставить Table = off. Бился, бился, так и не смог понять, почему если указать, например 10.8.0.2/32, то ничего не работает, хотя по умолчанию при поднятии интерфейса он NATит все, и кроме 10.8.0.2 в интерфейсе никого нет... В общем, если кто-то знает, прошу поделиться.
06.11.2023 19:00
OlegON
 
Поинтересовался, что же такое этот ключ.
Выяснилось, что это просто 32-битный массив в base64
Код:
from base64 import b64encode
from secrets import token_bytes
b64encode(token_bytes(32)).decode('utf-8')
или что-то вроде
Код:
echo $RANDOM | md5sum | head -c 32 | base64
Читать подробнее надо отсюда : (я еще не читал :)
Часовой пояс GMT +3, время: 06:50.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.