Нода працює «з коробки» і не потребує налаштування. Змінні середовища потрібні, коли поведінку клієнта треба підлаштувати під власну інфраструктуру: змінити порти, обмежити версії TLS, увімкнути живий лог запитів або метрики.

Як задати змінні#

Клієнт встановлено в /opt/wafclient, він запускається як systemd-служба privateflare. Змінні зчитуються з файлу /opt/wafclient/.env — інсталятор створює його порожнім.

  1. Відкрийте файл і додайте змінні, по одній у рядку у форматі ІМ'Я=значення:
nano /opt/wafclient/.env
  1. Перезапустіть службу — змінні зчитуються лише під час запуску клієнта:
systemctl restart privateflare

Приклад файлу .env:

TLSMIN=1.2
LOGROUTE=/my-secret-log
LOGPASS=strong-password
LOGFORMAT=json

Щоб скасувати налаштування, видаліть рядок із .env і перезапустіть службу. Для змінних-перемикачів (PFNOH3, PFNOBAN та інших) важить сама наявність значення: PFNOH3=0 теж вимкне HTTP/3.

Мережа і TLS#

ЗміннаОписЗа замовчуванням
HTTPPПорт HTTP. Нечислове значення або 0 ігнорується80
HTTPSPПорт HTTPS і HTTP/3443
TLSMINМінімальна версія TLS: 1.0, 1.1, 1.2 або 1.31.0
TLSMAXМаксимальна версія TLS: 1.0, 1.1, 1.2 або 1.31.3

Некоректне значення TLSMIN або TLSMAX не призводить до помилки — використовується значення за замовчуванням.

HTTP/3 і відбитки#

ЗміннаЩо робить
PFNOH3Вимикає HTTP/3: QUIC не запускається, заголовок Alt-Svc не віддається, відвідувачі залишаються на TCP
PFNOJAВимикає розрахунок JA3/JA4: заголовки PF-JA3 і PF-JA4 на бекенд не надсилаються
PFNOSYNВимикає пасивний TCP-відбиток: заголовки PF-TCP-Fingerprint, PF-TCP-Signature і PF-TCP-OS на бекенд не надсилаються

Достатньо будь-якого непорожнього значення, наприклад PFNOH3=1. Змінні не залежать одна від одної.

Важливо: JA3/JA4 розраховуються лише для TCP-з’єднань. Браузер, який перейшов на HTTP/3, прийде на бекенд без PF-JA3/PF-JA4. Якщо відбитки потрібні в кожному запиті — задайте PFNOH3. На заголовок TLSFingerprint це не поширюється: він надходить і по TCP, і по HTTP/3, і PFNOJA на нього не впливає.

Заголовки пасивного TCP-відбитка:

ЗаголовокПрикладЩо це
PF-TCP-Signature4:64:0:1460:mss*44,10:mss,sok,ts,nop,ws:df,id+:0Сигнатура з’єднання у форматі p0f v3
PF-TCP-Fingerprintcd79d39f578dКороткий хеш сигнатури
PF-TCP-OSLinux 2.2.x-3.xВизначена ОС клієнта. Відсутній, якщо збігу немає

Системні налаштування#

Під час запуску клієнт оптимізує мережеві параметри ядра, налаштовує фаєрвол і блокує IP через iptables/ipset. Якщо сервером керує ваша власна автоматизація, ці дії можна вимкнути.

ЗміннаЩо робить
PFNOBANВимикає блокування IP через iptables/ipset
PFNOTUNEВимикає оптимізацію sysctl і налаштування фаєрвола
PFNOFWВимикає лише налаштування фаєрвола

Достатньо будь-якого непорожнього значення.

Живий лог запитів#

ЗміннаОписЗа замовчуванням
LOGROUTEАдреса сторінки живого логу, наприклад /log. Якщо не задана — лог вимкненовимкнено
LOGUSERЛогінlog
LOGPASSПарольlog
LOGFORMATФормат рядків: json або текстовий (будь-яке інше значення)текстовий

Детальніше — у розділі Логування.

Метрики#

Нода може віддавати метрики у форматі Prometheus — їх зручно підключити до власного моніторингу.

ЗміннаОписЗа замовчуванням
METRICSROUTEАдреса сторінки метрик, наприклад /metrics. Якщо не задана — метрики вимкненовимкнено
METRICSUSERЛогінmetrics
METRICSPASSПарольmetrics

Важливо: сторінки логу і метрик доступні на будь-якому домені, який обслуговує нода. Обов’язково задайте власний пароль і неочевидну адресу — значення за замовчуванням загальновідомі.