Inbounds

Inbound connections are used to receive data from the client (browser or upstream proxy server). For available protocols, see the protocol list.

InboundObject

InboundObject corresponds to a child element of the inbounds item in the configuration file.

{
    "listen": "127.0.0.1",
    "port": 1080,
    "protocol": "Protocol Name",
    "settings": {},
    "streamSettings": {},
    "tag": "Tag",
    "sniffing": {
        "enabled": true,
        "destOverride": [
            "http",
            "tls"
        ],
        "metadataOnly": false
    },
    "allocate": {
        "strategy": "always",
        "refresh": 5,
        "concurrency": 3
    }
}

listen: address

The listening IP address for the inbound. Only IP addresses are allowed. The default value is "0.0.0.0" which means accepting connections on all network interfaces. Otherwise, the specified address must be already added to an existing network interface.

v4.32.0+, supports filling in Unix domain sockets. The format is an absolute path, such as "/dev/shm/domain.socket". You can add "@" at the beginning to represent abstractopen in new window. "@@" represents abstract with padding.

When filling in Unix domain sockets, port and allocate will be ignored, the protocols can temporarily be selected from VLESS, VMess, Trojan, and the transmission methods can be selected from TCP, WebSocket, HTTP/2.

port: number | "env:variable" | string

The listening port for the inbound. Accepted formats are as follows:

  • Integer value: the actual port number.

  • Environment variable: starts with "env:", followed by the name of an environment variable, such as "env:PORT". V2Ray will parse this environment variable as a string.

  • String: can be a numeric string, such as "1234"; or a numeric range, such as "5-10" which means port 5 to port 10, a total of 6 ports.

When there is only one port, V2Ray will listen for inbound connections on this port. When a port range is specified, it depends on the allocate setting.

protocol: string

Connection protocol name. For optional values, see the protocol list.

settings: InboundConfigurationObject

The specific configuration content varies depending on the protocol. For details, see InboundConfigurationObject in each protocol.

streamSettings: StreamSettingsObject

Low-level transmission configuration

tag: string

The identifier of this inbound connection, used to locate this connection in other configurations. When non-empty, its value must be unique among all tags.

sniffing: SniffingObject

Try to detect the type of traffic.

allocate: AllocateObject

Port allocation settings.

SniffingObject

{
    "enabled": true,
    "destOverride": [
        "http",
        "tls"
    ],
    "metadataOnly": false
}

enabled: true | false

Whether to enable traffic detection.

destOverride: ["http" | "tls" | "quic" | "fakedns" | "fakedns+others"]

When traffic is of the specified type, the destination of the current connection will be overridden with the destination included in the traffic.

The fakedns+others setting will prioritize FakeDNS virtual DNS server matching. If the IP address is within the virtual DNS server's IP address range but no corresponding domain name record is found, the matching results of http, tls, and quic are used. This option is only valid when metadataOnly is false. (v4.38.0+)

metadataOnly: true | false

Whether to use only metadata to detect the destination address without intercepting the traffic content. Only the metadata traffic destination detection module will be activated.

If using only metadata to detect the destination address is turned off, the client must send data before the proxy server actually establishes a connection. This behavior is incompatible with protocols that require the server to initiate the first message, such as SMTP.

TIP

"Fake" DNS server is a metadata traffic destination address detection module. The metadataOnly setting must be turned off to be able to use other traffic detection modules.

AllocateObject

{
    "strategy": "always",
    "refresh": 5,
    "concurrency": 3
}

strategy: "always" | "random"

Port allocation strategy. "always" means always allocating all specified ports. V2Ray will listen to the number of ports specified in port. "random" means randomly opening ports. Every refresh minutes, concurrency ports will be randomly selected from the port range to listen.

refresh: number

The random port refresh interval in minutes. The minimum value is 2 and the recommended value is 5. This property is only valid when strategy = random.

concurrency: number

The random port number. The minimum value is 1 and the maximum value is one third of the port range. The recommended value is 3.