Ключевой принцип
SMB over QUIC привязывает сертификат не к серверу как к «машине», а к конкретному DNS-имени, по которому клиенты будут подключаться.
Параметр
-NameвNew-SmbServerCertificateMappingдолжен содержать то имя, которое набирает клиент в UNC-пути, а не внутренний AD FQDN сервера.
Сертификат тоже должен быть выписан на это внешнее имя (поле SAN), а не на внутреннее имя сервера. Внутренний FQDN сервера при этом продолжает использоваться как обычно — для AD, Kerberos, внутренних SMB-подключений по TCP/445. Внешнее имя — это отдельная «дверь» со своим сертификатом и своим транспортом (QUIC поверх UDP/443).
Архитектура
Интернет
│
files.company.com (DNS A-запись → публичный IP)
│
┌───────▼────────┐
│ NAT / Edge GW │ UDP 443 → внутренний IP сервера
└───────┬────────┘
│
┌──────────▼───────────────┐
│ fileserver01.corp.local │
│ (внутренний AD FQDN) │
│ │
│ Сертификат: SAN=files.company.com │
│ SMB QUIC mapping -Name files.company.com │
└──────────────────────────┘
Внутренние клиенты домена продолжают ходить к серверу как обычно — \\fileserver01.corp.local\share, по TCP/445, без QUIC. Внешние — только через \\files.company.com\share, через QUIC.
Шаг 1. Сертификат на внешнее имя
Сертификат должен содержать в Subject Alternative Name именно внешнее имя точки входа:
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*files.company.com*" }
Если используется Let's Encrypt — например через win-acme (wacs.exe) — сертификат сразу ставится в Cert:\LocalMachine\My на нужное имя. Для внешнего DNS-имени публичный CA предпочтительнее внутреннего AD CA: иначе придётся вручную распространять корневой сертификат на все внешние устройства.
Шаг 2. Привязка сертификата к SMB QUIC — с внешним именем
Это центральный момент всей настройки:
New-SmbServerCertificateMapping -Name "files.company.com" -Thumbprint $cert.Thumbprint -StoreName My
Здесь указывается files.company.com, а не fileserver01.corp.local. Именно по этому имени SMB-клиент при установке QUIC-туннеля проверяет соответствие набранного пути и SAN сертификата.
Включить QUIC на сервере нужно один раз, независимо от количества внешних имён:
Set-SmbServerConfiguration -EnableSMBQUIC $true
Get-SmbServerCertificateMapping
Шаг 3. DNS
Публичная зона должна резолвить внешнее имя в публичный IP, который транслируется (NAT) на сервер:
files.company.com. A <публичный IP>
Внутренний FQDN сервера (fileserver01.corp.local) продолжает резолвиться через внутренний AD DNS как раньше — обе записи независимы друг от друга.
Шаг 4. NAT и файрвол — самая частая точка отказа
Если сервер находится за NAT, edge gateway или в облачной виртуализации (VMware Cloud Director, Azure NSG и т.п.), необходимо перенаправить только UDP/443 на внутренний адрес сервера:
# Пример для MikroTik (если сервер CHR/VPS использует MikroTik как edge)
/ip firewall nat add chain=dstnat action=dst-nat to-addresses=<внутренний IP сервера> to-ports=443 protocol=udp dst-port=443
Важный нюанс многослойного NAT (актуально для VMware Cloud Director, Azure, AWS): если перед сервером есть ещё один уровень NAT — например, Edge Gateway в облаке — то правило dstnat с условием dst-address=<публичный IP> может не сработать. К моменту прихода пакета на внутренний firewall публичный адрес уже заменён вышестоящим NAT на промежуточный адрес. В таких правилах не указывайте публичный IP в dst-address — либо указывайте именно тот адрес, который реально приходит на интерфейс (проверяется через sniffer или временное лог-правило).
TCP/445 наружу не открывается. Это принципиально — весь смысл SMB over QUIC в том, чтобы не выставлять классический SMB-порт в интернет:
/ip firewall filter add chain=forward action=drop protocol=tcp dst-port=445 in-interface-list=WAN comment="Block SMB from Internet"
На самом Windows Server дополнительно убедитесь, что правило File and Printer Sharing (SMB-In) (TCP/445) разрешено только для профилей Domain/Private:
Set-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-In)" -Profile Domain,Private
А правило для QUIC должно быть разрешено и для профиля Public:
Get-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-QUIC-In)" | Set-NetFirewallRule -Enabled True -Profile Any
Шаг 5. Особый случай — DFS
Если на сервере настроен DFS-namespace, есть важная ловушка: DFS-referral отдаёт клиенту внутренний FQDN реального таргета (например, fileserver01.corp.local), а не внешнее имя точки входа. В результате внешний клиент:
- не сможет резолвить внутренний FQDN через публичный DNS;
- даже если резолвинг подделать через hosts-файл, сертификат QUIC выписан на SAN внешнего имени — TLS не пройдёт, имена не совпадут.
Решение: для внешнего доступа не используйте DFS-namespace вообще. Подключайтесь напрямую к физическому share через внешнее имя:
\\files.company.com\share
вместо
\\corp.local\dfsroot\share
DFS продолжает обслуживать только внутренних пользователей домена; для внешних публикуется отдельный прямой путь к нужным share через имя точки входа.
Шаг 6. Подключение клиента
New-SmbMapping -LocalPath Z: -RemotePath "\\files.company.com\share" -TransportType QUIC
Либо просто открыть путь в проводнике — SMB-клиент на Windows 11 24H2+ автоматически пробует TCP/445, не находит его снаружи и переключается на QUIC прозрачно для пользователя.
Проверка
На клиенте:
Get-SmbConnection | Select-Object ServerName, ShareName, Dialect, Transport
Поле Transport должно показывать QUIC.
В Event Viewer клиента (Applications and Services Logs → Microsoft → Windows → SMBClient → Connectivity) ищите Event ID 30832 — успешное QUIC-подключение, либо 30803 — проблема доверия к сертификату, обычно из-за несовпадения имени или непроверенной цепочки CA.
Проверка, что TCP/445 действительно закрыт снаружи (выполняется с внешней машины, не из внутренней сети):
Test-NetConnection -ComputerName files.company.com -Port 445
Ожидаемый результат — TcpTestSucceeded: False.
Типичные ошибки
| Симптом | Причина |
|---|---|
| Event 30803 на клиенте | -Name в New-SmbServerCertificateMapping не совпадает с именем в UNC-пути, либо SAN сертификата не содержит внешнее имя |
| Подключение зависает, таймаут | NAT/файрвол не пропускает UDP/443 до сервера, либо upstream anti-DDoS режет нестандартный UDP-трафик |
| DFS-путь не открывается снаружи | DFS-referral отдаёт внутренний FQDN — подключайтесь к прямому share, минуя namespace |
| 445 всё равно доступен снаружи | Забыли явный drop на edge firewall, либо NAT/DNAT правило для 445 осталось активным с предыдущих настроек |
Правило NAT с dst-address=<публичный IP> не матчится |
Многослойный NAT (облачный edge gateway) — публичный адрес уже заменён до прихода на внутренний firewall, нужно матчить по реальному промежуточному адресу |
Итог
Главное правило при несовпадении внутреннего FQDN сервера и внешней точки входа: везде, где встречается имя для SMB over QUIC — в сертификате (SAN), в New-SmbServerCertificateMapping -Name, в DNS A-записи и в UNC-пути клиента — должно фигурировать одно и то же внешнее имя, отдельное от внутреннего AD FQDN сервера. Внутренний FQDN при этом продолжает использоваться как раньше, для всех внутренних SMB- и AD-операций, никаких изменений там не требуется.