前言
由于跨运营商、网络类型从全锥降级很久了,导致zerotier udp丢包异常明显,基本已经无法实现正常连接。尝试了国外服务器做moon节点,效果也一般,因此又折腾起多年前玩过的frp。
经过测试,使用xtcp的穿透效果要比zerotier直连更好一些。其中的原因,我猜测可能是zerotier采取的是虚拟网卡,这里面就有损耗,加上其它传输形式可能也有区别。但zerotier的传输应该是更安全一点。
服务端安装
# 基础包
apk update && apk add curl tar bash tzdata nano
# 安装 frps
curl -LO https://github.com/fatedier/frp/releases/download/v0.63.0/frp_0.63.0_linux_arm64.tar.gz
tar -xzf frp_0.63.0_linux_arm64.tar.gz && mv frp_0.63.0_linux_arm64/frps /usr/local/bin/
–当然你也可以直接使用apk add frp。另外注意你的服务器架构。
服务器配置
# FRPS 配置文件
mkdir /etc/frp/ && nano /etc/frp/frps.toml bindPort = 20104 auth.token = "abcz1iAOq0PtPQFfdffsdfas" #下面的不是必要的,有上面两行其实足以 webServer.addr = "0.0.0.0" webServer.port = 20105 webServer.user = "l" webServer.password = "lzf" log.to = "/var/log/frps.log" log.level = "info" log.maxDays = 3
# 开机自启。如果你是apk add安装的,下面的脚本已经默认存在。
nano /etc/init.d/frps #!/sbin/openrc-run name=frps description="frp server" command="/usr/bin/$name" supervisor=supervise-daemon : ${cfgfile:=/etc/frp/$RC_SVCNAME.toml} command_args="-c $cfgfile" pidfile="/run/$RC_SVCNAME.pid" : ${respawn_delay:=5} : ${respawn_max:=0} depend() { need net after firewall } chmod +x /etc/init.d/frps rc-update add frps rc-service frps start
客户端安装
下载就完事了,注意Windows会报毒,关掉杀毒软件,并把软件设置为白名单。
客户端配置
找到frpc.toml,我们主打一个直连,fallback也不写了,目前看还行。注意xtcp,需要在受控、被控都需要安装frpc。如果是tcp,只需要指向被控端即可。(或者你也可以理解为,找到一个局域网内的设备作为frpc即可,然后通过这个转发访问任意内网设备)。
# 发起控制端配置
serverAddr = "1.18.36.225" serverPort = 20104 auth.token = "abcz1iAOq0PtPQFfdffsdfas" # 如果默认的 STUN 服务器不可用,可以配置一个新的 STUN 服务器 # natHoleStunServer = "xxx" [[visitors]] name = "win7rdp_p2p" type = "xtcp" # 要访问的 P2P 代理的名称 serverName = "win7rdp" secretKey = "PmUhv#zQ!xRKNDV!2*gNvLguq" # 绑定本地端口以访问 SSH 服务 bindAddr = "127.0.0.1" bindPort = 3390 # 如果需要自动保持隧道打开,将其设置为 true # keepTunnelOpen = false
# 被控端/统一代理端配置
serverAddr = "1.18.36.225" serverPort = 20104 auth.token = "abcz1iAOq0PtPQFfdffsdfas" # 如果默认的 STUN 服务器不可用,可以配置一个新的 STUN 服务器 # natHoleStunServer = "xxx" [[proxies]] name = "win7rdp" type = "xtcp" # 只有共享密钥 (secretKey) 与服务器端一致的用户才能访问该服务 secretKey = "PmUhv#zQ!xRKNDV!2*gNvLguq" localIP = "127.0.0.1" localPort = 3389 #这里的IP和端口可以调整,就可以实现对多个设备的访问
# 自动脚本bat
考虑到传输不是加密的,就不做成开机启动/服务方式运行了。有需要就执行脚本打开frpc
@echo off cd /d "D:\Program Files\frp_0.63.0_windows_amd64" start "" frpc.exe -c frpc.toml