[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=) — отправляет свой трафик через указанный узел-провайдер # === 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 через запятую #storage_total_size=500M # общий лимит медиакеша (0=безлимит) #storage_unit_size=50M # лимит одного медиафайла (0=отключено) #storage_autoload=1 # автозагрузка медиавложений (0/1) #media_download_max_peers=3 # макс. одновременных пиров для загрузки