Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

Совершенно случайно наткнулся на форк sing-box от команды Amnezia (https://github.com/amnezia-vpn/amnezia-box)

Собрал для тестирования у себя и обнаружил, что в данном форке есть проблема с работой AmneziaWG при использовании FakeIP.

Спойлер

### Root Cause

The AWG endpoint struct embedded `*awg.Device`:

```go
type Endpoint struct {
    *awg.Device  // ← Embedded, provides DialContext/ListenPacket
    // ...
}
```

This caused `Endpoint.DialContext()` to inherit from `awg.Device.DialContext()`, which:
1. Did not check if destination was a domain (FQDN)
2. Passed domains directly to netstack's dial function
3. Netstack attempted internal DNS resolution and failed

Meanwhile, the standard WireGuard endpoint (`protocol/wireguard/endpoint.go`) properly handles this:

```go
func (w *Endpoint) DialContext(ctx context.Context, network string, destination M.Socksaddr) (net.Conn, error) {
    if destination.IsFqdn() {
        destinationAddresses, err := w.dnsRouter.Lookup(ctx, destination.Fqdn, adapter.DNSQueryOptions{})
        // ... resolve and dial
    }
    return w.endpoint.DialContext(ctx, network, destination)
}
```

Если вам нужно использовать FakeIP и AmneziaWG 2.0 то с помощью железного разума получилось это поправить (https://github.com/hoaxisr/amnezia-box

Собранные для arm, mipsel и amd64 исполняемые файлы лежат тут (https://github.com/hoaxisr/amnezia-box/releases/)

 Доступные сборки:   

   | Версия                        | Ветка | Upstream                           | Релиз                                                                     
  |-----------------------|-------|----------------------------|-----------------------------------------------------------------------------|
  | v1.12.15-awg2.1            | main  | sing-box v1.12.15 (stable) | https://github.com/hoaxisr/amnezia-box/releases/tag/v1.12.15-awg2.1           |  
  | v1.13.0-beta.4-awg2.0 | alpha | sing-box v1.13.0-beta.4    | https://github.com/hoaxisr/amnezia-box/releases/tag/v1.13.0-beta.4-awg2.0

  

Использование достаточно простое:

Сейчас sing-box поддерживает Wireguard как endpoint, форк от Amnezia лишь добавляет новый тип ("type": "awg") в данном endpoint следующей структуры:

Спойлер

 {
    "endpoints": [
      {
        "type": "awg",
        "tag": "awg-ep",

        // Основные параметры
        "useIntegratedTun": false, // если нужен системный тун то true 
        "private_key": "base64-encoded-private-key",
        "address": ["10.0.0.2/32"],  // IP адрес(а) интерфейса
        "mtu": 1280,                  // обычно у amnezia 1280
        "listen_port": 51820,         // тот который на сервере

        // AmneziaWG обфускация 
        "jc": 4,
        "jmin": 50,
        "jmax": 1000,
        "s1": 0,
        "s2": 0,
        "s3": 0,
        "s4": 0,
        "h1": "",
        "h2": "",
        "h3": "",
        "h4": "",
        "i1": "",
        "i2": "",
        "i3": "",
        "i4": "",
        "i5": "",

        // Пиры
        "peers": [
          {
            "address": "server.example.com",  // адрес сервера
            "port": 51820,
            "public_key": "base64-encoded-public-key",
            "preshared_key": "base64-encoded-psk",  // опционально
            "allowed_ips": ["0.0.0.0/0", "::/0"],
            "persistent_keepalive_interval": 25     // опционально, в секундах
          }
        ],

        // Dialer опции (опционально)
        "detour": "",
        "bind_interface": "",
        "routing_mark": 0,
        "connect_timeout": "5s"
      }
    ]
  }

  Ключевые поля:

  
  | useIntegratedTun    | bool       | Использует встроенный TUN вместо внешнего 
  | private_key              | string     | Приватный ключ WireGuard (base64)        
  | address                    | string[]  | IP адрес(а) для интерфейса с маской     
  | mtu                           | uint32    | MTU                 
  | jc, jmin, jmax           | int           | Параметры junk-пакетов Amnezia          
  | s1-s4, h1-h4, i1-i5    | int/string | Дополнительные параметры обфускации     

  Peer:
  
  | address     | string   | Адрес сервера (IP или домен)      
  | port            | uint16   | Порт сервера                      
  | public_key  | string   | Публичный ключ пира (base64)     
  | allowed_ips | string[] | Разрешённые подсети через этот пир

Добавляете этот блок в свою конфигурацию sing-box, заменяете бинарник sing-box и вуаля.

Создавать блок outbound не нужно, tag добавленного endpoint можно использовать напрямую в блоках route.rules или в outbound типа urltest, selector. 

Дополнительно можно использовать настройку  "useIntegratedTun": true тогда будет создан tun интерфейс -  теперь endpoint это как вход так и выход. (если вдруг вам это нужно на роутере)

Спойлер

  При включении useIntegratedTun: true в transport/awg/tun_system.go:31-79 создается системный TUN с жёстко закодированными параметрами:

  singtun, err := tun.New(tun.Options{
      Name: name,                    // автогенерация
      GSO:  true,                    // всегда включен
      MTU:  uint32(mtu),             // из endpoint.mtu
      Inet4Address: ...,             // из endpoint.address
      Inet6Address: ...,             // из endpoint.address
      Inet4RouteAddress: ...,        // из peers[].allowed_ips
      Inet6RouteAddress: ...,        // из peers[].allowed_ips
      Inet4RouteExcludeAddress: ..., // адреса серверов (автоматически)
      Inet6RouteExcludeAddress: ..., // адреса серверов (автоматически)

То есть, использование опции "useIntegratedTun": true  отправляет весь трафик из ОС в туннель. Правила sing-box и его логика работать перестают. 

 

Поскольку ни разу не программист, то профессионалы поправят если что не так или не то :) 

Главное, что это работает и можно использовать с маршрутизацией самого sing-box по FakeIP.

Еще дополнительно, эта сборка включает amneziawg-go с поддержкой AWG 2.0, что дает следующее:

Спойлер

  Пример конфигурации

  Сервер:
  [Interface]
  S1 = 100
  S2 = 100
  S3 = 50
  S4 = 50
  H1 = 100-200
  H2 = 300-400
  H3 = 500-600
  H4 = 700-800

  Клиент:
  [Interface]
  S1 = 100      # должно совпадать
  S2 = 100      # должно совпадать
  S3 = 50       # должно совпадать
  S4 = 50       # должно совпадать
  H1 = 100-200  # должно совпадать
  H2 = 300-400  # должно совпадать
  H3 = 500-600  # должно совпадать
  H4 = 700-800  # должно совпадать

  # Эти могут отличаться:
  Jc = 8
  Jmin = 40
  Jmax = 800
  I1 = <b 0xaabbccdd><t><r 20>

 

Что должно совпадать

  | Параметр       | Должен совпадать?  | Почему                                                                          |
  |----------------|--------------------|---------------------------------------------------------|
  | S1, S2, S3, S4  | Да                     | Получатель должен знать размер padding                   |
  | H1, H2, H3, H4 | Да                     | Получатель должен распознать тип пакета                 |
  | Jc, Jmin, Jmax | Нет                   | Junk пакеты просто игнорируются                                |
  | I1-I5                   | Нет                   | Отправляются только клиентом, серверу не важны   |

 

Теги для I1-I5

  | Тег           | Описание                          | Пример           |
  |-----------|---------------------------|----------------|
  | <b 0x...> | Статические байты (hex)   | <b 0xf6ab3267> |
  | <r N>      | Случайные байты                | <r 10>            |
  | <rd N>    | Случайные цифры [0-9]     | <rd 4>           |
  | <rc N>    | Случайные буквы [a-zA-Z]| <rc 8>            |
  | <t>       | Unix timestamp (4 байта)       | <t>                 |
  | <c>       | Счётчик пакетов (4 байта)   | <c>                |

  Важно

  - S3, S4, H1-H4 ranges - новые в AWG 2.0
  - I1-I5 - только на клиенте (сервер их не проверяет)
  - S1, S2, H1-H4 - должны совпадать на клиенте и сервере
  - Jc, Jmin, Jmax - могут различаться

В дополнение, если кому-то будет лениво собирать конфигурацию для amnezia-box самостоятельно, есть вот такой парсер ссылок/файлов AmneziaVPN/WG для этого форка:

https://hoaxisr.github.io/singcraft/

 

Изменено пользователем hoaxisr
  • 2 недели спустя...
Опубликовано (изменено)

в ходе тестирования данного форка от amnezia дополнительно обнаружил некоторую проблему, а именно реализация amneziawg-go которая подтягивается по умолчанию для сборки предполагает, что вы используете ОДИН endpoint AWG, потому как параметры magic headers являются глобальными. 

Поэтому добавление в конфигурационный файл нескольких endpoint такого типа приводит к ситуации, что его параметры magic headers последнего из них "перебивают" параметры всех предыдущих, что в ситуации когда эти параметры отличаются у endpoint приводит к неработоспособности всех endpoint кроме того для которого magic headers будут валидными на стороне сервера. 

Решение этой проблемы очень простое и добавляет дополнительные возможности - просто использовать amneziawg-go версии 2.0 для чего необходимо включить в go.mod использование вот этого (github.com/amnezia-vpn/amneziawg-go v0.2.17-0.20251219021448-449d7cffd4ad), плюсом этого варианта является поддержка параметров h1-h4 в виде диапазонов значений.

То есть, если вы сами хотите собрать себе sing-box с amneziawg, то внесите изменения в go.mod и собирайте спокойненько себе. 

Изменено пользователем hoaxisr
  • hoaxisr изменил название на Amnezia-box (форк sing-box от Amnezia) с AmneziaWG 2.0
Опубликовано (изменено)

Как этот протокол себя показывает по сравнению с hysteria2, tuic? Когда стоял amnezia-wg он работал у меня куда стабильнее вариантов из sing-box

Изменено пользователем megapro17
Опубликовано
8 часов назад, megapro17 сказал:

Как этот протокол себя показывает по сравнению с hysteria2, tuic? Когда стоял amnezia-wg он работал у меня куда стабильнее вариантов из sing-box

Не очень понял о чем идет речь, но попробую ответить исходя из того что понял.

hysteria2, tuic никогда не использвал и как-либо оценить их "стабильность" или другие характеристики не могу.

Мне эта сборка нужна по одной причине - wg (и его реализация от amnezia) мне нравится больше, чем проксирование через vless, но при этом мне нравится возможность достаточно гибко настраивать правила маршрутизации по источникам/направлениям, поэтому я использую этот инструмент, где одновременно есть amneziawg и понятный мне способ настройки конфигурации.

Есть альтернатива в виде mihomo, где awg тоже внедрен, но мне не нравится стабильность работы самого клиента mihomo.

Опубликовано

Заменил бинарник (amd64), сделал изменения конфига по инструкции, но не работает, выдает в логах следующее:

ERROR endpoint/awg[awg-kz]: IPC error -22: failed to set endpoint kz01awg.kcufwfgnkr.net:60136: parse addrport: ParseAddr("kz01awg.kcufwfgnkr.net"): unexpected character (at "kz01awg.kcufwfgnkr.net")

Хотя как видите адрес в конфиге указан корректно.

Опубликовано
5 минут назад, R0cky сказал:

Заменил бинарник (amd64), сделал изменения конфига по инструкции, но не работает, выдает в логах следующее:

ERROR endpoint/awg[awg-kz]: IPC error -22: failed to set endpoint kz01awg.kcufwfgnkr.net:60136: parse addrport: ParseAddr("kz01awg.kcufwfgnkr.net"): unexpected character (at "kz01awg.kcufwfgnkr.net")

Хотя как видите адрес в конфиге указан корректно.

Да. Предполагается, что адрес пира указывается в виде IP

Опубликовано (изменено)
10 минут назад, R0cky сказал:

А если он динамический??

Да, об этом я не подумал. Предполагал, что использование будет с VPS у которых не будет динамического IP.

Попробуйте версию 1.12.15 или 1.13.0-бета1 -- ссылки в первом посте.

Изменения работают.

Изменено пользователем hoaxisr
Опубликовано
янв 08 17:59:53 Debian-Home sing-box[1787439]: panic: runtime error: invalid memory address or nil pointer dereference
янв 08 17:59:53 Debian-Home sing-box[1787439]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x8bb8ac]
янв 08 17:59:53 Debian-Home sing-box[1787439]: goroutine 1 [running]:
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/log.(*observableLogger).Log(0xc00056d500, {0x1aa9810, 0xc0006c8570}, 0x85?, {0xc00004a4a0, 0x1, 0x1})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/log/observable.go:123 +0x22c
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/log.(*observableLogger).ErrorContext(0xc0006bdba8?, {0x1aa9810?, 0xc0006c8570?}, {0xc00004a4a0?, 0x1613>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/log/observable.go:188 +0x30
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/dns.(*Router).Lookup.func1()
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/dns/router.go:340 +0x437
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/dns.(*Router).Lookup(0xc000562000, {0x1aa9810, 0xc0006c8570}, {0xc000518300, 0x16}, {{0x1ab06b0, 0xc000>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/dns/router.go:414 +0x683
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/protocol/awg.NewEndpoint.func2({0xc000518300, 0x16})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/protocol/awg/endpoint.go:89 +0x11d
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/protocol/awg.genIpcConfig({0x0, {0xc0004fd800, 0x2c}, {0xc0004e2cc0, 0x1, 0x1}, 0x564, 0x0, 0x2b, 0x32,>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/protocol/awg/endpoint.go:211 +0xa29
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/protocol/awg.NewEndpoint({_, _}, {_, _}, {_, _}, {_, _}, {0x0, {0xc0004fd800, ...}, ...})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/protocol/awg/endpoint.go:104 +0x4d8
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/adapter/endpoint.Register[...].func2({0x1abb758?, 0xc000530000?}, {0x1abea88?, 0xc00056d6b0?}, {0xc0005>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/adapter/endpoint/registry.go:23 +0x13c
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/adapter/endpoint.(*Registry).Create(0x0?, {0x1aa9810, 0xc0006c8420}, {0x1abb758, 0xc000530000}, {0x1abe>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/adapter/endpoint/registry.go:64 +0x255
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/adapter/endpoint.(*Manager).Create(0xc000568d20, {0x1aa9810?, 0xc0006c8420?}, {0x1abb758?, 0xc000530000>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/adapter/endpoint/manager.go:115 +0xbe
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box.New({{{0xc000484000, 0x5c08, 0x7e00}, {0x0, 0x0}, 0xc0004f7680, 0xc0003bcb40, 0x0, 0x0, {0xc0004f76b0, >
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/box.go:242 +0x1f86
янв 08 17:59:53 Debian-Home sing-box[1787439]: main.create()
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/cmd/sing-box/cmd_run.go:137 +0x1f8
янв 08 17:59:53 Debian-Home sing-box[1787439]: main.run()
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/cmd/sing-box/cmd_run.go:174 +0x105
янв 08 17:59:53 Debian-Home sing-box[1787439]: main.init.func26(0xc0001b5b00?, {0x17de414?, 0x4?, 0x17de418?})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/cmd/sing-box/cmd_run.go:30 +0x17
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/spf13/cobra.(*Command).execute(0x2711f20, {0xc000347480, 0x4, 0x4})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/spf13/cobra@v1.9.1/command.go:1019 +0xae7
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/spf13/cobra.(*Command).ExecuteC(0x270d220)
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/spf13/cobra@v1.9.1/command.go:1148 +0x465
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/spf13/cobra.(*Command).Execute(...)
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/spf13/cobra@v1.9.1/command.go:1071
янв 08 17:59:53 Debian-Home sing-box[1787439]: main.main()
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/cmd/sing-box/main.go:8 +0x1e
янв 08 17:59:53 Debian-Home systemd[1]: sing-box.service: Main process exited, code=exited, status=2/INVALIDARGUMENT

Теперь вываливается с ошибкой.....

Опубликовано
6 минут назад, R0cky сказал:
янв 08 17:59:53 Debian-Home sing-box[1787439]: panic: runtime error: invalid memory address or nil pointer dereference
янв 08 17:59:53 Debian-Home sing-box[1787439]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x8bb8ac]
янв 08 17:59:53 Debian-Home sing-box[1787439]: goroutine 1 [running]:
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/log.(*observableLogger).Log(0xc00056d500, {0x1aa9810, 0xc0006c8570}, 0x85?, {0xc00004a4a0, 0x1, 0x1})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/log/observable.go:123 +0x22c
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/log.(*observableLogger).ErrorContext(0xc0006bdba8?, {0x1aa9810?, 0xc0006c8570?}, {0xc00004a4a0?, 0x1613>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/log/observable.go:188 +0x30
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/dns.(*Router).Lookup.func1()
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/dns/router.go:340 +0x437
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/dns.(*Router).Lookup(0xc000562000, {0x1aa9810, 0xc0006c8570}, {0xc000518300, 0x16}, {{0x1ab06b0, 0xc000>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/dns/router.go:414 +0x683
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/protocol/awg.NewEndpoint.func2({0xc000518300, 0x16})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/protocol/awg/endpoint.go:89 +0x11d
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/protocol/awg.genIpcConfig({0x0, {0xc0004fd800, 0x2c}, {0xc0004e2cc0, 0x1, 0x1}, 0x564, 0x0, 0x2b, 0x32,>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/protocol/awg/endpoint.go:211 +0xa29
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/protocol/awg.NewEndpoint({_, _}, {_, _}, {_, _}, {_, _}, {0x0, {0xc0004fd800, ...}, ...})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/protocol/awg/endpoint.go:104 +0x4d8
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/adapter/endpoint.Register[...].func2({0x1abb758?, 0xc000530000?}, {0x1abea88?, 0xc00056d6b0?}, {0xc0005>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/adapter/endpoint/registry.go:23 +0x13c
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/adapter/endpoint.(*Registry).Create(0x0?, {0x1aa9810, 0xc0006c8420}, {0x1abb758, 0xc000530000}, {0x1abe>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/adapter/endpoint/registry.go:64 +0x255
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box/adapter/endpoint.(*Manager).Create(0xc000568d20, {0x1aa9810?, 0xc0006c8420?}, {0x1abb758?, 0xc000530000>
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/adapter/endpoint/manager.go:115 +0xbe
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/sagernet/sing-box.New({{{0xc000484000, 0x5c08, 0x7e00}, {0x0, 0x0}, 0xc0004f7680, 0xc0003bcb40, 0x0, 0x0, {0xc0004f76b0, >
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/box.go:242 +0x1f86
янв 08 17:59:53 Debian-Home sing-box[1787439]: main.create()
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/cmd/sing-box/cmd_run.go:137 +0x1f8
янв 08 17:59:53 Debian-Home sing-box[1787439]: main.run()
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/cmd/sing-box/cmd_run.go:174 +0x105
янв 08 17:59:53 Debian-Home sing-box[1787439]: main.init.func26(0xc0001b5b00?, {0x17de414?, 0x4?, 0x17de418?})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/cmd/sing-box/cmd_run.go:30 +0x17
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/spf13/cobra.(*Command).execute(0x2711f20, {0xc000347480, 0x4, 0x4})
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/spf13/cobra@v1.9.1/command.go:1019 +0xae7
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/spf13/cobra.(*Command).ExecuteC(0x270d220)
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/spf13/cobra@v1.9.1/command.go:1148 +0x465
янв 08 17:59:53 Debian-Home sing-box[1787439]: github.com/spf13/cobra.(*Command).Execute(...)
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/spf13/cobra@v1.9.1/command.go:1071
янв 08 17:59:53 Debian-Home sing-box[1787439]: main.main()
янв 08 17:59:53 Debian-Home sing-box[1787439]:         github.com/sagernet/sing-box/cmd/sing-box/main.go:8 +0x1e
янв 08 17:59:53 Debian-Home systemd[1]: sing-box.service: Main process exited, code=exited, status=2/INVALIDARGUMENT

Теперь вываливается с ошибкой.....

Простите, это моя ошибка, я выложил не то. Скачайте еще раз бинарник. Там теперь уже с испралением.

Опубликовано

Тест на запуск с доменом на arch linux у меня проходит. 

    DEBUG[0000] endpoint/awg[awg-warp]: uapi: updating private key
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 6 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 9 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 8 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 1 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 8 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 6 - started
     DEBUG[0000] endpoint/awg[awg-warp]: uapi: updating junk count
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 8 - started
     DEBUG[0000] endpoint/awg[awg-warp]: uapi: updating junk min
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 1 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 7 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 3 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 4 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 7 - started
     DEBUG[0000] endpoint/awg[awg-warp]: uapi: updating junk max
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 12 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 4 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 4 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 10 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 7 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 2 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 9 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 9 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 11 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 11 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 2 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 3 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: event worker - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 5 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: tun reader - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 12 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 2 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 5 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 6 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 12 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 10 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: encryption worker 10 - started
     DEBUG[0000] endpoint/awg[awg-warp]: interface up requested
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 5 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 3 - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: decryption worker 11 - started
     DEBUG[0000] endpoint/awg[awg-warp]: peer(bmXO…fgyo) - uapi: created
     DEBUG[0000] endpoint/awg[awg-warp]: peer(bmXO…fgyo) - uapi: updating endpoint
     DEBUG[0000] endpoint/awg[awg-warp]: peer(bmXO…fgyo) - uapi: Adding allowedip
     DEBUG[0000] endpoint/awg[awg-warp]: peer(bmXO…fgyo) - starting
     DEBUG[0000] endpoint/awg[awg-warp]: routine: handshake worker 1 - started
     DEBUG[0000] endpoint/awg[awg-warp]: udp bind has been updated
     DEBUG[0000] endpoint/awg[awg-warp]: interface state was Down, requested Up, now Up
     DEBUG[0000] endpoint/awg[awg-warp]: routine: receive incoming receive - started
     DEBUG[0000] endpoint/awg[awg-warp]: peer(bmXO…fgyo) - routine: sequential receiver - started
     DEBUG[0000] endpoint/awg[awg-warp]: routine: receive incoming receive - started
     DEBUG[0000] endpoint/awg[awg-warp]: peer(bmXO…fgyo) - routine: sequential sender - started
     INFO[0000] sing-box started (0.00s)

Опубликовано (изменено)

Спасибо теперь все работает. Только заметил, когда заполняешь параметры i1... i5, то в логе вот такие ошибки:

Спойлер

+0500 2026-01-08 18:17:13 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>
+0500 2026-01-08 18:17:23 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>
+0500 2026-01-08 18:17:33 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>
+0500 2026-01-08 18:17:43 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>
+0500 2026-01-08 18:17:54 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>

 

Поэтому пока сделал конфиг без этих плюшек. Прошу по возможности подправить.

PS В нативном клиенте AWG (не sing-box) данные параметры принимаются.

Изменено пользователем R0cky
Опубликовано (изменено)
46 минут назад, R0cky сказал:

Спасибо теперь все работает. Только заметил, когда заполняешь параметры i1... i5, то в логе вот такие ошибки:

  Скрыть контент

+0500 2026-01-08 18:17:13 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>
+0500 2026-01-08 18:17:23 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>
+0500 2026-01-08 18:17:33 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>
+0500 2026-01-08 18:17:43 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>
+0500 2026-01-08 18:17:54 ERROR endpoint/awg[awg-kz]: IPC error -22: failed to parse I2: unknown tag <c>
unknown tag <r114>

 

Поэтому пока сделал конфиг без этих плюшек. Прошу по возможности подправить.

PS В нативном клиенте AWG (не sing-box) данные параметры принимаются.

Да, тэг <c> не реализован в amneziawg-go.  Он был только реализован в kernel module. Теперь эта поддержка перенесена и в этот форк тоже.

тэг <r> просто был неправильно вами записан в конфигурации - должно быть с пробелом: <r 114> 

 

  Теперь поддерживаются теги:

  | Тег     | Описание                              |
  |---------|---------------------------------------|
  | <b HEX> | Статические байты                     |
  | <c>     | Счётчик пакетов (4 байта, big-endian) |
  | <t>     | Unix timestamp (4 байта)              |
  | <r N>   | Случайные байты                       |
  | <rc N>  | Случайные буквы                       |
  | <rd N>  | Случайные цифры                       |

  Пример конфигурации:

  {
    "type": "awg",
    "i1": "<b 0xCAFE><c><r 8>",
    "i2": "<t><c><r 16><d>"
  }

  

Если по результатам тестирования будут какие-то проблемы - напишите.

 

Изменено пользователем hoaxisr

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.