通过frp实现内网穿透
之前讲过通过ngrok实现内网穿透,frp是和ngrok类似的工具,最近发现ngrok的一些不足,frp可以解决,主要有以下几点:
- ngrok不支持UDP穿透,这也是我更换成frp的最大原因。
- 映射TCP端口时不能指定服务器端口,只能接受随机分配的端口。
- ngrok在转发流量特别大的时候速度跟不上且不稳定,我用ngrok转发seafile网盘的流量,然后传1G以上的文件,会出现传不完就卡住失败甚至ngrok客户端出错崩溃的情况。
- ngrok是在编译客户端和服务器时预先成好证书,过程略烦琐,如果我有多个ngrok服务器,那么就要有多个不同的客户端可执行文件而不能通过相同的可执行文件不同的配置,这似乎不太合理。
搭建frp服务器
frp服务器可以通过docker搭建或者直接下载可执行文件
https://hub.docker.com/r/snowdreamtech/frps
https://github.com/fatedier/frp/releases
我是通过docker搭建的
1 | docker run --restart=always --network host -d -v /etc/frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps |
可以看到需要一个配置文件frps.ini
1 | [common] |
子域名需要配合指定*.frp.kyo86.com
泛域名解析使用
客户端使用
客户端也可以通过docker或直接下载可执行文件
https://hub.docker.com/r/snowdreamtech/frpc
https://github.com/fatedier/frp/releases
有两种使用方式,一种是通过frpc.ini配置文件进行配置,一种是通过命令参数进行配置。
配置文件样例
1 | [common] |
命令行的方式样例
1 | frpc http -n 代理名称 -s frp服务器地址:frp服务器端口 -l 本地端口 --sd 子域名 -t TOKEN |