Skip to content

UDP listener of direct inbound is closed at startup on armv7 (kernel 4.1.52): recvmmsg: function not implemented #4499

Description

@abcfy2

Operating system

Linux

System version

ASUS TUF-AX5400 router, ASUSWRT-Merlin firmware
Linux 4.1.52 (armv7l, 32-bit)

Installation type

Original sing-box Command Line

Version

sing-box version 1.14.0

Environment: go1.26.7 linux/arm
Tags: with_gvisor,with_quic,with_dhcp,with_wireguard,with_utls,with_acme,with_clash_api,with_tailscale,with_ccm,with_ocm,with_cloudflared,with_usbip,with_openvpn,with_openconnect,badlinkname,tfogo_checklinkname0
Revision: 0b8995879f29a9b98ee027bc17b75e101445b238
CGO: disabled

(unmodified official release: sing-box-1.14.0-linux-armv7.tar.gz)

Description

On this device, the UDP listener of a direct inbound is closed immediately at startup; only the TCP listener remains (verified with netstat). The same happens with the documented hijack-dns setup (direct "dns-in" inbound + route rule {"inbound":["dns-in"],"action":"hijack-dns"}).

Result: transparent DNS hijack via iptables REDIRECT (udp dport 53 -> the direct inbound) stops working for LAN clients - UDP DNS gets no response, so the whole network loses UDP DNS while TCP keeps working.

Reproduction

  1. Unpack sing-box-1.14.0-linux-armv7.tar.gz on the device (kernel 4.1.52, armv7l).
  2. Run: sing-box run -c config.json
  3. netstat -lnt shows TCP :1054 LISTEN; netstat -lnu shows no UDP :1054 socket.

config.json (complete, minimal, no TUN / no remote server):

{
  "log": { "level": "warn" },
  "inbounds": [
    { "type": "direct", "tag": "dns-in", "listen": "::", "listen_port": 1054 }
  ],
  "outbounds": [ { "type": "direct", "tag": "d" } ]
}

The documented hijack-dns configuration pattern (direct dns-in inbound + route rule {"inbound":["dns-in"],"action":"hijack-dns"}, dns server type local) produces the same result on port 1055.

Logs

# uname -a
Linux TUF-AX5400-0368 4.1.52 #1 SMP PREEMPT Wed Jun 10 00:57:46 UTC 2026 armv7l ASUSWRT-Merlin

# sing-box run -c config.json
ERROR[0000] inbound/direct[dns-in]: udp listener closed: raw read: recvmmsg: function not implemented

# netstat -lnt | grep 1054
tcp        0      0 :::1054                 :::*                    LISTEN

# netstat -lnu | grep 1054
(no output)

Supporter

Integrity requirements

  • I confirm that I have read the documentation, understand the meaning of all the configuration items I wrote, and did not pile up seemingly useful options or default values.
  • I confirm that I have provided the server and client configuration files and process that can be reproduced locally, instead of a complicated client configuration file that has been stripped of sensitive data.
  • I confirm that I have provided the simplest configuration that can be used to reproduce the error I reported, instead of depending on remote servers, TUN, graphical interface clients, or other closed-source software.
  • I confirm that I have provided the complete configuration files and logs, rather than just providing parts I think are useful out of confidence in my own intelligence.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions