Вопрос или проблема
Я застрял на самом базовом этапе, который заключается в настройке 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 на наличие ошибок.