Настройка WireGuard VPN в pfSense - полное руководство
WireGuard - современный VPN-протокол, реализованный как модуль ядра и обеспечивающий производительность, сопоставимую с аппаратно-ускоренным IPsec, при значительно меньшей сложности конфигурации. Протокол использует фиксированный набор криптографических примитивов (Curve25519, ChaCha20, Poly1305, BLAKE2s), что исключает необходимость согласования параметров шифрования и устраняет целый класс ошибок, связанных с выбором слабых алгоритмов.
В pfSense начиная с версии 2.7 WireGuard доступен как встроенный пакет. В данном руководстве описан полный цикл настройки: от создания туннеля до подключения клиентов на различных платформах и организации site-to-site соединения между двумя площадками.
Преимущества WireGuard
WireGuard проектировался с акцентом на простоту и производительность. Основные преимущества протокола:
- Минимальная кодовая база - около 4000 строк кода ядра, что существенно упрощает аудит безопасности по сравнению с IPsec (~400 000 строк) или OpenVPN (~100 000 строк).
- Высокая производительность - работа на уровне ядра исключает переключение контекста между пространствами пользователя и ядра, что даёт пропускную способность до 1 Гбит/с и выше на современном оборудовании.
- Быстрое установление соединения - обмен ключами занимает один round-trip (1-RTT), в то время как IKEv2 требует минимум два обмена.
- Современная криптография - фиксированный набор алгоритмов исключает downgrade-атаки и ошибки конфигурации.
- Встроенный роуминг - протокол автоматически обновляет endpoint при смене IP-адреса клиента, что важно для мобильных устройств.
- Минимальная поверхность атаки - WireGuard не отвечает на пакеты от неавторизованных источников (stealth-режим), что делает сервер невидимым для сканеров портов.
Ограничения
Перед выбором WireGuard в качестве VPN-протокола необходимо учитывать его ограничения.
Отсутствие аутентификации по имени пользователя и паролю
WireGuard не поддерживает аутентификацию по логину/паролю. Идентификация пиров выполняется исключительно по криптографическим ключам. Для организаций, требующих централизованного управления учётными записями через LDAP или RADIUS, это может быть существенным ограничением. В таких случаях следует рассматривать OpenVPN с аутентификацией через RADIUS .
Статическое назначение адресов
WireGuard не имеет встроенного механизма динамического назначения IP-адресов (аналога DHCP). Каждому пиру необходимо вручную назначить адрес из выделенной подсети туннеля. При большом количестве клиентов это требует ведения учёта назначенных адресов.
Отсутствие управления сессиями
Протокол не имеет концепции сессий или соединений. Нет возможности отследить, подключён ли клиент в данный момент, за исключением проверки времени последнего handshake на странице Status > WireGuard. Принудительное отключение клиента возможно только путём удаления его публичного ключа из конфигурации пира.
Ограниченное логирование
WireGuard выполняет минимальное логирование на уровне ядра. Информация о попытках подключения, ошибках аутентификации и деталях трафика ограничена. Для средств с повышенными требованиями к аудиту (PCI DSS, HIPAA) это может потребовать дополнительных мер мониторинга.
Привязка к порту
WireGuard принимает трафик на указанном UDP-порту на всех интерфейсах файрвола, а не только на выбранном. Это необходимо учитывать при планировании правил фильтрации.
Предварительные требования
Перед началом настройки необходимо убедиться в выполнении следующих условий:
- pfSense версии 2.7.0 или новее - WireGuard доступен как встроенный пакет. Для проверки версии: System > General Setup.
- Установленный пакет WireGuard - установка выполняется через System > Package Manager > Available Packages. Следует найти
WireGuardи нажать Install. - Статический публичный IP-адрес или настроенный Dynamic DNS на WAN-интерфейсе pfSense (для сценария удалённого доступа).
- Выделенная подсеть для туннеля - рекомендуется использовать адресацию из диапазона RFC 1918, не пересекающуюся с существующими сетями. Пример:
10.10.10.0/24. - Открытый UDP-порт на вышестоящем оборудовании (если pfSense расположен за NAT).
Создание туннеля
Туннель WireGuard создаётся в разделе VPN > WireGuard > Tunnels.
- Нажать Add Tunnel.
- Заполнить параметры туннеля:
| Поле | Значение | Пояснение |
|---|---|---|
| Enable | Установлен | Активация туннеля |
| Description | WG-RemoteAccess | Произвольное описание назначения туннеля |
| Listen Port | 51820 | Стандартный порт WireGuard (допустимо изменить) |
| Interface Keys | Generate | Генерация ключевой пары (приватный + публичный) |
| Interface Addresses | 10.10.10.1/24 | Адрес pfSense внутри туннеля |
- Нажать Save Tunnel.

Рис. 1. Создание туннеля WireGuard в веб-интерфейсе pfSense
После сохранения система автоматически сгенерирует ключевую пару. Публичный ключ (Public Key) отобразится на странице туннеля - его необходимо скопировать для последующей передачи клиентам.
Внимание:
Приватный ключ (Private Key) никогда не должен передаваться третьим лицам. Компрометация приватного ключа требует немедленной перегенерации ключевой пары и перенастройки всех пиров.
Выбор порта
Стандартный порт WireGuard - 51820/UDP. При необходимости использования нескольких туннелей каждому следует назначить уникальный порт. Если WireGuard должен работать из сетей с жёсткими ограничениями исходящего трафика, допустимо использовать порт 443/UDP, однако это может конфликтовать с HTTPS-трафиком при наличии HAProxy или подобных сервисов.
Адресация туннеля
Для адресации внутри туннеля рекомендуется выделить отдельную подсеть, не пересекающуюся с другими сетями:
| Сценарий | Рекомендуемая подсеть | Маска |
|---|---|---|
| Удалённый доступ (до 254 клиентов) | 10.10.10.0 | /24 |
| Site-to-site (два узла) | 10.10.10.0 | /30 |
| Несколько туннелей | 10.10.10.0, 10.10.20.0, … | /24 |
Добавление пиров
Пиры добавляются в разделе VPN > WireGuard > Peers. Каждый клиент или удалённый узел является отдельным пиром.
- Нажать Add Peer.
- Заполнить параметры:
| Поле | Значение | Пояснение |
|---|---|---|
| Enable | Установлен | Активация пира |
| Tunnel | WG-RemoteAccess | Выбор ранее созданного туннеля |
| Description | Laptop-Admin | Описание клиента |
| Dynamic Endpoint | Установлен | Для клиентов с динамическим IP (remote access) |
| Public Key | (ключ клиента) | Публичный ключ, сгенерированный на стороне клиента |
| Pre-Shared Key | (опционально) | Дополнительный уровень защиты (пост-квантовая безопасность) |
| Allowed IPs | 10.10.10.2/32 | Адрес клиента внутри туннеля |
| Keep Alive | 25 | Интервал keepalive в секундах (для клиентов за NAT) |
- Нажать Save Peer.

Рис. 2. Добавление пира WireGuard в pfSense
Обмен ключами
Обмен публичными ключами между сервером и клиентом выполняется вручную по защищённому каналу:
- Сервер (pfSense) генерирует ключевую пару при создании туннеля. Публичный ключ сервера передаётся клиенту.
- Клиент генерирует собственную ключевую пару (средствами клиентского приложения WireGuard). Публичный ключ клиента вводится в поле Public Key при добавлении пира на pfSense.
Внимание:
Передача публичных ключей должна осуществляться по защищённому каналу: лично, через зашифрованный мессенджер или корпоративную систему управления секретами. Публичные ключи сами по себе не являются секретом, но их подмена (MITM) позволит атакующему выдать себя за легитимный узел.
Поле Allowed IPs
Поле Allowed IPs определяет, какие IP-адреса допускаются от данного пира и на какие адреса маршрутизируется трафик через туннель. Корректная настройка этого поля критически важна:
| Сценарий | Значение Allowed IPs | Описание |
|---|---|---|
| Удалённый доступ (один клиент) | 10.10.10.2/32 | Только адрес клиента в туннеле |
| Site-to-site | 10.10.10.2/32, 192.168.2.0/24 | Адрес пира + удалённая подсеть |
| Full tunnel (весь трафик через VPN) | 0.0.0.0/0 | Весь IPv4-трафик клиента |
| Full tunnel (IPv4 + IPv6) | 0.0.0.0/0, ::/0 | Весь трафик клиента |
Pre-Shared Key (PSK)
Использование PSK добавляет симметричный уровень шифрования поверх Curve25519. Это обеспечивает дополнительную защиту в случае компрометации асимметричного алгоритма (пост-квантовая стойкость). PSK генерируется командой:
wg genpskСгенерированный ключ вводится в поле Pre-Shared Key как на стороне pfSense (в настройках пира), так и в конфигурации клиента.
Назначение интерфейса
После создания туннеля необходимо назначить ему интерфейс в pfSense. Без назначения интерфейса невозможно создать специфичные правила файрвола для трафика внутри туннеля.
- Перейти в Interfaces > Assignments.
- В выпадающем списке Available network ports выбрать интерфейс
tun_wgN(где N - номер туннеля). - Нажать Add.
- Нажать на имя назначенного интерфейса (например, OPT1) для перехода к его настройке.
- Заполнить параметры:
| Поле | Значение | Пояснение |
|---|---|---|
| Enable | Установлен | Активация интерфейса |
| Description | WIREGUARD | Имя интерфейса (будет отображаться в правилах файрвола) |
| IPv4 Configuration Type | None | Адресация уже настроена на уровне туннеля |
| IPv6 Configuration Type | None | Если IPv6 не используется |
- Нажать Save, затем Apply Changes.
Внимание:
Параметр IPv4 Configuration Type следует оставить в значении None, поскольку IP-адрес уже назначен на уровне туннеля WireGuard. Назначение адреса одновременно на уровне интерфейса и туннеля может привести к конфликтам маршрутизации.
Правила файрвола
Для корректной работы WireGuard необходимо создать два набора правил: на интерфейсе WAN (для приёма входящих подключений) и на интерфейсе WireGuard (для контроля трафика внутри туннеля).
Правило на WAN
Разрешает входящие UDP-подключения на порт WireGuard.
Перейти в Firewall > Rules > WAN и нажать Add.
| Поле | Значение |
|---|---|
| Action | Pass |
| Interface | WAN |
| Address Family | IPv4 |
| Protocol | UDP |
| Source | Any |
| Destination | WAN Address |
| Destination Port Range | 51820 (или выбранный порт туннеля) |
| Description | Allow WireGuard VPN |
Правила на интерфейсе WireGuard
Контролируют, какой трафик разрешён клиентам VPN внутри туннеля.
Перейти в Firewall > Rules > WIREGUARD (имя назначенного интерфейса) и нажать Add.
Вариант 1 - разрешить весь трафик (для тестирования):
| Поле | Значение |
|---|---|
| Action | Pass |
| Interface | WIREGUARD |
| Address Family | IPv4 |
| Protocol | Any |
| Source | WIREGUARD net |
| Destination | Any |
| Description | Allow all WireGuard traffic |
Вариант 2 - разрешить только доступ к LAN (рекомендуется для производственной среды):
| Поле | Значение |
|---|---|
| Action | Pass |
| Interface | WIREGUARD |
| Address Family | IPv4 |
| Protocol | Any |
| Source | WIREGUARD net |
| Destination | LAN net |
| Description | Allow WireGuard to LAN |
Дополнительно можно добавить правило, разрешающее доступ к DNS-серверу pfSense:
| Поле | Значение |
|---|---|
| Action | Pass |
| Interface | WIREGUARD |
| Protocol | TCP/UDP |
| Source | WIREGUARD net |
| Destination | WIREGUARD Address |
| Destination Port Range | 53 |
| Description | Allow DNS from WireGuard |
Подробнее о настройке правил фильтрации: Правила файрвола в pfSense .
Маршрутизация
Стандартная маршрутизация (split tunnel)
По умолчанию WireGuard в режиме split tunnel маршрутизирует через VPN только трафик к подсетям, указанным в Allowed IPs на стороне клиента. Весь остальной трафик клиента идёт через его обычное интернет-соединение.
Для корректной маршрутизации между подсетями туннеля и локальными сетями pfSense дополнительных маршрутов обычно не требуется, поскольку pfSense автоматически добавляет маршруты на основании адресации интерфейса.
Full tunnel (весь трафик через VPN)
Для направления всего трафика клиента через VPN необходимо:
- На стороне клиента: в конфигурации WireGuard установить
AllowedIPs = 0.0.0.0/0, ::/0. - На pfSense: убедиться, что правила файрвола на интерфейсе WireGuard разрешают трафик в Интернет (Destination: Any).
- NAT: настроить Outbound NAT для подсети WireGuard. Перейти в Firewall > NAT > Outbound, переключиться в режим Hybrid или Manual и добавить правило:
| Поле | Значение |
|---|---|
| Interface | WAN |
| Address Family | IPv4 |
| Protocol | Any |
| Source | 10.10.10.0/24 (подсеть туннеля) |
| Destination | Any |
| Translation Address | WAN Address |
Статические маршруты
При организации site-to-site туннеля может потребоваться добавление статических маршрутов, если pfSense не является шлюзом по умолчанию для подсети за WireGuard.
Перейти в System > Routing > Static Routes и добавить маршрут:
| Поле | Значение |
|---|---|
| Destination network | 192.168.2.0/24 (удалённая подсеть) |
| Gateway | Шлюз WireGuard интерфейса |
Внимание:
При настройке маршрутизации через WireGuard необходимо убедиться, что значение Default gateway в разделе System > Routing не установлено в Automatic. В противном случае pfSense может назначить WireGuard-интерфейс шлюзом по умолчанию, что приведёт к потере доступа к Интернету.
Подключение клиентов
Для подключения к WireGuard-серверу на pfSense клиенту необходимы:
- Публичный ключ сервера (pfSense)
- Публичный IP-адрес или доменное имя сервера
- Порт WireGuard на сервере
- Назначенный IP-адрес клиента внутри туннеля
- Pre-Shared Key (если используется)
Генерация конфигурации клиента
Конфигурация клиента WireGuard имеет унифицированный формат для всех платформ:
[Interface]
PrivateKey = <private_key_client>
Address = 10.10.10.2/32
DNS = 10.10.10.1
[Peer]
PublicKey = <public_key_pfsense>
PresharedKey = <psk_if_used>
AllowedIPs = 10.10.10.0/24, 192.168.1.0/24
Endpoint = vpn.example.com:51820
PersistentKeepalive = 25Параметры конфигурации:
| Параметр | Описание |
|---|---|
PrivateKey | Приватный ключ клиента (сгенерированный на клиенте) |
Address | IP-адрес клиента в туннеле (должен совпадать с Allowed IPs на сервере) |
DNS | DNS-сервер для использования при активном туннеле |
PublicKey | Публичный ключ сервера (pfSense) |
PresharedKey | Pre-Shared Key (опционально) |
AllowedIPs | Подсети, маршрутизируемые через туннель |
Endpoint | Адрес и порт сервера WireGuard |
PersistentKeepalive | Интервал keepalive в секундах (обязателен за NAT) |
Windows
- Загрузить клиент WireGuard с официального сайта: wireguard.com/install .
- Установить приложение.
- Нажать Add Tunnel > Add empty tunnel или Import tunnel(s) from file.
- При ручном создании - вставить конфигурацию в текстовое поле. Приватный ключ генерируется автоматически при создании пустого туннеля.
- Нажать Save, затем Activate.
При создании пустого туннеля приложение автоматически сгенерирует ключевую пару и отобразит публичный ключ - его необходимо скопировать и добавить в настройки пира на pfSense.
macOS
- Установить WireGuard из Mac App Store или через Homebrew:
brew install wireguard-toolsГрафический клиент (App Store): импортировать конфигурационный файл
.confили создать туннель вручную через интерфейс приложения.Командная строка: создать конфигурационный файл и активировать туннель:
# Generate key pair
wg genkey | tee privatekey | wg pubkey > publickey
# Create configuration
sudo mkdir -p /etc/wireguard
sudo nano /etc/wireguard/wg0.conf
# Activate tunnel
sudo wg-quick up wg0
# Check status
sudo wg showLinux
- Установить WireGuard:
# Debian / Ubuntu
sudo apt install wireguard
# CentOS / RHEL 8+
sudo dnf install wireguard-tools
# Fedora
sudo dnf install wireguard-tools- Сгенерировать ключевую пару:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
chmod 600 /etc/wireguard/privatekey- Создать конфигурационный файл
/etc/wireguard/wg0.conf:
[Interface]
PrivateKey = <content_of_privatekey>
Address = 10.10.10.2/32
DNS = 10.10.10.1
[Peer]
PublicKey = <public_key_pfsense>
PresharedKey = <psk_if_used>
AllowedIPs = 10.10.10.0/24, 192.168.1.0/24
Endpoint = vpn.example.com:51820
PersistentKeepalive = 25- Управление туннелем:
# Activate
sudo wg-quick up wg0
# Deactivate
sudo wg-quick down wg0
# Enable autostart
sudo systemctl enable wg-quick@wg0
# Check status
sudo wg showiOS
- Установить приложение WireGuard из App Store.
- Нажать + и выбрать один из вариантов:
- Create from QR code - отсканировать QR-код с конфигурацией (предпочтительный способ).
- Create from file or archive - импортировать файл
.conf. - Create from scratch - ввести параметры вручную.
- Активировать туннель переключателем.
Android
- Установить приложение WireGuard из Google Play.
- Нажать + и выбрать:
- Scan from QR code - отсканировать QR-код.
- Import from file or archive - импортировать файл
.conf. - Create from scratch - ручной ввод параметров.
- Активировать туннель.
Генерация QR-кода
Для мобильных клиентов удобнее всего использовать QR-код. Генерация выполняется на Linux или macOS:
# Install qrencode
sudo apt install qrencode # Debian/Ubuntu
brew install qrencode # macOS
# Generate QR code from configuration file
qrencode -t ansiutf8 < /path/to/client.conf
# Save QR code as PNG
qrencode -t png -o client-qr.png < /path/to/client.confВнимание:
QR-код содержит приватный ключ клиента. После сканирования кода клиентом файл PNG следует удалить. Не следует передавать QR-код через незащищённые каналы (email, мессенджеры без end-to-end шифрования).
Site-to-Site
WireGuard позволяет организовать туннель между двумя площадками с pfSense для объединения удалённых сетей. В отличие от IPsec, настройка site-to-site на WireGuard значительно проще и не требует согласования множества криптографических параметров.
Схема сети
Площадка A Площадка B
┌─────────────────┐ ┌─────────────────┐
│ LAN: 10.1.0.0/24│ │ LAN: 10.2.0.0/24│
│ WG: 10.10.10.1 │────WireGuard───│ WG: 10.10.10.2 │
│ WAN: 203.0.113.1│ │ WAN: 198.51.100.1│
└─────────────────┘ └─────────────────┘Настройка площадки A
Создать туннель (VPN > WireGuard > Tunnels):
- Listen Port:
51820 - Interface Address:
10.10.10.1/30 - Сгенерировать ключевую пару.
- Listen Port:
Добавить пир (VPN > WireGuard > Peers):
| Поле | Значение |
|---|---|
| Tunnel | Туннель площадки A |
| Public Key | Публичный ключ площадки B |
| Endpoint | 198.51.100.1 |
| Endpoint Port | 51820 |
| Allowed IPs | 10.10.10.2/32, 10.2.0.0/24 |
| Keep Alive | 25 |
- Назначить интерфейс и создать правила файрвола (аналогично описанному выше).
Настройка площадки B
Конфигурация площадки B зеркальна:
- Туннель: Listen Port
51820, Interface Address10.10.10.2/30. - Пир: Public Key площадки A, Endpoint
203.0.113.1:51820, Allowed IPs10.10.10.1/32, 10.1.0.0/24. - Интерфейс и файрвол: аналогичны площадке A.
Маршрутизация между площадками
На каждой площадке необходимо добавить статический маршрут к удалённой подсети:
Площадка A (System > Routing > Static Routes):
| Поле | Значение |
|---|---|
| Destination | 10.2.0.0/24 |
| Gateway | Шлюз WireGuard |
Площадка B:
| Поле | Значение |
|---|---|
| Destination | 10.1.0.0/24 |
| Gateway | Шлюз WireGuard |
Если pfSense является шлюзом по умолчанию для всех устройств в LAN, маршруты на клиентских устройствах добавлять не требуется. В противном случае на устройствах в LAN необходимо добавить маршрут к удалённой подсети через pfSense.
Проверка связности
# With the site A check the connectivity with site B LAN
ping 10.2.0.1
# Check the WireGuard tunnel status
# On pfSense: Status > WireGuard
# Check latest handshake timestamp and transferred dataСравнение с IPsec и OpenVPN
При выборе VPN-протокола для pfSense следует учитывать характеристики каждого из них.
| Характеристика | WireGuard | IPsec (IKEv2) | OpenVPN |
|---|---|---|---|
| Работа на уровне | Ядро | Ядро | Пространство пользователя |
| Производительность | Высокая (1+ Гбит/с) | Высокая (с AES-NI) | Средняя (300-500 Мбит/с) |
| Время установления | 1-RTT (~100 мс) | 4 сообщения IKEv2 | TLS handshake (~500 мс) |
| Кодовая база | ~4 000 строк | ~400 000 строк | ~100 000 строк |
| Аутентификация | Ключи | PSK / Сертификаты / EAP | Сертификаты / LDAP / RADIUS |
| Динамические IP клиентов | Нет | Да (Mode Config) | Да (встроенный DHCP) |
| NAT traversal | Встроенный | NAT-T (UDP 4500) | TCP 443 (обход ограничений) |
| Логирование | Минимальное | Подробное | Подробное |
| Совместимость | Linux, Windows, macOS, iOS, Android | Все платформы, сетевое оборудование | Все платформы |
| Управление сессиями | Нет | Да | Да |
| Поддержка в pfSense | Пакет (с 2.7) | Встроенная | Встроенная |
Когда выбрать WireGuard
- Требуется максимальная производительность при минимальном overhead.
- Небольшое количество клиентов (до 50) с возможностью ручного управления ключами.
- Не требуется аутентификация по логину/паролю или интеграция с LDAP/RADIUS.
- Важна простота настройки и аудируемость конфигурации.
Когда выбрать IPsec
- Интеграция с оборудованием третьих сторон (Cisco, FortiGate, MikroTik).
- Требуется совместимость с облачными VPN-шлюзами (AWS VPN, Azure VPN Gateway).
- Необходима поддержка нескольких Phase 2 для разных подсетей.
- Подробнее: IPsec Site-to-Site VPN .
Когда выбрать OpenVPN
- Требуется аутентификация через LDAP/RADIUS.
- Клиенты подключаются из сетей с жёсткими ограничениями (доступен только TCP 443).
- Необходимо детальное логирование и управление сессиями.
- Подробнее: OpenVPN сервер удалённого доступа .
Устранение неполадок
Handshake не устанавливается
Наиболее распространённая проблема - отсутствие завершённого handshake. Проверить состояние можно на странице Status > WireGuard.

Рис. 3. Страница Status > WireGuard в pfSense
Возможные причины:
| Симптом | Причина | Решение |
|---|---|---|
| Latest handshake отсутствует | Пакеты не достигают pfSense | Проверить правило файрвола на WAN, убедиться в корректности порта |
| Latest handshake отсутствует | Несовпадение ключей | Проверить, что публичный ключ сервера корректно указан в конфигурации клиента и наоборот |
| Latest handshake отсутствует | PSK не совпадает | Проверить идентичность Pre-Shared Key на обеих сторонах |
| Handshake есть, нет трафика | Некорректный Allowed IPs | Проверить, что Allowed IPs на сервере содержит адрес клиента, а на клиенте - целевые подсети |
| Handshake есть, нет трафика | Отсутствуют правила на интерфейсе WireGuard | Добавить правила на вкладке WIREGUARD |
Проблемы с MTU
WireGuard использует значение MTU по умолчанию 1420 байт (при стандартном MTU 1500 на физическом интерфейсе). Overhead WireGuard составляет 80 байт для IPv4 (60 байт WireGuard + 20 байт внешний IPv4-заголовок) и 80 байт для IPv6.
Признаки проблем с MTU:
- Ping работает, но HTTP-соединения зависают.
- Передача крупных файлов обрывается.
- SSH работает, но SCP/SFTP зависает на больших файлах.
Решение:
- На клиенте явно указать MTU в секции
[Interface]:
[Interface]
PrivateKey = ...
Address = 10.10.10.2/32
MTU = 1420- При наличии дополнительной инкапсуляции (PPPoE, VLAN, двойной NAT) уменьшить MTU:
| Сценарий | Рекомендуемый MTU |
|---|---|
| Стандартный (Ethernet 1500) | 1420 |
| PPPoE (MTU 1492) | 1412 |
| Двойной NAT / CGNAT | 1400 |
| За другим VPN-туннелем | 1380 |
NAT traversal
WireGuard нативно поддерживает работу через NAT. Для корректной работы клиентов за NAT необходимо:
- Установить
PersistentKeepalive = 25в конфигурации клиента. Это заставляет клиента отправлять keepalive-пакеты каждые 25 секунд, поддерживая NAT-трансляцию активной. - На стороне pfSense в настройках пира указать Keep Alive:
25.
Без keepalive NAT-трансляция истекает (обычно через 30-120 секунд), и сервер теряет возможность отправлять пакеты клиенту.
Ошибки в Allowed IPs
Некорректная настройка Allowed IPs - вторая по распространённости причина проблем:
- На сервере (pfSense): Allowed IPs для каждого пира должны быть уникальными. Два пира не могут иметь пересекающиеся Allowed IPs. Если два пира заявляют
10.10.10.2/32, трафик будет маршрутизироваться к последнему добавленному пиру. - На клиенте: Allowed IPs определяют, какой трафик направляется в туннель. Значение
0.0.0.0/0направляет весь трафик,10.10.10.0/24, 192.168.1.0/24- только трафик к указанным подсетям (split tunnel).
Диагностические команды
При наличии доступа к командной строке pfSense (SSH или консоль):
# Check WireGuard interface status
wg show
# Check WireGuard interface details
wg show wg0
# Check routing table
netstat -rn | grep wg
# Check firewall logs for blocked packets
clog /var/log/filter.log | grep 51820
# Check WireGuard kernel module
kldstat | grep if_wgПроверка доступности порта извне
Для проверки доступности порта WireGuard из внешней сети можно использовать утилиту nmap с другого хоста:
nmap -sU -p 51820 vpn.example.comСтатус open|filtered является нормальным для WireGuard, поскольку протокол не отвечает на неавторизованные пакеты.
Связанные разделы
- IPsec Site-to-Site VPN в pfSense - настройка IPsec-туннеля для объединения площадок с поддержкой оборудования третьих сторон
- OpenVPN сервер удалённого доступа - настройка OpenVPN с аутентификацией по сертификатам и интеграцией LDAP/RADIUS
- Правила файрвола в pfSense - создание и управление правилами фильтрации трафика на различных интерфейсах