Linux socat UDP/TCP 互转, 支持UDP的响应报文回传

背景

出于工作需要,经常需要VPN 访问 家和公司的文件,于是组建一个局域网。并不是用来当梯子使用,且国外VPS便宜稳定。

wireguard 是一款非常优秀的 VPN 工具, GFW的识别很快, 第2天就把wireguard的端口封掉了。

但是, TLS的443 端口 永远不会封。

于是 把 wireguard 的udp 报文转tcp, tcp 再转 TLS, 接收端按照此顺序将 流量复原即可。

这样再也不怕端口被封了。

调查

udp2raw 不支持真正的tcp

udptunnel 不支持 udp 响应报文的 回传

UDP 转 TCP (国内)

1
2
3
CLIENT LOCAL
socat UDP-LISTEN:1111,fork,reuseaddr TCP:104.244.90.233:2222
nc -u 127.0.0.1 1111

TCP 转 UDP (国外)

支持UDP的响应报文回传

1
2
3
SERVER VPS
socat TCP-LISTEN:2222,fork,reuseaddr UDP:127.0.0.1:3333
nc -u -l 3333