使用frp配置内网穿透

1、服务端配置

服务端即在公网环境下的服务器,需配置frps服务

1.1 下载frp

  1. 下载地址是https://github.com/fatedier/frp/releases要注意下载的版本,由你的服务器机型决定,我下载的是frp_0.34.3_linux_arm64.tar.gz。

  2. 下载完成后将其放在服务器上,然后使用如下命令解压

tar -zxvf frp_0.34.3_linux_arm64.tar.gz
  1. 进入解压目录,这里主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件。服务端可以将frpc、frpc.ini删掉。配置过程只需要修改frps.ini即可

1.2 配置frp

下面是我自己的服务端配置frps.ini,有注释供参考

[common]
bind_port = 7000 # 必用:frp的默认监听端口

# 选用:frp监测后台配置,三个选项结合使用
dashboard_port = 7001 # 监测frp状态的端口
dashboard_user = *** # 登录frp监测网页的用户名
dashboard_pwd = ******* # 登录frp监测网页的密码

# 选用: frp日志配置
log_file = /var/logs/frps.log # 日志文件保存位置,要提前创建文件夹
log_level = info # 日志级别
log_max_days = 3 # 日志保存时长

1.3 设置和启动frp服务

需在frp解压目录下运行,提前创建文件夹/usr/lib/systemd/system

sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin
sudo cp systemd/frps.service /usr/lib/systemd/system/
sudo systemctl enable frps
sudo systemctl start frps

其他frps服务可能需要用到的命令

# 设置开机自启动
sudo systemctl enable frps
# 启动
sudo systemctl start frps 
# 关闭
sudo systemctl stop frps
# 重启
sudo systemctl restart frps
# 查看状态
sudo systemctl status frps

1.4 防火墙开放端口

服务端需要开放的端口有7000(监听端口)、7001(后台端口)、4822(进行内网穿透的端口1)、4880(进行内网穿透的端口2)。其中进行内网穿透的端口由客户端配置决定,可查看2.2。开放端口的命令如下,详细可参考Linux端口开放

firewall-cmd --zone=public --add-port=7000/tcp --permanent

1.5 验证服务端是否启动成功

访问:http://服务器IP:后台管理端口,输入用户名和密码可以查看连接状态,用户名和密码分别对应frps.ini文件中的dashboard_user和dashboard_pwd
在这里插入图片描述
可看到上面的界面说明服务端配置成功

2、客户端配置

客户端即在内网环境中的服务器,需配置frpc服务,主要处理frpc.ini文件

2.1 下载frp

参考1.1,注意版本、机器型号,所需下载文件不一定和服务端相同,下载格式尽量采用tar.gz。下载完毕后解压,删除frps、frps.ini,配置过程只需要修改frpc.ini即可

2.2 配置frp

下面为我自己的客户端配置frpc.ini,有注释可供参考

[common]
# frp路由配置
server_addr = *.*.*.* # 服务端机器的ip
server_port = 7000 # 服务端frp监听端口
# frp日志配置,排错很有用
log_file = /var/logs/frpc.log # 日志文件保存位置,要提前创建文件夹
log_level = info # 日志级别
log_max_days = 3 # 日志保存时长
# 使用tls加密,说明见3.1
tls_enable = true

[ssh48] # 穿透标签
type = tcp # 连接类型
local_ip = 127.0.0.1 # 客服端ip
local_port = 22 # 客户端端口
remote_port = 4822 # 服务端端口

[http48] 
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 4880

我共配置了两个穿透服务ssh和http,当有多个穿透服务时要使用不用的标签区分,特别是不同内网机器使用同一台公网机器穿透时,要保证不同内网机器上所有标签都不一样。此外,服务端端口也不能相同。也就是说,对于一台服务端机器来说,它所负责的穿透服务不能有相同的远程端口和标签

2.3 设置和启动frp服务

需在frp解压目录下运行,提前创建文件夹/usr/lib/systemd/system。注意此处与1.3并不相同,是在不同机器上,并且客户端是frpc,服务端是frps,不要搞混了

sudo mkdir -p /etc/frp
sudo cp frpc.ini /etc/frp
sudo cp frpc /usr/bin
sudo cp systemd/frpc.service /usr/lib/systemd/system/
sudo systemctl enable frpc
sudo systemctl start frpc

2.4 防火墙开放端口

客户端需要开放的端口有22(进行内网穿透的端口1)、8080(进行内网穿透的端口2),开放端口的命令参考1.4

3、疑难问题解决

3.1 报错frpc login to server failed: i/o deadline reached

可以在客户端的配置文件frpc.ini中加入一条配置tls_enable = true,tls是一种加密协议,可以避免信息被过滤掉

3.2 其他问题

可以运行以下命令分别查看服务端和客户端frp运行状态,查看其中是否有错误日志。如果不够详细,可以在配置的日志路径中查看日志,将错误信息复制粘贴到百度进行检索。

# 查看frpc状态
sudo systemctl status frpc
# 查看frps状态
sudo systemctl status frps

4、参考文献

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值