kcptun基于KCP协议的UDP隧道-将TCP流转换为KCP-UDP流
适用于低延迟高速率要求的应用,据说传输效率可以加倍X2+
有什么用
通过UDP隧道,加速端到端的远程传输(点对点p2p传输,封装为UDP的KCP数据)
Kcptun 是一个简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP+UDP 流。
怎么用
部署和配置简单
讲一种例子:
- 远程/远距离客户端的某一个应用,需要访问服务的网段内的某个特定TCP服务(比如游戏或IPTV)。
- 通过启动远程客户端的路由器#1上的kcptun client(监听本地端口,然后指定服务器IP和端口,加密信息),这个kcptun客户端监听的端口就是本地应用要连接使用的端口。
- 去连接服务器(从路由器#2的端口转发)的特定kcp server(监听服务器端口,然后指定发往本地特定服务[TCP服务的IP地址和端口])
- 这样加密并封装过的整条链路就建立在UDP上了,据说传输效率可以加倍X2+
以下是两个使用docker应用kcptun的实例
实际用例1:
https://hub.docker.com/r/lowid/kcptun
如果按要封装的服务是服务器上的socks代理:
server side (kcp+socks) compose file
kcp-server:
image: lowid/kcptun:v20170329
command:
--listen :29900
--target dante-server:1080
--mode fast2
ports:
- "30003:29900/udp"
environment:
- KCPTUN_KEY=your_password
links:
- dante-server
restart: always
dante-server:
image: vimagick/dante
expose:
- "1080"
volumes:
- ./sockd.conf:/etc/sockd.conf
restart: always
server side sockd.conf
debug: 0
logoutput: stderr
internal: 0.0.0.0 port = 1080
external: eth0
socksmethod: username none
clientmethod: none
user.privileged: root
user.unprivileged: nobody
client pass {
from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
log: error
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
#socksmethod: username
log: error
}
client side compose file
client:
image: lowid/kcptun:v20170329
entrypoint: client_linux_amd64
command:
--localaddr :12948
--remoteaddr server_ip_address:30003
--mode fast2
ports:
- "12948:12948/tcp"
environment:
- KCPTUN_KEY=your_password
restart: always
实际用例2:
$ docker pull chenhw2/kcptun
$ docker run -d \
-e "ARGS=server -t 10.0.0.1:80" \
-p 29900:29900/udp \
chenhw2/kcptun
#客户端
$ docker run -d \
-e "ARGS=client -r [kcp_server]:29900" \
-p 12948:12948/tcp \
chenhw2/kcptun
相关内容
实现方法
放弃docker的方式。
KCP Server:
./server_linux_amd64 -t "192.168.6.243:8012" -l ":29900" -mode fast3 -nocomp -dscp 46 --ke...
......
# [继续阅读](https://carlzeng.top/202401042040.html)
[请点击访问最新版内容](https://carlzeng.top/202401042040.html)