Frp
一、下载frp
-
指令
- 下载官方frp工具
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
-
注意:
-
下载时需要注意,当前目录时是什么目录,以备后面设置systemctl管理时,更好设置启动指令的路径
-
也可以创建指定的目录,一般请情况下,安装在
/usr/local
目录下 -
当然也可以解压之后移动到指定目录
-
解压指令:
tar -zxvf frp_0.62.1_linux_amd64.tar.gz
-
解压之后有目录:
frp_0.62.1_linux_amd64
-
可以使用mv指令进行移动加改名
-
指令
mv ./frp_0.62.1_linux_amd64 /usr/local/frp/frp_0.62.1
-
-
-
二、设置systemd管理frp
-
进行systemd管理的配置目录
-
指令
cd /etc/systemd/system
-
-
创建文件frps.service
-
指令
vim frps.service
-
-
输入指定的配置
[Unit] # 服务名称,可自定义 Description = frp server # 指定服务启动的顺序,表示这个服务要在网络和系统日志服务启动之后才启动 After = network.target syslog.target # 表示这个服务希望network.target是处于活动状态,但是不强制依赖,(如果network.target启动失败,这个服务仍然会尝试启动) Wants = network.target [Service] # 服务类型为simple,表示ExecStart指定的进程就是主服务进程,systemd会一直监控这个进程 Type = simple # 启动frps的命令,需修改为您的frps的安装路径 # 这里以/usr/local/frp/frp_0.62.1为例 # ExecStart = /path/to/frps -c /path/to/frps.toml ExecStart = /usr/local/frp/frp_0.62.1/frps -c /usr/local/frp/frp_0.62.1/frps.toml [Install] # 指定当执行systemctl enable时,这个服务会被链接到multi-user.target,意味着在多用户模式下会自动启动 WantedBy = multi-user.target
-
启动指令
# 启动服务 systemctl start frps # 停止 systemctl stop frps # 重启 systemctl restart frps # 查看服务状态 systemctl status frps
-
设置开机自启
systemctl enable frps
三、配置frps.toml
-
注意
- 这个是服务端的配置,也就是在公网上的服务器,来提供请求转化的。
- 这个服务器需要有公网的ip。
- 在内网中的frp服务使用的是frpc.toml的作为配置文件
-
配置
# 绑定端口 bindPort = 7000 # 设置连接token # 11111111 这个是客户端需要连接时的token类似于密码 auth.token = "11111111" # 配置HTTP端口,如果80端口被占用,则使用8080端口 vhostHTTPPort = 8080 # 配置HTTPS端口,如果80端口被占用,则使用8080端口 vhostHTTPSPort = 8443
-
注意
- 配置完文件之后重启一下frps
四、配置frpc.toml
1. 通过SSH访问内网机器(不安全)
-
注意
- 客户端使用frpc.toml做为配置文件,也就是内网机器
-
配置
# 服务端的ip serverAddr = "x.x.x.x" # 服务端绑定的端口 serverPort = 7000 # 连接token,需要于服务端设置的一样 auth.token = "11111111" # 代理 [[proxies]] # 代理名称 name = "ssh" # 代理类型 type = "tcp" # 本地ip localIP = "127.0.0.1" # 本地端接口 localPort = 22 # 服务端开放的端口 remotePort = 6000
-
声明
- 当前这种方式不是很安全,很容被别人发现。
2. 通过SSH访问内网机器(安全)
-
内网机器的frpc.toml的配置
# 服务端的ip地址 serverAddr = "x.x.x.x" # 连接token,需要于服务端设置的一样 auth.token = "11111111" # 服务端端监听的端口 serverPort = 7000 # 代理 [[proxies]] # 代理名称 name = "ssh" # 代理类型 # 注意此时的类型和之前的不一样,之前不安全使用的的是tcp,现在安全的使用的是stcp type = "stcp" # 本地IP localIP = "127.0.0.1" # 本地端口 localPort = 22 # 设置secretKey # 只有与此处设置的 secretKey 一致的用户才能访问此服务 secretKey = "aaaaaaaa"
-
说明
- 此时,访问者也需要下载frp,然后对frpc.toml进行配置,才可以访问到内网机器
-
访问者机器的frpc.toml的配置
# 服务端的ip地址 serverAddr = "x.x.x.x" # 服务端的端口 serverPort = 7000 # 连接token,需要于服务端设置的一样 auth.token = "11111111" # 访问者代理 [[visitors]] # 代理名称 name = "visitor_ssh" # 代理类型,此时的类型和内网机器的是一样的stcp type = "stcp" # 内网机器的名称 serverName = "ssh" # 内网机器的secretKey,需要与内网机器的secretKey一样才可以访问 secretKey = "aaaaaaaa" # 绑定本地的ip bindAddr = "127.0.0.1" # 绑定本地的端口 bindPort = 6000
3. 通过自定义域名访问web服务
-
配置
# 服务端的IP serverAddr = "x.x.x.x" # 服务端的端口 serverPort = 7000 # 连接token,需要于服务端设置的一样 auth.token = "11111111" # 代理 [[proxies]] # 代理名称 name = "web" # 代理类型 type = "http" # 本地的ip localIP = "127.0.0.1" # 本地的端口 localPort = 8080 # 自定义的域名,且这个域名已经在DNS中映射到了服务端的ip地址 customDomains = ["test.youname.com"]
- 说明
- 注意自定义的域名需要被DNS映射到服务端的IP,否则是访问不到的。
- 也就是服务端所在的服务器要有能被DNS解析且映射的域名,并且这个域名要和customDomains一致才行。
- 说明