Настройка xray-core в качестве vless клиента на Linux хосте (desktop)

Здравствуйте, на своём линукс десктопе хочу настроить xray-core в качестве клиента к серверу где так же стоит xray-core работающий на vless xtls reality с использованием стороннего маскировочного домена. У меня очень мало опыта, и у меня не получается. Xray-core на стороне клиента запускается, но трафик не работает. Проверял на Fedora Worksations и Ubuntu 22.10

Я покажу свои конфигурации, но перед публикацией я отредактировал их, и убрал чувствительные данные. Заменил на фейковые IP, ID, dest, serverNames, privateKey, publicKey, shortId

Как я понимаю, я должен в приложениях или в системе настроить локальный socks на ip 127.0.0.1 port 10808
Я пробовал эти данные вписывать в GUI настройки GNOME, там есть возможность настройки прокси, и пробовал это делать в firefox, но там я нажимал socks4 или socks5 (а у меня в конфиге вроде только socks, я не знаю в чём разница). Трафик не идёт

Есть ли в конфигах грубые или не очень ошибки и любые советы приветствуются. Сервер прекрасно работает через GUI клиенты.

Причина настройки xray-core желание иметь текстовой клиент, потому, что GUI клиенты визуально страшные.
config server

{
  "log": {
    "loglevel": "info"
  },
  "inbounds": [
    {
      "listen": "213.59.254.7",
      "port": 443,
      "protocol": "vless",
      "tag": "reality-in",
      "settings": {
        "clients": [
          {
            "id": "here_id_key_my",
            "email": "user1",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "www.gosuslugi.ru:443",
          "xver": 0,
          "serverNames": [
            "www.gosuslugi.ru"
          ],
          "privateKey": "here-key-private-54645gef3f4rf",
          "minClientVer": "",
          "maxClientVer": "",
          "maxTimeDiff": 0,
          "shortIds": ["here_id"]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic"
        ]
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ],
  "routing": {
    "rules": [
      {
        "type": "field",
        "protocol": "bittorrent",
        "outboundTag": "block"
      }
    ],
    "domainStrategy": "IPIfNonMatch"
  }
}

config client

{
    "log": {
        "loglevel": "debug"
    },
    "inbounds": [
        {
            "listen": "127.0.0.1", 
            "port": 10808, 
            "protocol": "socks",
            "settings": {
                "udp": true
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls",
                    "quic"
                ],
                "routeOnly": true
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "vless",
            "settings": {
                "vnext": [
                    {
                        "address": "213.59.254.7", 
                        "port": 443, 
                        "users": [
                            {
                                "id": "here_id_key_my", // Needs to match server side
                                "encryption": "none",
                                "flow": "xtls-rprx-vision"
                            }
                        ]
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "reality",
                "realitySettings": {
                    "fingerprint": "chrome", 
                    "serverName": "www.gosuslugi.ru:443", // A website that support TLS1.3 and h2. If your dest is `1.1.1.1:443`, then leave it empty
                    "publicKey": "here_publick_key_iuhf9uhr8fu3he8dh", // run `xray x25519` to generate. Public and private keys need to be corresponding.
                    "spiderX": "", // If your dest is `1.1.1.1:443`, then you can fill it with `/dns-query/` or just leave it empty
                    "shortId": "here_id"
 // Required
                }
            },
            "tag": "proxy"
        }
    ]
}

У вас клиент поднимается без ошибок, но траффик не идет? А как роутинг настроен?

Не уверен влияет это или нет, но доках serverNames указан без порта. Transport | Project X

Ну и под госуслуги не самый лучший вариант маскироваться. Посканируйте сеть хостера этой утилитой GitHub - XTLS/RealiTLScanner: A TLS server scanner for Reality и используйте ближайший сайт.

Включите дебаг в клиенте и на сервере Log Configuration | Project X и смотрите в чем проблема.

Что вы подразумеваете под роутингом? Всё идёт через прокси или нет? Это не имеет значения, на сервере фильтров нет, он маршрутизирует всё полностью, и это в конфиге видно. Я пытаюсь с помощью какой то там матери понять, впринципе в правильном я направлении иду, так же хотелось бы знать, работает или подобная конфигурация клиента хоть у кого нибудь.

В начале надо понять, правильно ли пишем конфиг. Может посоветуете софт какой, чтобы протестировать socks, а то может у меня с этим протоколом система не правильно работает.

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

Вы наверное заметили, что debug включён на клиенте, врятли имеет смысл его включать на сервере. xray мало ошибок передаёт или не передаёт по сети, из за его особенной природы быть незаметным и тихим.

в терминале лог такой, в начале всё работает, как только пытаешься подключиться к socks, в логи бежит куча информации, перед тем как усё останавливается появляется такое:

2024/12/23 14:55:33 [Info] [2555611942] app/proxyman/outbound: app/proxyman/outbound: failed to process outbound traffic > proxy/vless/outbound: failed to find an available destination > common/retry: [x509: certificate is valid for cosmopolitan.com, *.25ans.jp, далее невероятное колличество доменов, я на такие вообще никогда не ходил, а потом
*.hearstautos.net, *.intelliprice.com, intelliprice.com, *.gente.it, gente.it, *.cdn-test.hearstapps.net, not www.здесь_маскировочный_домен:443 dial tcp здесь_ip_vps:443: operation was canceled] > common/retry: all retry attempts failed

Ок. Просто у меня тоже xray, но клиент Nekobox и я дополнительно настраиваю сплит трафика, какой пропускать direct для ru зоны например, а какой через прокси. Предлагаю перепроверить какой режим стоит в клиенте, я просто клиент сам не пробовал ставить, хоть хочется поиграть с xhttp…

У меня другие:


"realitySettings": {
                        "show": false,
                        "dest": "www.gosuslugi.ru:443",
                        "xver": 0,
                        "serverNames": [
                                "www.gosuslugi.ru",
                                "gosuslugi.ru"
                        ],
                        "privateKey": "pkey",
                        "minClientVer": "",
                        "maxClientVer": "",
                        "maxTimeDiff": 0,
                        "shortIds": [
                                "short_ids"
                        ]
                }

Попробуйте добавить в serverNames две записи и уберите там порт

2024/12/23 15:13:36 [Info] [935943789] app/proxyman/inbound: connection ends > proxy/socks: connection ends > proxy/socks: failed to transport all TCP response > io: read/write on closed pipe
2024/12/23 15:13:36 [Info] [4092338907] app/proxyman/inbound: connection ends > proxy/socks: connection ends > proxy/socks: failed to transport all TCP response > io: read/write on closed pipe

Это если настраивать socks в firefox на соответсвующим 127.0.0.1:10808 выбирая в настройка socks5
получаем такой вот лог, смотрите выше. Показываю конец лога. То есть xray определённо видит, что к нему подключается кто то по socks, реагируя бурными логами, но трафик не идёт в интернет увы.

Так у вас логи не пишутся. Пропишите пути, как в инструкции, и на сервере тоже. Так больше информации будет.

Прокси можно так проверить
curl https://whatismyip.akamai.com -x socks5://127.0.0.1:10808

В конфиге клиента serverName так же поменяйте, уберите порт. Я сейчас импортировал настройки свои в клиент десктопный и сравнил с вашими

порт в serverName опечатка, когда редактировал конфиг к публикации, исправил в заглавном посте. Там нет у меня порта в рабочем конфиге. Прошу прощения за опечатку.

$ curl https://whatismyip.akamai.com 1 -x socks5://127.0.0.1:10808
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to whatismyip.akamai.com:443 
curl: (52) Empty reply from server

curl https://whatismyip.akamai.com 1 -x socks://127.0.0.1:10808
curl https://whatismyip.akamai.com 1 -x socks4://127.0.0.1:10808

А тут какие результаты?

Единичку уберите. Это форум подставил счётчик переходов.
curl https://whatismyip.akamai.com -x socks5://127.0.0.1:10808

$ curl https://whatismyip.akamai.com -x socks5://127.0.0.1:10808
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to whatismyip.akamai.com:443 

$ curl https://whatismyip.akamai.com -x socks4://127.0.0.1:10808
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to whatismyip.akamai.com:443 

У вас разные домены reality на клиенте и сервере. Нужно было с самого начала выложить полный конфиг и заменить там только uuid и ключ, а не убирать важную для диагностики инфу. Конфиг должен запускаться и работать, сейчас он сильно отличается от вашего.

Разные, это какие? Я не вижу разницы, о которой вы говорите.

вы точно сюда пришли за помощью или потроллить? вы сами признались выше

что не “афишируете”, теперь пользователям приходится гадать что же у вас там в конфиге.

вы не услышали, поэтому повторюсь: если хотите чтобы вам помогли то нужно выложить полные и рабочие конфиги

может все же ванга придёт сюда и поможет вам, но я сомневаюсь…

Для начала проверьте, что порт 443 на сервере доступен, затем надо проверить, что с сервера доступен домен под который вы маскируетесь и сертификат для него вынимается, например так:

openssl s_client -showcerts -connect gosuslugi.ru:443

Вы наверное заметили, что debug включён на клиенте, врятли имеет смысл его включать на сервере. xray мало ошибок передаёт или не передаёт по сети

При чем тут передача по сети ошибок? Включите отладку и на клиенте и на сервере, логи создаются локально и по сети никакие ошибки передаваться не должны )

но там я нажимал socks4 или socks5 (а у меня в конфиге вроде только socks, я не знаю в чём разница)

UPD: новые версии xray имеют гибридный inbound socks, который понимает и socks4 и socks5 и http-proxy, включайте в firefox что угодно, но предпочтительно socks5 c “dns over socks”

Подскажите пожалуйста, вот здесь указан пример конфига для сервера Xray-examples/VLESS-TCP-XTLS-Vision-REALITY/config_server.jsonc at main · XTLS/Xray-examples · GitHub где в этом конфиге предлагается вводить адрес сервера? У меня используется параметр listen Почему его нет в примере, пример указан не верно? Или я что то не правильно понимаю?

Может немного не в тему, но попалась сегодня эта статья:

Вот такой конфиг с fragment оказался вполне рабочим (это для тех, кто не имеет возможности держать свой xray-сервер на vps):

{
“log”: {
“loglevel”: “debug”,
“dnsLog”: false
},
“inbounds”: [
{
“listen”: “127.0.0.1”,
“port”: 1080,
“protocol”: “socks”,
“tag”: “socks”
}
],
“outbounds”: [
{
“tag”: “fragment”,
“protocol”: “freedom”,
“settings”: {
“fragment”: {
“packets”: “2”,
“length”: “1-10”,
“interval”: “10-20”
}
},
“streamSettings”: {
“sockopt”: {
“TcpNoDelay”: true,
“mark”: 255
}
}
}
]
}