В WireGuard на отправляющем узле, как пакет отправляется с интерфейса `wg0` на порт UDP?

Я пытаюсь понять, как только пакет достигает интерфейса WireGuard ( wg0 ), как он отправляется на порт UDP, откуда его можно отправить принимающему партнеру.

Я читал технический документ WireGuard, в котором говорится:

Сам интерфейс имеет закрытый ключ и порт UDP, на котором он прослушивает (подробнее об этом позже), за которым следует список пиров.

У меня есть только элементарное понимание работы в сети, но я думал, что процессы прослушивают порты, так что же означает, что сетевой интерфейс прослушивает порт UDP?

Если есть способ прослушивания порта сетевым интерфейсом, то на принимающем узле , пакет также может быть получен через интерфейс WireGuard из порта UDP. Это правильное понимание?

0
задан 8 September 2020 в 21:13
1 ответ

WireGuard создает сокет UDP и привязывает его к адресу с помощью специальных функций ядра: sock_create_kern и kernel_bind.

Вот исходный код WireGuard для создания сокета IPv4. Аналогичный код есть и для сокета IPv6.

WireGuard также привязывает сокет к туннелю UDP с помощью вызова setup_upd_tunnel.

1
ответ дан 2 March 2021 в 20:03

Теги

Похожие вопросы