shadowsocks-rust: sslocal say "udp failed to send back 16 bytes to client error: Protocol not available (os error 92)"

I tried to setup up a transparent proxy on my router by tproxy, but it was always failed on sslocal with udp failed to send back 16 bytes to client error: Protocol not available (os error 92) error. Then I will always get a NAT F type on my nintendo switch network test😢. Pls help me to debug this problem.

2022-10-28T16:17:15.018467732+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client send to 13.112.35.82:10025, control: UdpSocketControlData { client_session_id: 1808483490137459351, server_session_id: 0, packet_id: 13, user: None }, payload length 16 bytes, packet length 71 bytes
2022-10-28T16:17:15.018712648+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 -> 13.112.35.82:10025 (proxied) with 16 bytes
2022-10-28T16:17:15.018883002+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet generated aead salt b"-~\x98jq\xdfh\x87\xd96<\x12\xa5WliT\x02\x97\xeajJ\\\xba?i\x0c\x11\x95\xd1*("
2022-10-28T16:17:15.019205036+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client send to 13.112.35.82:10025, control: UdpSocketControlData { client_session_id: 1808483490137459351, server_session_id: 0, packet_id: 14, user: None }, payload length 16 bytes, packet length 71 bytes
2022-10-28T16:17:15.019452792+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 -> 13.112.35.82:10025 (proxied) with 16 bytes
2022-10-28T16:17:15.019622272+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet generated aead salt b"-4\xcf\xb6>s\x99-\xb9\x0b-KKE\xb7\xb4\xb2\xfc\xfaE\xaf(sW\x80\x82\xaa\xe2-\xfc\xa2["
2022-10-28T16:17:15.019963408+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client send to 13.112.35.82:10025, control: UdpSocketControlData { client_session_id: 1808483490137459351, server_session_id: 0, packet_id: 15, user: None }, payload length 16 bytes, packet length 71 bytes
2022-10-28T16:17:15.020422974+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 -> 52.193.120.207:10025 (proxied) with 16 bytes
2022-10-28T16:17:15.020620476+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet generated aead salt b"\xc1\xb6\x95\x8c\xf8\x97\xcb\x03e\xb3\x915\x86\xb9\xcaG\x81Aa\x1e\xb5\x15\xad\xebd\xc1\xb6\xac\x15q\xf0-"
2022-10-28T16:17:15.021033+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client send to 52.193.120.207:10025, control: UdpSocketControlData { client_session_id: 1808483490137459351, server_session_id: 0, packet_id: 16, user: None }, payload length 16 bytes, packet length 71 bytes
2022-10-28T16:17:15.021334632+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 -> 52.193.120.207:10025 (proxied) with 16 bytes
2022-10-28T16:17:15.021532296+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet generated aead salt b"\\\x1c\xd4P\xa7\x988\xb6\x887\x9e\xa5a\x0e\xbf\xc6a\x04\xab\xcb\x98\xa8\x12x\xc2\xa2*\x9f\xee\xcd\x87h"
2022-10-28T16:17:15.021936498+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client send to 52.193.120.207:10025, control: UdpSocketControlData { client_session_id: 1808483490137459351, server_session_id: 0, packet_id: 17, user: None }, payload length 16 bytes, packet length 71 bytes
2022-10-28T16:17:15.022219812+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 -> 52.193.120.207:10025 (proxied) with 16 bytes
2022-10-28T16:17:15.022407188+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet generated aead salt b"\x83{\xf4\xb6\x12u\x01\x8e\x95\xdb\x1fj(>a\xba\x93\xfd\x0e\x06H\x12y\x7f\xb9\n\x1b\xd2`\x82#t"
2022-10-28T16:17:15.022792190+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client send to 52.193.120.207:10025, control: UdpSocketControlData { client_session_id: 1808483490137459351, server_session_id: 0, packet_id: 18, user: None }, payload length 16 bytes, packet length 71 bytes
2022-10-28T16:17:15.023077130+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 -> 52.193.120.207:10025 (proxied) with 16 bytes
2022-10-28T16:17:15.023253946+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet generated aead salt b"c\x1f\x10#B\xfc\xd4,\x1eF\xfa$\x17\xb0P\xef\xff\xb5\xb0\xdf\xc2\xd2\xe9\xd2ox\x81\x8eE\xef<0"
2022-10-28T16:17:15.023630364+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client send to 52.193.120.207:10025, control: UdpSocketControlData { client_session_id: 1808483490137459351, server_session_id: 0, packet_id: 19, user: None }, payload length 16 bytes, packet length 71 bytes
2022-10-28T16:17:15.023890722+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 -> 52.193.120.207:10025 (proxied) with 16 bytes
2022-10-28T16:17:15.024060932+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet generated aead salt b"k\xac\xb2\xc1R\xc5\xf6i,6vy.+\x98\'\x07\x08{\x99\xfaR\xb5\x88\x1a\xba6z}\x01\x0fP"
2022-10-28T16:17:15.024390102+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client send to 52.193.120.207:10025, control: UdpSocketControlData { client_session_id: 1808483490137459351, server_session_id: 0, packet_id: 20, user: None }, payload length 16 bytes, packet length 71 bytes
2022-10-28T16:17:15.162459906+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::utils] tcp tunnel 192.168.51.77:52563 <-> 54.145.252.166:443 (proxied) closed, L2R 423 bytes, R2L 3522 bytes
2022-10-28T16:17:15.206355700+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet got AEAD salt b"C\xfe\x1f\xaeC!\xdb?_\xf6\xfaRk\x9cP\xd0\x80\xec\xceh8\xb4k\r\xa7\x08\xb4\t\x19\xab\xf4\""
2022-10-28T16:17:15.207226318+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client receive from 13.112.35.82:10025, control: None, packet length 71 bytes, payload length 16 bytes
2022-10-28T16:17:15.207551026+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 <- 13.112.35.82:10025 (proxied) received 16 bytes
2022-10-28T16:17:15.228761420+00:00 WARN  [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp failed to send back 16 bytes to client 192.168.51.77:62450, from target 13.112.35.82:10025 (proxied), error: Protocol not available (os error 92)
2022-10-28T16:17:15.229046824+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::aead] UDP packet got AEAD salt b"\x85\xe0\x8a\xeb)\x961\x19\xd6\x9a\xf4z\xaa\xf83!\xa9\xa1\x12\xf2G\xbb\xa4\xc9.\xf9\x19k>\xab\xd1\xaa"
2022-10-28T16:17:15.229455604+00:00 TRACE [18560:1079384816] [shadowsocks::relay::udprelay::proxy_socket] UDP server client receive from 13.112.35.82:10025, control: None, packet length 71 bytes, payload length 16 bytes
2022-10-28T16:17:15.229585662+00:00 TRACE [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp relay 192.168.51.77:62450 <- 13.112.35.82:10025 (proxied) received 16 bytes
2022-10-28T16:17:15.229788230+00:00 WARN  [18560:1079384816] [shadowsocks_service::local::net::udp::association] udp failed to send back 16 bytes to client 192.168.51.77:62450, from target 13.112.35.82:10025 (proxied), error: Protocol not available (os error 92)

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 21 (3 by maintainers)

Commits related to this issue

Most upvoted comments

You may try with the latest commit and see if it fixes your issue.

It seems that IPV6_TRANSPARENT was added in 2.6.37. while the router kernel is in 2.6.36. If this is the culprit, without upgrading the kernel, is it possible to run the latest binary? Thanks.

Well, it may be possible to “check” whether the current OS supports IPv6 transparent sockets, if no, then fallback to IPv4 only mode: https://github.com/shadowsocks/shadowsocks-rust/blob/29991bcf7d5cfb8e937bc5e5e2d875145eb88202/crates/shadowsocks-service/src/local/redir/udprelay/mod.rs#L96-L161

But I think the best way should be upgrading the kernel, 2.6.36 is quite an old version.

Everything works fine on my new linux 4.x version router.