Входящие подключения
Входящие подключения используются для приема данных. Доступные протоколы см. в разделе Входящие протоколы.
InboundObject
InboundObject соответствует дочернему элементу поля inbounds в конфигурационном файле.
{
"inbounds": [
{
"listen": "127.0.0.1",
"port": 1080,
"protocol": "название протокола",
"settings": {},
"streamSettings": {},
"tag": "тег",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
}
}
]
}2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
listen: address
Адрес прослушивания, IP-адрес или Unix domain socket.
Значение по умолчанию - "0.0.0.0", что означает прием подключений на всех сетевых интерфейсах.
Можно указать любой доступный в системе IP-адрес.
"::" эквивалентно "0.0.0.0" — обе записи позволяют одновременно прослушивать IPv6 и IPv4. Однако, если вы хотите прослушивать только IPv6, установите параметр v6only в sockopt равным true. Если нужно прослушивать только IPv4, выполните команду ip a, чтобы узнать конкретный IP-адрес сетевого интерфейса (это может быть внешний IP-адрес машины или внутренний адрес, например 10.x.x.x), и настройте прослушивание на этот адрес. Аналогичный подход применяется и для IPv6.
Поддерживается указание Unix domain socket в формате абсолютного пути, например "/dev/shm/domain.socket".
Можно добавить @ в начало пути, чтобы использовать абстрактный сокет, или @@, чтобы использовать абстрактный сокет с заполнением.
При указании Unix domain socket параметры port и allocate игнорируются.
В настоящее время поддерживаются протоколы VLESS, VMess, Trojan и типы транспорта TCP, WebSocket, HTTP/2, gRPC.
При указании Unix domain socket можно указать права доступа к сокету, добавив запятую и индикатор прав доступа, например "/dev/shm/domain.socket,0666".
Это может помочь решить проблемы с правами доступа к сокету, которые возникают по умолчанию.
port: number | "env:variable" | string
Порт.
Допустимые форматы:
- Целое число: фактический номер порта.
- Переменная окружения: начинается с
"env:", за которым следует имя переменной окружения, например"env:PORT".
Xray будет анализировать эту переменную окружения как строку. - Строка: может быть числом в виде строки, например
"1234", или диапазоном портов, например"5-10", что означает порты с 5 по 10 (6 портов).
Можно использовать запятые для разделения диапазонов, например11,13,15-17, что означает порты 11, 13, 15, 16 и 17 (5 портов).
Если указан только один порт, Xray будет прослушивать входящие подключения на этом порту.
Если указан указан диапазон портов, Xray будет прослушивать все порты в этом диапазоне.
Обратите внимание, что прослушивание порта — это довольно ресурсоемкая операция. Прослушивание слишком большого диапазона портов может привести к значительному увеличению потребляемых ресурсов и даже нарушить нормальную работу Xray. Как правило, проблемы могут начаться, когда количество прослушиваемых портов приближается к четырехзначным числам. Если вам нужен большой диапазон, рассмотрите возможность использования iptables для перенаправления вместо того, чтобы настраивать его здесь.
protocol: "dokodemo-door" | "http" | "shadowsocks" | "mixed" | "vless" | "vmess" | "trojan" | "wireguard"
Название протокола соединения. Список доступных протоколов см. в разделе Входящие протоколы в меню слева.
settings: InboundConfigurationObject
Конкретные настройки зависят от протокола.
См. описание InboundConfigurationObject для каждого протокола.
streamSettings: StreamSettingsObject
Тип транспорта (transport) - это способ взаимодействия текущего узла Xray с другими узлами.
tag: string
Тег этого входящего подключения, используемый для идентификации этого подключения в других настройках.
DANGER
Если это поле не пустое, его значение должно быть уникальным среди всех тегов.
sniffing: SniffingObject
Обнаружение трафика в основном используется для прозрачного проксирования и других целей.
Например, типичный сценарий выглядит следующим образом:
- Устройство пытается получить доступ к abc.com.
Сначала устройство выполняет DNS-запрос и получает IP-адрес 1.2.3.4 для abc.com.
Затем устройство пытается установить соединение с 1.2.3.4. - Если обнаружение трафика не настроено, Xray получает запрос на подключение к 1.2.3.4 и не может использовать доменные правила для маршрутизации и разделения трафика.
- Если в sniffing включен параметр
enabled, Xray при обработке трафика этого соединения попытается извлечь доменное имя из данных трафика, т.е. abc.com. - Xray заменит 1.2.3.4 на abc.com.
Маршрутизация сможет использовать доменные правила для разделения трафика.
Так как запрос теперь направляется на abc.com, можно выполнять больше действий, например, повторное разрешение DNS, помимо разделения трафика по доменным правилам.
Если в sniffing параметр enable установлен в true, можно также распознавать трафик типа bittorrent. Затем в модуле Routing можно настроить поле "protocol" для обработки незашифрованного BT-трафика. Например, на сервере можно блокировать незашифрованный BT-трафик, а на клиенте — статически перенаправлять его на определенный VPS.
Внимание: Новые браузеры могут использовать ECH (Encrypted Client Hello). В этом случае Xray видит только домен в Outer Hello. Возможно, потребуется рассмотреть вариант DNS Hijacking или ручного отключения ECH в настройках браузера.
SniffingObject
{
"enabled": true,
"destOverride": ["http", "tls", "fakedns"],
"metadataOnly": false,
"domainsExcluded": [],
"routeOnly": false
}2
3
4
5
6
7
enabled: true | false
Включить обнаружение трафика.
destOverride: ["http" | "tls" | "quic" | "fakedns"]
Заменить целевой адрес текущего подключения на указанные типы, если трафик соответствует им.
TIP
Xray будет использовать доменные имена, обнаруженные с помощью sniffing, только для маршрутизации.
Если вы хотите только обнаруживать доменные имена для маршрутизации, но не хотите изменять целевой адрес (например, при использовании Tor Browser изменение целевого адреса может привести к невозможности подключения), добавьте соответствующие протоколы в этот список и включите routeOnly.
metadataOnly: true | false
Если этот параметр включен, для обнаружения целевого адреса будут использоваться только метаданные подключения.
В этом случае все снифферы, кроме fakedns, будут отключены.
Если этот параметр отключен, для определения целевого адреса будут использоваться не только метаданные, но и данные.
В этом случае клиенту необходимо сначала отправить данные, чтобы прокси-сервер установил соединение.
Это поведение несовместимо с протоколами, которые требуют, чтобы сервер первым отправил сообщение, например, SMTP.
domainsExcluded: [string] WIP
Список доменных имен, для которых не будет выполняться замена целевого адреса, если они обнаружены с помощью sniffing.
Поддерживаются прямые доменные имена (точное совпадение) или регулярные выражения, начинающиеся с regexp:.
TIP
Добавление некоторых доменных имен может решить проблемы с push-уведомлениями iOS, умными устройствами Mijia и голосовым чатом в некоторых играх (Rainbow Six Siege).
Если вам нужно выяснить причину каких-либо проблем, попробуйте отключить "sniffing" или включить "routeOnly".
"domainsExcluded": [
"courier.push.apple.com", // Push-уведомления iOS
"Mijia Cloud", // Умные устройства Mijia
"dlg.io.mi.com"
]2
3
4
5
6
WARNING
В настоящее время domainsExcluded не поддерживает способы сопоставления доменов, аналогичные тем, что используются в маршрутизации.
Этот параметр может быть изменен в будущем, совместимость между версиями не гарантируется.
routeOnly: true | false
Использовать обнаруженные доменные имена только для маршрутизации.
Целевой адрес прокси-сервера остается IP-адресом.
Значение по умолчанию - false.
Этот параметр требует, чтобы destOverride был включен.
TIP
Если вы уверены, что проксируемое соединение будет правильно разрешено DNS, то при использовании routeOnly и включенном destOverride можно установить стратегию сопоставления маршрутов domainStrategy в AsIs, чтобы реализовать разделение трафика по доменам и IP-адресам без DNS-разрешения.
В этом случае при сопоставлении правил на основе IP-адресов будет использоваться исходный IP-адрес домена.
ы