- категория connection теперь только жизненный цикл соединения; INIT/PING/keepalive переклассифицированы в ETCP/SOCKET/KEEPALIVE/REALITY/ROUTING, удалены дубли - settingsdialog: устранён дубль my_node_name в конфиге (двухпроходная запись + только при изменении) - storagesettingspage: канонические ключи storage_total_size/storage_unit_size с суффиксом M/G - audiodevicesettingspage: compressor_max_gain_db min 0→1 - etcp_connections: %s-баг в логе TCP link (addr → sockaddr_storage_to_str) - docs/sample: [chatserver], актуализированы ключи хранилища
168 lines
10 KiB
Plaintext
168 lines
10 KiB
Plaintext
[global]
|
|
tun_ip=10.0.0.1 # IP адрес tun интерфейса. чтобы к нему могли обращаться другие узлу его надо вписать в секции [routing] my_subnet
|
|
#tun_enabled=yes # создавать TUN интерфейс (по умолчанию yes). Установите no для работы без root (только SOCKS/HTTP прокси)
|
|
tun_ifname=tun0 # имя TUN интерфейса (по умолчанию tun0)
|
|
mtu=1500 # UDP MTU for all connections (default - 1500)
|
|
db_path= # путь к LMDB-базе nodeinfo (например /var/lib/utun/nodes.db). Если не задан — база не используется
|
|
|
|
# уникальный id и ключи вашего узла. если их нет они сгенерируются автоматически (random) при первом запуске и впишутся в конфиг
|
|
my_node_id=
|
|
my_private_key=
|
|
my_public_key=
|
|
|
|
# control socket для наблюдения и управления utun сервером
|
|
# например utun сервер стоит на роутере, и вы можете управлять и наблюдать за ним с рабочего компьютера
|
|
[control]
|
|
ip=127.0.0.1
|
|
port=12345
|
|
# control_allow=ip/mask (multiple allowed, default deny all)
|
|
control_allow=127.0.0.1/32
|
|
# control_allow=192.168.1.0/24
|
|
|
|
[routing]
|
|
route_subnet=10.0.0.0/16 # к каким подсетям utun вы хотите обращаться (добавит маршруты этих подсетей через utun)
|
|
my_subnet=10.0.0.0/24 # какие ваши подсети будут доступны другим узлам utun (в секции [firewall] можно тонко настроить разрешенные ip и порты)
|
|
|
|
# секция server обязательна и у сервера и у клиента. это рабочий сокет.
|
|
# мои адреса и каналы
|
|
[server: lo0_test]
|
|
addr=127.0.0.1:1330
|
|
#so_mark=100
|
|
#netif=eth0
|
|
type=nat # public / nat / private
|
|
|
|
[server: lan1]
|
|
addr=192.168.29.117:1333
|
|
#so_mark=100
|
|
#netif=eth0
|
|
type=public # public / nat / private
|
|
|
|
[allowed_keys]
|
|
# Разрешённые публичные ключи клиентов для подключения к этому серверу.
|
|
# По умолчанию (если секция отсутствует или allow_all=0 и список пуст) — все соединения запрещены.
|
|
# allow_all=1 — разрешить всех (режим совместимости, не рекомендуется для production)
|
|
# key=128hexchars — добавить конкретный публичный ключ в белый список
|
|
allow_all=0
|
|
#key=c6c8a8a9616ffa6cf44d4757e2bc9f7bd78a1d3cbbe75cffaf3cab8885ad48e7677b14ba9044da8bd1bef4b15f6748fb50629034919c154d9a457520bfed9431
|
|
#key=04c1cae041a8e6bfba5245f6669c73f0793d7f9929300a2ba2e123ca55260d6e474480056720d94f7f0836a4a472763a74aacbc487cc7a1b2b0e066b519400fe
|
|
|
|
[firewall]
|
|
#ограничиваем подключения к собственным ресурсам. по умолчанию всё запрещено. разрешаем доступ директивами:
|
|
# Firewall rules: allow=all, allow=IP or allow=IP:port
|
|
allow=all
|
|
#allow=192.168.1.100
|
|
#allow=10.0.0.50:443
|
|
#allow=8.8.8.8
|
|
|
|
# --- NAT (Full Cone / EIM) ---
|
|
# Предоставляет доступ в интернет через этот узел другим узлам utun.
|
|
# Наличие секции [nat] включает NAT на этом узле.
|
|
# Две роли:
|
|
# 1. Provider (нет nat_via) — шлюз в интернет, выделяет порты для клиентов
|
|
# 2. Client (nat_via=<node_id>) — отправляет свой трафик через указанный узел-провайдер
|
|
|
|
# === Provider example ===
|
|
#[nat]
|
|
#enabled=0
|
|
#tun_ifname=tun_nat # имя NAT TUN интерфейса (по умолчанию tun_nat)
|
|
#tun_ip=100.64.0.1/24 # IP адрес NAT шлюза
|
|
#port_start=20000 # начало диапазона портов для NAT
|
|
#port_end=29999 # конец диапазона (размер = количество одновременных сессий)
|
|
## Port forwarding (статический проброс портов):
|
|
## forward=proto:internal_ip:internal_port:external_port
|
|
#forward=tcp:192.168.1.100:22:2222
|
|
#forward=tcp:192.168.1.100:443:443
|
|
|
|
# === Client example ===
|
|
#[nat]
|
|
#tun_ifname=tun_nat_client
|
|
#tun_ip=100.64.1.1/24 # IP клиентского NAT TUN
|
|
#nat_via=0xABCD000000000001 # node_id провайдера (у кого запрашивать NAT)
|
|
|
|
# --- TCP Proxy Client (локальный TCP/UDP/ICMP прокси) ---
|
|
# Проксирует входящие TCP (через lwIP), UDP и ICMP ping через указанный via_node.
|
|
# Также поддерживает SOCKS5 и HTTP CONNECT proxy без TUN (напрямую через ETCP).
|
|
# Режимы можно включать раздельно или одновременно.
|
|
#[tcp_proxy_client]
|
|
#enabled=yes
|
|
|
|
## --- TUN режим (прозрачный) ---
|
|
#tun_name=tun_tcp # имя TUN интерфейса (по умолчанию tun_tcp)
|
|
#tun_ip=10.99.0.1 # IP адрес TUN интерфейса
|
|
#mtu=1500 # MTU
|
|
#forward=8000 -> 10.0.0.50:80
|
|
#forward=2222 -> 10.0.0.50:22
|
|
|
|
## --- SOCKS5 режим (прямой) ---
|
|
#socks_enabled=yes
|
|
#socks_addr=127.0.0.1:1080 # адрес для SOCKS5 сервера (bind)
|
|
|
|
## --- HTTP CONNECT режим (прямой) ---
|
|
#http_proxy_enabled=yes
|
|
#http_proxy_addr=127.0.0.1:8080 # адрес для HTTP CONNECT сервера (bind)
|
|
|
|
#via_node=0xABCD000000000001 # узел для проксирования (общий для всех режимов)
|
|
|
|
# --- TCP Proxy Server (удаленный exit node) ---
|
|
# Принимает CONNECT-запросы от других нод и открывает OS сокеты к адресатам.
|
|
#[tcp_proxy_server]
|
|
#enabled=yes
|
|
#tcp_recv_buf=65536
|
|
#fib=1 ; FreeBSD: SO_SETFIB (routing table number)
|
|
#so_mark=100 ; Linux: SO_MARK (socket mark/fwmark)
|
|
#netif=eth1 ; Linux: SO_BINDTODEVICE (interface name)
|
|
#bind_ip=10.0.0.1 ; bind() local IP before connect()
|
|
|
|
# --- REALITY-камуфляж (reality socket) ---
|
|
# REALITY маскирует TCP-порт STCP под обычный TLS-трафик к реальному сайту.
|
|
# Сервер принимает TLS ClientHello, проверяет авторизацию (short_id + X25519)
|
|
# и отвечает ServerHello; неавторизованных клиентов релеит на реальный сайт (dest).
|
|
# Для включения на сервере нужен TCP-сокет: [server: ...] transport=tcp + reality=yes.
|
|
#[reality]
|
|
#enabled=1
|
|
#server_name=www.microsoft.com # SNI-таргет (каким сайтом прикидываемся)
|
|
#dest=www.microsoft.com:443 # host:port реального сайта для релея
|
|
#private_key=<64 hex X25519> # static приватный ключ сервера (генерируется автоматически, если не задан)
|
|
#short_ids=0102030405060708,aabbccddeeff0011 # список short_id (по 16 hex, через запятую; 4 шт. генерируются автоматически, если не заданы)
|
|
#version=1.0.0 # версия протокола utun (по умолчанию 1.0.0)
|
|
#time_window=30 # допуск timestamp, сек (антиреплей)
|
|
#fingerprint=chrome # TLS-отпечаток (только chrome)
|
|
|
|
## Пример TCP-сокета с reality-камуфляжем (сервер):
|
|
#[server: reality_srv]
|
|
#addr=0.0.0.0:1443
|
|
#type=public
|
|
#transport=tcp
|
|
#reality=yes
|
|
|
|
## --- Клиент: подключение к reality-сокету ---
|
|
## Всё нужное для подключения задаётся прямо в секции [client].
|
|
## Серверный сокет (bind) опционален: link=ip:port — ОС сама выберет source;
|
|
## чтобы биндиться на конкретный интерфейс/ip, укажи [server: ...] transport=tcp перед ip:port.
|
|
## peer_public_key — pubkey УЗЛА сервера (STCP), public_key — reality pubkey сервера.
|
|
#[client: to_relay]
|
|
#peer_public_key=<64 hex pubkey узла сервера>
|
|
#link=1.2.3.4:1443 # без bind (ОС выбирает source)
|
|
##link=tcp_bind:1.2.3.4:1443 # bind к интерфейсу [server: tcp_bind] transport=tcp
|
|
#reality=yes
|
|
#server_name=www.microsoft.com # SNI-таргет (должен совпадать с сервером)
|
|
#short_id=0102030405060708 # short_id, выданный сервером
|
|
#public_key=<64 hex reality pubkey сервера>
|
|
#version=1.0.0 # должна совпадать с версией сервера
|
|
#fingerprint=chrome
|
|
|
|
# --- Chatserver: headless supernode config ---
|
|
#[chatserver]
|
|
#db_path=/var/lib/utun # путь к SQLite базе данных (обязательно)
|
|
#join_password=secret123 # пароль входа в группы (будет в invite-ссылке)
|
|
#allowed_groups=all # "all" или hex-ID через запятую
|
|
#headless_control_bind=127.0.0.1:9999 # TCP control-socket для headless chat CLI
|
|
#storage_total_size=500M # общий лимит медиакеша (0=безлимит)
|
|
#storage_unit_size=50M # лимит одного медиафайла (0=отключено)
|
|
#storage_autoload=1 # автозагрузка медиавложений (0/1)
|
|
#media_download_max_peers=3 # макс. одновременных пиров для загрузки
|
|
#opus_codec_preset=1 # пресет Opus (0..4)
|
|
#compressor_enabled=0 # компрессор голосовых сообщений (0/1)
|
|
#compressor_max_gain_db=25 # макс. gain компрессора, дБ (1..100)
|
|
#compressor_rise_rate=10 # скорость нарастания компрессора (1..100)
|