frp是一款非常优秀便捷的反向代理软件,致力于解决内网穿透的问题,这几天折腾了群晖上安装frp,写本文虽然是再造了个轮子,但重点在于记录安装中遇到的小白问题。
首先贴上frp的链接https://github.com/fatedier/frp
frp分为服务端和客户端,使用frp必须需要一台公网IP的云主机或者VPS。博主正好有一台腾讯1c1g1m的吃灰小鸡,拿出来加以利用。
搭建
搭建其实没有什么过程,在云主机和本地群晖上任意位置下载frp程序,暂且就在home文件夹里,解压,解压后有以下文件。
• frpc:客户端可执行程序
• frpc_full.ini:客户端所有配置项(可以再此文件查看frp的所有的配置项)
• frpc.ini:客户端配置项
• frps:服务端可执行程序
• frps_full.ini:服务端所有配置项(可以再此文件查看frp的所有的配置项)
• frps.ini:服务端配置项
• LICENSE:许可证
根据自己的需求修改配置文件,服务端也就是云主机上需要配置frps.ini文件,客户端也就是群晖上配置frpc.ini。本着一切从简的原则(其实是懒),配置如下。
服务端frps.ini文件:
[common]
bind_port = 7000
vhost_https_port = 443
客户端frpc.ini文件
[common]
server_addr = 云服务器的公网IP
server_port = 7000
[web]
type = https
local_port = 5001
custom_domains = 自己的域名
使用vi修改好这两个文件就算是搭建完成了吧(vi的使用不再赘述)。
运行
服务端命令:
./frps -c frps.ini
客户端命令:
./frpc -c frpc.ini
如果终端没有错误提示我们的frp就搭建好了,做好DNS解析后,打开自己的域名试一下,内网穿透已经可以用了。另外有的云服务器有默认关闭无用端口,运行前记得到服务商那放行需要用到的端口号,如7000等。
问题
1. 后台运行
发现关了SSH后frp就断了,找了很久原来是要把frp命令放到后台运行,可以使用nohup
命令。
服务端:
nohup ./frps -c frps.ini >/dev/null 2>&1 &
客户端:
nohup ./frpc -c frpc.ini >/dev/null 2>&1 &
说明:>/dev/null 2>&1
表示丢弃,用此参数无日志文件产生,最后一个&
表示后台运行。
注意:最后退出ssh时不能直接点X关闭窗口,要输入exit
命令后再关窗口。
2. 查看及结束后台程序
使用ps
命令查看后台进程,kill
命令结束后台。
ps -aux|grep frp
a: 显示所有程序 u: 以用户为主的格式来显示 x: 显示所有程序,不以终端机来区,grep frp:表示筛选带有frp字符的。
运行后显示如下:
admin 1584 0.0 0.0 23144 2280 pts/17 S+ 15:14 0:00 grep --color=auto frp
admin 16226 0.0 0.0 114012 5956 ? Sl Dec11 1:06 ./frpc -c ./frpc.ini
第二行就是我们要找的frp的后台进程,PID为16226
kill 16226
结束frp后台。
3. frp多开,实现服务器开放多个frp端口
frps(c)可以多开,在后台运行多个进程,只要再复制一份frps(c).ini,改为frps(c)1.ini或者其他文件名,注意多个frps(c).ini文件中端口号不能冲突,比如:第二个服务端frps1.ini文件可以设置为:
[common]
bind_port = 7001
vhost_https_port = 44443
同样对应的frpc1.ini文件可以
[common]
server_addr = 云服务器的公网IP
server_port = 7001
[web]
type = https
local_port = 本地端口
custom_domains = 自己的域名
然后修改运行命令
服务端:
./frps -c frps1.ini
客户端:
./frpc -c frpc1.ini
4. 本地多服务多端口
如想要开两个web,客户端frpc.ini配置
[common]
server_addr = 云服务器的公网IP
server_port = 7000
[web01]
type = https
local_port = 5001
custom_domains = 域名1
[web02]
type = https
local_port = 5002
custom_domains = 域名2
5. 密码访问
以上frp架设完成后,任何人都可以连接我们的frps服务,为了保证不被他人滥用,可以加密码认证。
frps.ini和frpc.ini的[common]下加一行:
# auth token
token = 【密码】
这样知道密码才能连接上。
其他
经过实测,按以上方法配置好之后,在群辉上部署SSL证书,frp不需要部署证书,一样可以走https协议。
本文只介绍frp基本安装使用,高级操作参阅frp文档。
我觉得wg也算不错
wg是啥?
我觉得wg也算不错