xjasonlyu / tun2socks

tun2socks - powered by gVisor TCP/IP stack
https://github.com/xjasonlyu/tun2socks/wiki
GNU General Public License v3.0
2.85k stars 404 forks source link

[Bug] UDP over socks5 #261

Closed SkullFace141 closed 10 months ago

SkullFace141 commented 1 year ago

Verify steps

Version

latest docker version

What OS are you seeing the problem on?

Linux

Description

UDP over socks5

Connections errors

CLI or Config

1 tun2socks container with socks5 acting as network for mystnode container

Logs

tun2socks

time="2023-05-27T14:28:14Z" level=warning msg="[UDP] dial 23.105.165.21:32066: client handshake: socks version mismatched" time="2023-05-27T14:28:32Z" level=warning msg="[UDP] dial 23.105.165.21:37940: client handshake: rejected username/password" time="2023-05-27T14:28:34Z" level=warning msg="[UDP] dial 23.105.165.21:33173: client handshake: socks version mismatched" time="2023-05-27T14:30:46Z" level=warning msg="[TCP] dial 51.158.129.204:443: CONNECT: connection refused" time="2023-05-27T14:30:48Z" level=warning msg="[TCP] dial 51.158.129.204:443: CONNECT: connection refused" time="2023-05-27T14:33:21Z" level=warning msg="[UDP] dial 51.15.87.217:56108: client handshake: EOF" time="2023-05-27T14:33:21Z" level=warning msg="[UDP] dial 51.15.87.217:40979: client handshake: EOF" time="2023-05-27T14:46:52Z" level=warning msg="[UDP] dial 51.15.87.217:11110: client handshake: EOF" time="2023-05-27T14:46:55Z" level=warning msg="[UDP] dial 51.15.87.217:36156: client handshake: read tcp 172.17.0.203:47496->64.52.24.1:63619: read: connection reset by peer" time="2023-05-27T14:46:55Z" level=warning msg="[UDP] dial 51.15.87.217:55309: client handshake: read tcp 172.17.0.203:47490->64.52.24.1:63619: read: connection reset by peer" time="2023-05-27T14:46:55Z" level=warning msg="[UDP] dial 51.15.87.217:40017: client handshake: read tcp 172.17.0.203:47536->64.52.24.1:63619: read: connection reset by peer" time="2023-05-27T14:46:56Z" level=warning msg="[UDP] dial 51.15.87.217:40781: client handshake: read tcp 172.17.0.203:47392->64.52.24.1:63619: read: connection reset by peer" time="2023-05-27T14:47:03Z" level=warning msg="[UDP] dial 23.21.92.55:3478: client handshake: read tcp 172.17.0.203:43488->64.52.24.1:63619: read: connection reset by peer" time="2023-05-27T14:47:03Z" level=warning msg="[TCP] dial 51.15.23.14:443: read tcp 172.17.0.203:43472->64.52.24.1:63619: read: connection reset by peer" time="2023-05-27T14:47:03Z" level=warning msg="[UDP] dial 23.88.56.5:3478: client handshake: read tcp 172.17.0.203:43498->64.52.24.1:63619: read: connection reset by peer"

mystnode

2023-05-27T14:33:14.665 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.666 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.666 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.666 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.669 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.669 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.669 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.669 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.669 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.669 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.669 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.669 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.672 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.672 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.672 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.672 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.672 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.673 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.673 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.673 WRN ../../nat/traversal/pinger.go:138 > One of the pings has error error="ping receiver error: context deadline exceeded" 2023-05-27T14:33:14.673 ERR ../../p2p/listener.go:167 > Could not ping peer error="too few connections were built" 2023-05-27T14:33:18.177 ERR ../../core/quality/mysterium_morqa.go:191 > Failed to sent batch metrics request, 23 error="Post \"https://quality.mysterium.network/api/v3/batch\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)" 2023-05-27T14:33:55.254 ERR ../../session/pingpong/consumer_balance_tracker.go:462 > align with hermes failed with a critical error, offchain balance out of sync error="could not request consumer data from hermes: could not execute request: Get \"https://hermes3.mysterium.network/api/v2/data/consumer/0x5d30eb47ee74fb952c9bac286084c00e862864d7\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)" 2023-05-27T14:33:58.178 ERR ../../core/quality/mysterium_morqa.go:191 > Failed to sent batch metrics request, 23 error="Post \"https://quality.mysterium.network/api/v3/batch\": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)"

How to Reproduce

use https://github.com/engageub/InternetIncome to run a mystnode using 1 socks5 proxy

xjasonlyu commented 1 year ago

Looks like your socks5 proxy server did not follow standard protocol implementation.

SkullFace141 commented 1 year ago

I tested another provider

time="2023-06-04T11:37:26Z" level=warning msg="[UDP] symmetric NAT 198.18.0.1:56945->108.177.102.127:19302: drop packet from 51.15.87.217:22159" time="2023-06-04T11:37:26Z" level=warning msg="[UDP] symmetric NAT 198.18.0.1:56945->108.177.102.127:19302: drop packet from 51.15.87.217:22159" ................................. time="2023-06-04T11:37:36Z" level=warning msg="[UDP] symmetric NAT 198.18.0.1:56945->108.177.102.127:19302: drop packet from 51.15.87.217:22159"

xjasonlyu commented 1 year ago

This behavior is expected. Currently, tun2socks has only symmetric NAT for UDP packets.

For example, there is a mapping of 198.18.0.1:56945 <--> 108.177.102.127:19302 UDP tunnel, but a packet from 51.15.87.217:22159 want to be sent to 198.18.0.1:56945, so the packet will be dropped automatically by tun2socks.

SkullFace141 commented 1 year ago

please upgrade the project, to make it work.

github-actions[bot] commented 10 months ago

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days