diff --git a/utun.conf.sample b/utun.conf.sample index f3efde7f..db4664e4 100644 --- a/utun.conf.sample +++ b/utun.conf.sample @@ -1,50 +1,55 @@ -[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). Если не задан — база не используется +# Пример INI-конфига. Комментарии начинаются с #; символ ; не является комментарием. +# Необязательные блоки ниже включаются снятием одного ведущего # со строк секции и её параметров. +# NAT provider и NAT client — альтернативные примеры; выбирайте один из них. -# уникальный id и ключи вашего узла. если их нет они сгенерируются автоматически (random) при первом запуске и впишутся в конфиг -my_node_id= -my_private_key= -my_public_key= +[global] +tun_enabled=yes # явно включить основной TUN (по умолчанию no); для чата/SOCKS/HTTP без TUN поставить no +tun_ip=10.0.0.1 # IPv4 основного TUN; его доступность другим узлам задаётся через routing/my_subnet +tun_ifname=tun0 # имя основного TUN (при включённом TUN без имени используется tun0) +mtu=1500 # MTU ETCP (по умолчанию 1280); отдельный server может задать свой mtu +db_path= # каталог общей SQLite chats.db и данных чата; пусто — SQLite в памяти + +# X25519-ключи и my_node_id создаются и сохраняются автоматически до загрузки конфигурации. +# Не добавляйте пустые поля: my_private_key/my_public_key — 64 HEX, my_node_id — HEX uint64 без знака. +#my_node_name=MyNode # control socket для наблюдения и управления utun сервером # например utun сервер стоит на роутере, и вы можете управлять и наблюдать за ним с рабочего компьютера [control] ip=127.0.0.1 port=12345 -# control_allow=ip/mask (multiple allowed, default deny all) +# control_allow принимает IPv4/маску; можно несколько правил, по умолчанию все адреса запрещены. control_allow=127.0.0.1/32 -# control_allow=192.168.1.0/24 +#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 задаёт локальный слушающий сокет. У исходящего TCP-клиента она необязательна. +# auto_sockets=yes в [global] также может создавать UDP/TCP-сокеты автоматически. [server: lo0_test] addr=127.0.0.1:1330 #so_mark=100 #netif=eth0 -type=nat # public / nat / private +type=local # public / nat / private / local; local — для локальной сети -[server: lan1] -addr=192.168.29.117:1333 +# Дополнительный интерфейс: замените адрес на реально назначенный этому узлу. +#[server: lan1] +#addr=192.168.29.117:1333 #so_mark=100 #netif=eth0 -type=public # public / nat / private +#type=public [allowed_keys] # Разрешённые публичные ключи клиентов для подключения к этому серверу. # По умолчанию (если секция отсутствует или allow_all=0 и список пуст) — все соединения запрещены. -# allow_all=1 — разрешить всех (режим совместимости, не рекомендуется для production) -# key=128hexchars — добавить конкретный публичный ключ в белый список +# allow_all=1 — разрешить транспорт с любым узлом; членство в канале и серверный add_key проверяются отдельно. +# key=64hexchars — добавить 32-байтовый X25519 публичный ключ в белый список. allow_all=0 -#key=c6c8a8a9616ffa6cf44d4757e2bc9f7bd78a1d3cbbe75cffaf3cab8885ad48e7677b14ba9044da8bd1bef4b15f6748fb50629034919c154d9a457520bfed9431 -#key=04c1cae041a8e6bfba5245f6669c73f0793d7f9929300a2ba2e123ca55260d6e474480056720d94f7f0836a4a472763a74aacbc487cc7a1b2b0e066b519400fe +# Примеры формата; замените на публичные ключи своих пиров. +#key=c6c8a8a9616ffa6cf44d4757e2bc9f7bd78a1d3cbbe75cffaf3cab8885ad48e7 +#key=04c1cae041a8e6bfba5245f6669c73f0793d7f9929300a2ba2e123ca55260d6e [firewall] # Основной TUN: входящие и исходящие пакеты проверяются одинаково по IP/порту назначения. @@ -58,28 +63,28 @@ allow=all # --- NAT (Full Cone / EIM) --- # Предоставляет доступ в интернет через этот узел другим узлам utun. -# Наличие секции [nat] включает NAT на этом узле. +# Наличие секции [nat] включает NAT на этом узле; параметра enabled здесь нет. # Две роли: # 1. Provider (нет nat_via) — шлюз в интернет, выделяет порты для клиентов # 2. Client (nat_via=) — отправляет свой трафик через указанный узел-провайдер # === Provider example === #[nat] -#enabled=0 #tun_ifname=tun_nat # имя NAT TUN интерфейса (по умолчанию tun_nat) -#tun_ip=100.64.0.1/24 # IP адрес NAT шлюза +#tun_ip=100.64.0.1 # IPv4 NAT TUN; без tun_ip используется global/tun_ip #port_start=20000 # начало диапазона портов для NAT -#port_end=29999 # конец диапазона (размер = количество одновременных сессий) +#port_end=29999 # конец диапазона включительно; требуется port_start < port_end ## 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 +## forward=proto:node_id_hex:internal_ip:internal_port:external_port; proto — tcp или udp. +## node_id_hex — узел, которому передать входящий трафик; подставьте его реальный ID. +#forward=tcp:0x1234000000000001:192.168.1.100:22:2222 +#forward=tcp:0x1234000000000001: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) +#tun_ip=100.64.1.1 # IPv4 клиентского NAT TUN +#nat_via=0x1234000000000001 # пример; замените на реальный node_id провайдера # --- TCP Proxy Client (локальный TCP/UDP/ICMP прокси) --- # Проксирует входящие TCP (через lwIP), UDP и ICMP ping через указанный via_node. @@ -89,9 +94,9 @@ allow=all #enabled=yes ## --- TUN режим (прозрачный) --- -#tun_name=tun_tcp # имя TUN интерфейса (по умолчанию tun_tcp) -#tun_ip=10.99.0.1 # IP адрес TUN интерфейса -#mtu=1500 # MTU +#tun_name=tun_tcp # TUN создаётся только при непустых tun_name И tun_ip +#tun_ip=10.99.0.1 # IPv4 TUN интерфейса; без обоих полей доступны только SOCKS/HTTP +#mtu=1500 # MTU proxy TUN (по умолчанию 1500) #forward=8000 -> 10.0.0.50:80 #forward=2222 -> 10.0.0.50:22 @@ -103,17 +108,18 @@ allow=all #http_proxy_enabled=yes #http_proxy_addr=127.0.0.1:8080 # адрес для HTTP CONNECT сервера (bind) -#via_node=0xABCD000000000001 # узел для проксирования (общий для всех режимов) +#via_node=0x1234000000000001 # пример; замените на node_id exit-узла (общий для всех режимов) # --- TCP Proxy Server (удаленный exit node) --- # Принимает CONNECT-запросы от других нод и открывает OS сокеты к адресатам. +# Включается наличием секции; параметра enabled здесь нет. #[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() +#connect_timeout=2000 # таймаут исходящего connect(), миллисекунды (по умолчанию 2000) +#fib=1 # FreeBSD: SO_SETFIB (номер таблицы маршрутизации) +#so_mark=100 # Linux: SO_MARK (socket mark/fwmark) +#netif=eth1 # привязка исходящих соединений к существующему интерфейсу +#bind_ip=10.0.0.1 # локальный IPv4 для bind() перед connect(); должен принадлежать узлу # --- REALITY-камуфляж (reality socket) --- # REALITY маскирует TCP-порт STCP под обычный TLS-трафик к реальному сайту. @@ -124,11 +130,11 @@ allow=all #enabled=1 #server_name=www.microsoft.com # SNI-таргет (каким сайтом прикидываемся) #dest=www.microsoft.com:443 # host:port реального сайта для релея -#private_key=<64 hex X25519> # static приватный ключ сервера (генерируется автоматически, если не задан) +# private_key создаётся и сохраняется автоматически; не вписывайте сюда заглушку или пустое значение. #short_ids=0102030405060708,aabbccddeeff0011 # список short_id (по 16 hex, через запятую; 4 шт. генерируются автоматически, если не заданы) -#version=1.0.0 # версия протокола utun (по умолчанию 1.0.0) +#version=2.0.0 # версия REALITY-handshake (по умолчанию 2.0.0) #time_window=30 # допуск timestamp, сек (антиреплей) -#fingerprint=chrome # TLS-отпечаток (только chrome) +#fingerprint=openssl # единственный поддерживаемый TLS-отпечаток ## Пример TCP-сокета с reality-камуфляжем (сервер): #[server: reality_srv] @@ -139,33 +145,34 @@ allow=all ## --- Клиент: подключение к reality-сокету --- ## Всё нужное для подключения задаётся прямо в секции [client]. -## Серверный сокет (bind) опционален: link=ip:port — ОС сама выберет source; +## Локальный сокет (bind) опционален: link=ip:port без имени использует исходящий TCP; ## чтобы биндиться на конкретный интерфейс/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 +# Ключи ниже — примеры формата: оба замените на ключи сервера, short_id также возьмите у сервера. +#peer_public_key=c6c8a8a9616ffa6cf44d4757e2bc9f7bd78a1d3cbbe75cffaf3cab8885ad48e7 +#link=192.0.2.1:1443 # без bind (ОС выбирает source) +## Альтернатива: link=reality_srv:192.0.2.1:1443 привяжет source к 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 +#public_key=04c1cae041a8e6bfba5245f6669c73f0793d7f9929300a2ba2e123ca55260d6e +#version=2.0.0 # должна совпадать с версией REALITY сервера +#fingerprint=openssl # --- Chatserver: headless supernode config --- #[chatserver] -#db_path=/var/lib/utun # путь к SQLite базе данных (обязательно) +#db_path=/var/lib/utun # каталог chats.db и данных чата; пусто — SQLite в памяти # Постоянный add_key (32 случайных байта, 64 HEX) создаётся и сохраняется автоматически. # Не задавайте пустой add_key. Старую строку join_password из конфига нужно удалить. # Серверная ссылка с add_key: tools/chatcli server_link; добавление канала: server_add 'utun://...' -#allowed_groups=all # "all" или hex-ID через запятую +# Для транспорта с заранее неизвестными узлами задайте allow_all=1 в секции [allowed_keys]. #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_total_size=500M # общий лимит медиакеша; 0=безлимит (по умолчанию 1G) +#storage_unit_size=50M # лимит одного файла при автозагрузке; 0=безлимит (по умолчанию 100M) #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_max_gain_db=25 # макс. gain компрессора, дБ (1..60) #compressor_rise_rate=10 # скорость нарастания компрессора (1..100)