mkcp使用教程及常见问题解答

mkcp,全称kcptun multiplexing kcp,是一个基于KCP协议的多路复用加速工具。相对于shadowsocks等工具,它可以更有效地利用网络带宽,提供更稳定和快速的网络连接。本文将介绍mkcp的使用教程,包括如何安装、配置、优化和故障排查等内容。FAQ部分回答了人们常见的问题。

下载

在GitHub上,你可以找到所有版本的mkcp,下载适合你服务器的版本。可以直接用命令wget下载:

bash wget https://github.com/xtaci/kcptun/releases/download/vX.X.X/kcptun-linux-amd64-X.X.X.tar.gz

请将X.X.X替换为实际的版本号,例如:v20200918。

解压

使用tar命令解压缩刚才下载的tar包:

bash tar -xzf kcptun-linux-amd64-X.X.X.tar.gz

运行

进入解压后的目录:

bash cd server_linux_amd64

启动服务端:

bash ./server_linux_amd64 -l :29900 -t 127.0.0.1:22 –mode fast2

其中,-l参数表示服务端监听的地址和端口,-t参数表示后端服务(例如SSH服务)的地址和端口,–mode表示传输模式,例如fast2表示使用较快的模式。更多参数可以通过-h查看。

客户端配置

在客户端,可以使用graphical-user-interface(GUI)客户端command-line-interface(CLI)客户端。这里只介绍CLI客户端的配置。可以使用以下命令启动客户端:

bash ./client_linux_amd64 -r SERVER_IP:29900 -l :1080 –mode fast2

其中,-r参数表示服务端的IP地址和端口,-l参数表示本地监听的地址和端口(可以用作SOCKS5代理),–mode表示传输模式。

服务端配置

mkcp支持多种配置方式,例如命令行参数、配置文件、环境变量等。命令行参数已经在安装和运行部分介绍过了。配置文件的示例如下:

ini

localaddr=:29900

remoteaddr=127.0.0.1:22

crypt=aes

key=passwd

mode=fast2

mtu=1350

可以通过-c参数指定配置文件的路径:

bash ./server_linux_amd64 -c /path/to/config.json

常用配置

TCP Fast Open(TFO)

在Linux内核3.7版本中引入的TCP Fast Open(TFO)可以减少TCP的延迟,提高网络连接的响应速度。启用TFO可以通过以下命令:

bash echo 3 > /proc/sys/net/ipv4/tcp_fastopen

MTU

在使用mkcp时,MTU(Maximum Transmission Unit)的设置比较重要。默认情况下,mkcp使用1350字节的MTU。如果你的网络连接质量较好,可以将MTU设置为更大的值,例如1500。如果你的网络连接质量较差,可以适当减小MTU的值,例如1200。你可以通过以下命令修改MTU值:

bash echo 1500 > /proc/sys/net/ipv4/tcp_mtu_probing

内核参数

优化内核参数可以提高网络连接的速度和稳定性。下面是一些推荐的内核参数:

ini

fs.file-max = 1000000

fs.nr_open = 1000000

net.core.wmem_max = 16777216 net.core.rmem_max = 16777216

net.core.wmem_default = 262144 net.core.rmem_default = 262144

net.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_timestamps = 1

net.ipv4.ip_forward = 0

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 4096

net.ipv4.tcp_max_tw_buckets = 6000

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_fin_timeout = 30

net.ipv4.ipfrag_high_thresh = 262144 net.ipv4.ipfrag_low_thresh = 196608

net.ipv4.icmp_echo_ignore_all = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1 net.ipv4.icmp_errors_use_inbound_ifaddr = 1

你可以将这些参数写入到/etc/sysctl.conf文件中,然后使用以下命令加载参数:

bash sysctl -p

UDP缓冲区

使用以下命令将UDP缓冲区大小设置为32MB:

bash echo 33554432 > /proc/sys/net/core/wmem_max

内存锁定

使用以下命令将mkcp进程锁定到内存中:

bash ulimit -l unlimited

日志

mkcp的日志信息输出到stderr。可以通过将stderr重定向到一个文件来收集日志信息:

bash ./server_linux_amd64 2> /path/to/logfile

调试信息

可以使用-v参数来输出调试信息:

bash ./server_linux_amd64 -v 2> /path/to/logfile

FAQ

mkcp有哪些传输模式?

mkcp有四种传输模式:fast2、fast3、normal和manual。fast2和fast3是快速模式,normal是普通模式,manual是手动模式。不同模式的性能和参数设置不同。详细信息可以通过-h命令查看。

mkcp如何卸载?

可以直接删除解压后的目录,例如:

bash rm -rf server_linux_amd64

如何测试mkcp的速度和稳定性?

可以使用iperf3来测试TCP和UDP连接的速度和带宽。可以使用以下命令安装iperf3:

bash apt-get update apt-get install iperf3

启动服务端:

bash iperf3 -s

在客户端上测试TCP连接:

bash iperf3 -c SERVER_IP

在客户端上测试UDP连接:

bash iperf3 -c SERVER_IP -u -b 50M

正文完