阿里云服务器搭建frps实现内网穿透

简介

frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。官网

  • 服务端运行,监听一个主端口,等待客户端的连接;
  • 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;
  • 服务端fork新的进程监听客户端指定的端口;
  • 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端;
  • 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。

想要配置frp穿透,首先必须先要有一台具有外网ip(即:可以外网访问)的服务器,这里使用阿里云ECS云服务器

服务端(阿里云ECS云服务器——ubuntu系统)

# 下载linux版本
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz 

# 解压
tar -zxvf frp_0.33.0_linux_amd64.tar.gz

# 进入目录
cd frp_0.33.0_linux_amd64/

# 打开配置文件
vim frps.ini

修改配置文件如下

[common]
# frp监听的端口,默认是7000(测试时发现开放了7000端口但是客户端连接超时,建议改为其他)
bind_port = 8000
# 授权码,请改成更复杂的
# 这个token之后在客户端会用到
token = 52010  

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

# frp日志配置
log_file = /var/log/frps.log
log_level = info
log_max_days = 3

设置开机启动

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

防火墙开放端口

# 添加监听端口
sudo firewall-cmd --permanent --add-port=8000/tcp
# 添加管理后台端口
sudo firewall-cmd --permanent --add-port=7500/tcp
sudo firewall-cmd --reload

修改服务器控制台安全组,这里全开放端口
在这里插入图片描述

打开后端控制网站(http://ip:7500)
在这里插入图片描述

客户端(内网服务器——ubuntu系统)

# 下载linux版本
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz 

# 解压
tar -zxvf frp_0.33.0_linux_amd64.tar.gz

# 进入目录
cd frp_0.33.0_linux_amd64/

# 打开配置文件,注意,这里是 frpc.ini
vim frpc.ini

修改配置文件如下

# 客户端配置
[common]
server_addr = 服务器ip
server_port = 8000 # 与frps.ini的bind_port一致
token = 52010  # 与frps.ini的token一致

# 配置ssh服务,[ssh]这样的名称必须全局唯一
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000  # 这个自定义,之后再ssh连接的时候要用

# 配置http服务,可用于小程序开发、远程调试等,如果没有可以不写下面的
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = test.hijk.pw  # web域名
remote_port = 自定义的远程服务器端口,例如8080

测试

ssh 内网服务器用户名@阿里云服务器公网ip -p 端口号(内网配置中的remote_port)

多个客户端

用一个frps连接多个frpc,原理上多个frpc和frps绑定同一个端口,但是多个frpc用不同的remote_port连接

第二个 frpc

[common]
server_addr = 服务器ip
server_port = 8000 # 与frps.ini的bind_port一致
token = 52010  # 与frps.ini的token一致

# 多个客户端,名称不要重复
[ssh1]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001 # 远程连接端口不要重复

第三个 frpc

[common]
server_addr = 服务器ip
server_port = 8000 # 与frps.ini的bind_port一致
token = 52010  # 与frps.ini的token一致

# 多个客户端,名称不要重复
[ssh2]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6002 # 远程连接端口不要重复

最近更新

  1. TCP协议是安全的吗?

    2024-02-16 11:34:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-16 11:34:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-16 11:34:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-16 11:34:02       18 阅读

热门阅读

  1. 【算法题】104. 二叉树的最大深度

    2024-02-16 11:34:02       32 阅读
  2. Flutter run 一直 Running Gradle task ‘assembleDebug’…

    2024-02-16 11:34:02       31 阅读
  3. RedisTemplate重写的一些模板

    2024-02-16 11:34:02       34 阅读
  4. LeetCode 399:除法求值(图的bfs遍历)

    2024-02-16 11:34:02       32 阅读
  5. 力扣102-二叉树的层序遍历

    2024-02-16 11:34:02       32 阅读
  6. 蓝桥杯(Web大学组)2022省赛真题:冬奥大抽奖

    2024-02-16 11:34:02       31 阅读
  7. 代码随想录算法训练营29期Day51|LeetCode 139

    2024-02-16 11:34:02       37 阅读
  8. vue3跨组件(多组件)通信:事件总线【Event Bus】

    2024-02-16 11:34:02       34 阅读
  9. GEE:关于在GEE平台上进行回归计算的若干问题

    2024-02-16 11:34:02       36 阅读
  10. Ubuntu+Anaconda 常用指令记录

    2024-02-16 11:34:02       30 阅读
  11. Ajax,

    2024-02-16 11:34:02       30 阅读