Ник Пост Дата
allula

Всем привет. Арендовал VPS, поставил 3X-UI в докере, настроил панель слушать localhost, создал подключение.

Протокол: vless
Порт: 443
Flow: xtls-rprx-vision
Протокол передачи: TCP (RAW)
Безопасность: Reality
Dest (Target) и SNI пробовал разные: и крупные, и местечковые.

Однако клиент v2rayNG не может подключиться. Сначала заметил, что в сгенерированной строке подключения указан localhost (насколько понял, панель смотрит, по какому адресу к ней обратились, и подставляет этот адрес). Поменял руками на IP VPS. Подключается, но после нажатия на проверку соединения пишет:

Сбой проверки интернет-соединения: io: read/write on closed pipe

При этом бесплатные ключи с vless-reality работают. Предполагаю, что затык на стороне сервера, но у меня очень мало в этом компетенций, чтобы разобраться, поэтому прошу вашей помощи. Можно ли локализовать проблему хотя бы? Или я всё-таки ошибся в настройках, что-то не сделал?

2024-11-30T12:34:29.346Z
Xunlei

Если в сгенерированной строке локалхост, то скорее всего не настроен адрес прослушивания входящих соединений.

Примерные команды терминала для проверки:

sudo apt install net-tools
sudo netstat -atupen

Смотрите, что на публичном адресе приложение слушает порт.

sudo apt install tcpdump
sudo tcpdump -n -i ens3 "not arp and not multicast and not port 22"

Смотрите, что пакеты от клиента доходят до сервера.

2024-11-30T12:49:54.148Z
allula

Благодарю за ответ. Вот вывод:

$ sudo ss -atupn | grep xray
tcp   LISTEN    0      4096       127.0.0.1:62789        0.0.0.0:*     users:(("xray-linux-amd6",pid=1996,fd=3))                          
tcp   LISTEN    0      4096               *:443                *:*     users:(("xray-linux-amd6",pid=1996,fd=6))

Если я правильно понимаю, xray слушает все ip на 443 порту.

Через tcpdump вижу, что пакеты от клиента доходят.

2024-11-30T13:26:24.018Z
Xunlei

А в ответ сервер посылает? Может в файрволле нужно разрешить 443 порт.

2024-11-30T13:53:53.688Z
allula

Так точно. Вижу пакеты в обоих направлениях. У самого xray можно логи посмотреть? Не могу найти.

2024-11-30T14:01:19.516Z
NowAndThen

Ну, все правильно. Вы настроили xray-сервер слушать localhost, т.е. самого себя. Конечно вы не можете извне подключиться. И IP сервера вы туда ставите, то же самое и получаете, он будет ждать подключения с самого себя. Уберите из поля Listen все. Или пропишите там 0.0.0.0, т.е. слушать подключения с любых IP, что по эквивалентно пустому полю по умолчанию, тогда будет ждать поключения с любого IP.

2024-11-30T14:01:37.510Z
allula

В настройки xray вообще не лез. Настраивал только саму панель слушать localhost, чтобы не висела на весь интернет. Вывод ss вроде подтверждает мои слова (*:443). Или я что-то упускаю?

2024-11-30T14:05:21.571Z
Xunlei

Можете сохранить пакеты в файл и открыть в Wireshark. Если там в ответ не RST пакет, а SYN+ACK и данные значит что-то не так с конфигурацией.

Не знаю, не пользуюсь 3x-ui, должно быть можно.

2024-11-30T14:45:32.509Z
Xunlei

Там только веб морда админки на локалхосте.

2024-11-30T14:54:54.562Z
allula

Большое спасибо всем, кто ответил. Проблема оказалась в настройках разрешения имён (только не смейтесь): пустой /etc/resolv.conf. Изначально при установке системы включил systemd-resolved, но не знал, что go не умеет в NSS. Всё решилось одной ссылкой:

# ln -sf ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
2024-11-30T15:42:09.037Z
Xunlei

Тогда лучше какой-нибудь bind9, unbound или TDNS поставить с поддержкой ServeStale и прочих фич.

2024-11-30T16:48:37.097Z