NekoLSD 使用 vmess 节点代理 iperf3 流量进行 UDP 测试,前置代理为专线机场。 在 iperf3 测试中,若不通过 -l 参数指定 length of buffer to read or write ,会出现以下错误,导致 UDP 在 TUN 中不通,收发 UDP 流量均出现此问题: ➜ ~ iperf3 -c 103.47.x.x -R -t 60 -u -b 400M Connecting to host 103.47.x.x, port 5201 Reverse mode, remote host 103.47.x.x is sending warning: Block size 65483 > sending socket buffer size 9216 warning: Increasing socket buffer size to 66507 [ 5] local 198.18.0.1 port 56783 connected to 103.47.x.x port 5201 ^C[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-7.24 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-7.24 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (0%) sender [ 5] 0.00-7.24 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (0%) receiver 若通过 -l 参数指定 length of buffer 为 1500 或以下数值,则 UDP 流量能够通过 TUN: ➜ ~ iperf3 -c 103.47.x.x -R -t 60 -u -b 200M -l 1420 Connecting to host 103.47.x.x, port 5201 Reverse mode, remote host 103.47.x.x is sending [ 5] local 198.18.0.1 port 64722 connected to 103.47.x.x port 5201 [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-1.00 sec 24.0 MBytes 201 Mbits/sec 0.027 ms 22/17754 (0.12%) [ 5] 1.00-2.00 sec 23.8 MBytes 200 Mbits/sec 0.017 ms 0/17586 (0%) [ 5] 2.00-3.00 sec 24.0 MBytes 202 Mbits/sec 0.020 ms 0/17744 (0%) [ 5] 3.00-4.00 sec 23.7 MBytes 199 Mbits/sec 0.025 ms 0/17527 (0%) [ 5] 4.00-5.00 sec 23.8 MBytes 200 Mbits/sec 0.019 ms 6/17602 (0.034%) [ 5] 5.00-6.00 sec 24.0 MBytes 201 Mbits/sec 0.012 ms 0/17706 (0%) ^C[ 5] 6.00-6.19 sec 4.57 MBytes 201 Mbits/sec 0.021 ms 0/3375 (0%) - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams [ 5] 0.00-6.19 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/0 (0%) sender [SUM] 0.0- 6.2 sec 1128 datagrams received out-of-order [ 5] 0.00-6.19 sec 148 MBytes 201 Mbits/sec 0.021 ms 28/109294 (0.026%) receiver 在该情况下,不同的 UDP 测试速度也需要设置不同的 length of buffer ,否则速度无法达标。 不仅代理如此,即使是直连 iperf3 测试若不指定 length of buffer 同样会导致 UDP 无法通过 TUN 。 以上情况只出现在较大流量的 UDP 测试中。而DNS over HTTP/3、DNS over QUIC 等流量均可以正常通过 TUN 。
SurgeTeam VIF 版本和 UDP 转发无关。 你所遇到的问题,是因为 iperf3 在测试时会为 UDP 数据包设置 DF 标记(Don't frag),Surge 以及 Linux Kernel 会严格按照该标记进行处理,若链路 MTU 无法承载该数据包,则会被丢弃。所以必须使用 -l 指定合适的大小。至于为什么 iperf3 默认选择的包大小无法被传递,需要你检查服务端和代理服务器设置。