前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 frp 进行内网穿透的基本操作

使用 frp 进行内网穿透的基本操作

作者头像
Hopetree
发布2023-07-21 15:42:07
5860
发布2023-07-21 15:42:07
举报
文章被收录于专栏:tendcodetendcode

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

frp 的概念

原理

frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。

用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。

frp 的架构

看一下frp的架构

frp
frp

服务端搭建

下载安装包

选择适合自己服务器的安装包下载即可,下载地址

代码语言:javascript
复制
# 下载
wget https://github.com/fatedier/frp/releases/download/v0.51.0/frp_0.51.0_linux_amd64.tar.gz

# 修改目录名称,和权限
mv frp_0.51.0_linux_amd64 frp
chown -R root:root frp

修改服务端配置

编辑frps.ini文件,设置指定的端口,这个端口是客户端连接服务端的口端

代码语言:javascript
复制
[common]
bind_port = 7000

使用 systemd 启动服务

在 Linux 系统下,使用systemd 可以方便地控制 frp 服务端 frps 的启动和停止、配置后台运行和开启自启。

要使用 systemd 来控制 frps,需要先安装 systemd,然后在 /etc/systemd/system 目录下创建一个 frps.service 文件。

1、如Linux服务端上没有安装 systemd,可以使用 yum 或 apt 等命令安装 systemd

代码语言:javascript
复制
# yum
yum install systemd
# apt
apt install systemd

2、使用文本编辑器,如 vim 创建并编辑 frps.service 文件

代码语言:javascript
复制
$ vi /etc/systemd/system/frps.service

写入内容

代码语言:javascript
复制
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /opt/cloud/frp/frps -c /opt/cloud/frp/frps.ini

[Install]
WantedBy = multi-user.target

3、使用 systemd 命令,管理 frps

代码语言:javascript
复制
# 重新加载配置
systemctl daemon-reload
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps

4、配置 frps 开机自启

代码语言:javascript
复制
systemctl enable frps

客户端搭建

客户端的软件包跟服务端是同一个,安装方式相同。

修改客户端配置

安装之后修复服务端的配置文件frpc.ini

代码语言:javascript
复制
[common]
# 改成服务端的IP
server_addr = xxx.xxx.xxx.xx    
# 改成服务端的bind_port端口
server_port = 7000              

[ssh]             
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 设置映射端口,也就是22映射给7203
remote_port = 7203          

客户端启动服务

跟服务端一样,创建一个系统服务文件,文件名称跟服务端区分(服务端是frps.service,客户端是frpc.service)

代码语言:javascript
复制
$ vi /etc/systemd/system/frpc.service

输入内容

代码语言:javascript
复制
[Unit]
# 服务名称,可自定义
Description = frp client
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frpc的安装路径
ExecStart = /root/frp/frpc -c /root/frp/frpc.ini

[Install]
WantedBy = multi-user.target

然后跟服务端一样,启动服务即可。

代码语言:javascript
复制
# 重新加载配置
systemctl daemon-reload
# 启动frp
systemctl start frpc
# 停止frp
systemctl stop frpc
# 重启frp
systemctl restart frpc
# 查看frp状态
systemctl status frpc
# 开机自启
systemctl enable frpc

端口开放

服务端需要开放frp的端口,如上配置的bind_port的7000端口,然后还有客户端配置的remote_port的端口

ssh 登录

服务端和客户端都正常启动服务之后,可以验证一下ssh登录

代码语言:javascript
复制
ssh root@xx.xxx.xx.xx -p 7203
  • xx.xxx.xx.xx:即服务端的IP地址,也就是代理服务器公网IP
  • 7203:这个端口是客户端配置的端口,也就是客户端将22端口转发给服务端的7203端口

不出意外的话,ssh可以正常登录,如果出了意外,需要去检查服务端和客户端的frp服务是否正常启动,如果正常,则去排查服务端和客户端的配置是否OK,如果正常,则可以去排查服务端和客户端的防火墙是否开放对应端口。

官方指导

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处 本文链接:https://tendcode.com/subject/article/frp/ 许可协议:署名-非商业性使用 4.0 国际许可协议

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年7月19日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • frp 的概念
    • 原理
      • frp 的架构
      • 服务端搭建
        • 下载安装包
          • 修改服务端配置
            • 使用 systemd 启动服务
            • 客户端搭建
              • 修改客户端配置
                • 客户端启动服务
                • 端口开放
                • ssh 登录
                • 官方指导
                相关产品与服务
                弹性公网 IP
                弹性公网 IP(Elastic IP,EIP)是可以独立购买和持有,且在某个地域下固定不变的公网 IP 地址,可以与 CVM、NAT 网关、弹性网卡和高可用虚拟 IP 等云资源绑定,提供访问公网和被公网访问能力;还可与云资源的生命周期解耦合,单独进行操作;同时提供多种计费模式,您可以根据业务特点灵活选择,以降低公网成本。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档