Помогите разобраться с 3X-UI

Всем привет. Арендовал 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 работают. Предполагаю, что затык на стороне сервера, но у меня очень мало в этом компетенций, чтобы разобраться, поэтому прошу вашей помощи. Можно ли локализовать проблему хотя бы? Или я всё-таки ошибся в настройках, что-то не сделал?

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

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

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"

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

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

$ 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 вижу, что пакеты от клиента доходят.

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

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

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

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

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

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

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

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

# ln -sf ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

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