Frp内网穿透
所有经过服务器的内网穿透都是有一个服务端和客户端,因为都需要借助服务器的公网ip来访问进而达到内网穿透的效果。
frp的github开源地址:https://github.com/fatedier/frp
frp的说明文档:https://gofrp.org/docs/
其实他的github已经很完整的说明了,我这里只不过是进行一个快速的说明,更多更深的功能还是要参考frp的说明文档。
1. Frp服务端配置
- 获取frp可执行程序
# 1. 下载
1. wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
# 2. 解压
tar -xvf frp_0.44.0_linux_amd64.tar.gz
# 3. 进入frp目录
cd frp_0.44.0_linux_amd64/
# 4. 删除客户端,避免干扰,frps配置文件我们也删
rm frpc* #frpc包含c的都是客户端相关的文件
rm frps_full.ini frps.ini LICENSE
- 对配置文件进行配置
- 更多功能配置可参考:https://gofrp.org/docs/reference/server-configures/,下面先介绍能跑起来最简单的功能
# 为了能够快速使用,这里配置内网穿透最简单的功能
# 1. nano frps.ini ,复制下面内容到frps.ini中
[common]
#此ip代表你服务器的ip
bind_addr = 0.0.0.0
#服务器
bind_port = 10024
dashboard_addr = 0.0.0.0
dashboard_port = 5000
dashboard_user = admin
dashboard_pwd = 123456
# 2. 运行 frps 服务端程序
./frps -c frps.ini
root@fzj:~/frp/frp_0.44.0_linux_amd64# ./frps -c frps.ini
2022/09/08 15:58:54 [I] [root.go:209] frps uses config file: frps.ini
2022/09/08 15:58:54 [I] [service.go:194] frps tcp listen on 127.0.0.1:7000
2022/09/08 15:58:54 [I] [service.go:293] Dashboard listen on 0.0.0.0:5000
2022/09/08 15:58:54 [I] [root.go:218] frps started successfully
#出现该这样,就说明服务端配置好了
# 3. 进一步查看是否配置好
用浏览器访问 服务器公网ip:dashboard_port ,我上面配置了5000端口,我的公网ip是:8.210.95.55
因此我访问 8.210.95.55:5000就能登录frp的管理后台。上面我们设置了登录的账号密码是admin 和 123456。进入后台。说明我们已经完全配置好了服务端。
# 4. 此处需要注意的点有几个
1. 登录你服务器的运营商,比如阿里云腾讯云。登录其后台,打开安全组,开放对应的端口。比如上面使用了7000端口和5000端口。(此处必定要注意)
2. 第二个点,注释不要写在配置参数的后面
2. 客户端配置
客户端我这里会展示linux端和window端,linux端展示 ssh的22端口内网穿透,和window端3389内网穿透,这两个端口都是我们常用的端口。也很多朋友使用frp的原因
2.1 linux端配置
- 获取frp可执行程序
# 1. 下载
1. wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
# 2. 解压
tar -xvf frp_0.44.0_linux_amd64.tar.gz
# 3. 进入frp目录
cd frp_0.44.0_linux_amd64/
# 4. 删除客户端,避免干扰,frps配置文件我们也删
rm frps* #frpc包含c的都是客户端相关的文件
rm frpc_full.ini frpc.ini LICENSE
- 对配置文件进行配置
此处把22端口映射的公网ip的6000端口
# 1. nano frpc.ini ,复制下面内容到frps.ini中
[common]
server_addr = 8.210.233.213 (更换为自己服务器地址,我此服务器已经过期)
server_port = 10024
[ssh2cc]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 10081
# 2. 运行 frpc 服务端程序
./frpc -c frpc.ini
- 使用putty链接
输入
ip:8.210.233.213
端口:10081
就可以远程连接了
2.1 window客户端配置
- 获取frp可执行程序
1. wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_windows_amd64.zip
2. 解压
- 对配置文件进行配置
# 1. nano frpc.ini ,复制下面内容到frps.ini中
[common]
server_addr = 8.210.233.213
server_port = 10024
[rdp]
type = tcp
local_ip = 127.0.0.1
#我自己改了端口,默认是3389
local_port = 5269
remote_port = 10089
2. 建一个start.bat
复制指令
frpc.exe -c frpc.ini
到start.bat中。双击就可以运行
- 远程连接
1. 按住win+r键
2. 输入mstsc远程连接指令
3. 输入 8.210.233.213:10089
3. 服务端常用的配置
学会了上面我们已经能够进行内网穿透了,但是对于安全还是考虑不周到。加入别人知道你的ip和端口就能够连接,而且数据传输也是明文的,也没有log记录等。这个章节就是解决这些问题
- 常用的服务端配置
[common]
#此ip代表你服务器的ip
bind_addr = 0.0.0.0
#服务器
bind_port = 10024
dashboard_addr = 0.0.0.0
dashboard_port = 5000
dashboard_user = admin
dashboard_pwd = 123456
#添加token认证,只有token对的人才能连进来
token = gQFWBODEEeS0p2JE
#设置log记录
log_file = ./frps.log
# debug, info, warn, error
log_level = info
log_max_days = 3
#心跳时间
heartbeat_timeout = 60
- p2p等其他配置
后续会介绍其他p2p方案,这里我经常测试,frp的p2p是很难通讯成功
4. 需要注意的点有一下几个
- 如果出现下面错误
2022/09/09 10:39:58 [W] [service.go:128] login to server failed: EOF
EOF
geekfong@ubuntu:~/frp/frp_0.44.0_linux_amd64$ ./frpc -c frpc.ini
2022/09/09 10:39:58 [W] [service.go:128] login to server failed: EOF
EOF
# 1. 90%是你的ip地址问题,查看你服务端frps是否是自己的ip,客户端frpc填写的ip和端口是否是自己绑定的那个
# 2. 查看你后台一台服务器是否绑定多个ip
# 3. 如果你是公司内网环境,公司如果是大型公司可能会做一些检测。需要对数据进行加密和tls认证,这个网上有人出现过
- 确定自己的服务器供应商里的安全组里开了端口,可用telnet工具去查看
telnet ip:端口
telnet 8.210.233.213 80
Trying 8.210.233.213...
Connected to 8.210.233.213.
Escape character is '^]'.
Connection closed by foreign host.
出现如上说明是开通了端口
- 注意每个内网穿透的名字都需要不一样