Как разрешить Wireguard с помощью firewalld?

Вопрос или проблема

Я застрял на самом базовом этапе, который заключается в настройке PC2 (10.0.0.3), чтобы разрешить подключения от PC1 (10.0.0.1). Просто простое подключение, без VPN или чего-то подобного, на данный момент.

Я использую Fedora Workstation, и мне не удается найти правило, чтобы это работало. Отключение firewalld работает, как и установка цели на ACCEPT. Обе машины настроены на использование порта 51820/udp, так что я не совсем уверен, что еще мне следует сделать.

На обеих сторонах идет обмен ключами, даже когда пинг не работает, что довольно интересно.

Пока у меня есть следующее:

sudo firewall-cmd --zone=wireguard --add-interface=wg0 --permanent && sudo firewall-cmd --reload

sudo firewall-cmd --zone=wireguard --add-port=51820/udp --permanent && sudo firewall-cmd --reload

Примечание: Изменение зоны на FedoraWorkstation, которая по умолчанию, тоже не помогло.

PC1

[Interface]
Address = 10.0.0.1/32
PrivateKey = скрыто
ListenPort = 51820

[Peer]
PublicKey = скрыто
Endpoint = скрыто:51820
AllowedIPs = 10.0.0.3/32
PC2

[Interface]
Address = 10.0.0.3/32
PrivateKey = скрыто
ListenPort = 51820

[Peer]
PublicKey = скрыто
Endpoint = скрыто:51820
AllowedIPs = 10.0.0.1/32

На первый взгляд, я подозреваю, что вы добавляете --add-service=wireguard в неправильную зону.

“Внешние”, туннельные пакетные данные по определению1 не проходят через туннельный интерфейс – через туннельный интерфейс проходит “внутренний” трафик, такой как ваши пинги, SSH-соединения или что-то другое; но как только туннель принимает и инкапсулирует это, пакеты WireGuard UDP проходят через ваши физические интерфейсы (eth0, wlan0 и так далее), поэтому они должны быть разрешены через стандартные зоны firewalld (публичная и т.д.), а не зону, содержащую интерфейс wg0.

1 Если бы пакеты WireGuard проходили через wg0, они бы снова инкапсулировались, и снова, и снова, в результате чего возникла бы бесконечная петля.

Ответ или решение

Настройка Firewalld для WireGuard

Настройка VPN, в частности WireGuard, может быть затруднительной, особенно при использовании средств управления брандмауэром, таких как firewalld. Если вы столкнулись с проблемой настройки соединения между двумя ПК (PC1 и PC2) с использованием WireGuard и вам необходимо правильно настроить Firewalld, следуйте приведенным ниже шагам.

Шаг 1: Проверка конфигурации WireGuard

Сначала убедитесь, что оба устройства (PC1 и PC2) правильно настроены и используют корректные настройки WireGuard. Вот пример конфигурации для обоих ПК:

PC1:

[Interface]
Address = 10.0.0.1/32
PrivateKey = <Ваш_закрытый_ключ>
ListenPort = 51820

[Peer]
PublicKey = <Открытый_ключ_PC2>
Endpoint = <IP_PC2>:51820
AllowedIPs = 10.0.0.3/32

PC2:

[Interface]
Address = 10.0.0.3/32
PrivateKey = <Ваш_закрытый_ключ>
ListenPort = 51820

[Peer]
PublicKey = <Открытый_ключ_PC1>
Endpoint = <IP_PC1>:51820
AllowedIPs = 10.0.0.1/32

Убедитесь, что вся информация корректна и что оба интерфейса WireGuard запущены.

Шаг 2: Настройка Firewalld

Процесс настройки Firewalld включает в себя несколько ключевых моментов, которые касаются виртуального интерфейса и внешних сетевых интерфейсов. Поскольку WireGuard работает по протоколу UDP, необходимо убедиться, что соответствующий UDP-порт открыт не только для интерфейса wg0, но и для других физических интерфейсов (например, eth0, wlan0), через которые будет проходить трафик WireGuard.

2.1. Открытие порта в Firewalld

Для открытия порта 51820/UDP в Firewalld выполните следующую команду:

sudo firewall-cmd --zone=public --add-port=51820/udp --permanent

После чего перезагрузите правила:

sudo firewall-cmd --reload

Заметка: Если ваш ПК подключен к сети с более высокой безопасностью, возможно, вам нужно будет использовать другую зону вместо public.

2.2. Добавление интерфейса WireGuard

Теперь добавьте интерфейс wg0 к Firewalld. Для этого выполните:

sudo firewall-cmd --zone=wireguard --add-interface=wg0 --permanent
sudo firewall-cmd --reload

Не забудьте, что необходимо именно сначала указать, что wg0 должен быть в зоне, а затем настроить другие правила.

Шаг 3: Проверка состояния соединения

После выполнения всех вышеперечисленных шагов выполните проверку состояния WireGuard и убедитесь, что обе стороны могут производить пинг друг друга через заданные IP-адреса:

ping 10.0.0.3  # С PC1 на PC2
ping 10.0.0.1  # С PC2 на PC1

Заключение

При правильной настройке Firewalld и WireGuard соединение между двумя ПК должно работать. Убедитесь, что Firewalld настроен правильно, что все изменения сохранены и применены. Если после изменения правил соединение не работает, проверьте логи firewalld и WireGuard на наличие ошибок.

Оцените материал
Добавить комментарий

Капча загружается...