使用frp配置内网访问(穿透)教程(超详细,简单)

使用frp配置内网访问(穿透)教程(超详细,简单)1Frp 介绍 frp 是一个开源 简洁易用 高性能的内网穿透和反向代理软件 支持 tcp udp http https 等协议 frp 项目官网是 https github com fatedier frp frp 工作原理服务端运行 监听一个主端口 等待客户端的连接 客户端连接到服务端的主端口 同时告诉服务端要监听的端口和转发类型 服务端 fork 新的进程监听客户端指定的端口 外网用户连接到客户端指定的端口 服务端通过和客户端的连接将数据转发到客户端 客户端进程再将数据转发到本地服务

1 Frp介绍

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

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

2 配置教程

想要配置frp穿透,首先必须先要有一台具有外网ip(即:可以外网访问)的服务器。如果没有,接下来的教程就不用看了。配置教程主要分为两个部分,一是服务器端(外网服务器)的配置;二是客户端(内网服务器)配置。

2.1 服务端配置

1、下载frp库
2、解压frp压缩包
tar -zxvf frp_0.33.0_linux_amd64.tar.gz 
3、进入该解压目录:
cd frp_0.33.0_linux_amd64/ 

并打开配置文件:

vi frps.ini 

将文件内容修改为如下:

[common] # frp监听的端口,默认是7000,可以改成其他的 bind_port = 7000 # 授权码,请改成更复杂的 token = 52010 # 这个token之后在客户端会用到 # 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 
4、设置和启动frp服务
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 

如果上述命令依次执行完没有任何错误出现,则说明启动成功。

5、防火墙开放端口
# 添加监听端口 sudo firewall-cmd --permanent --add-port=7000/tcp # 添加管理后台端口 sudo firewall-cmd --permanent --add-port=7500/tcp sudo firewall-cmd --reload 
  • 注意:

a. 如果是ubuntu或者centos 6,请使用ufw/iptables工具放行端口;

b. 7000和7500两个端口分别对应frps.ini配置中的bind_port和dashboard_port

6、验证服务端是否启动成功

2.2、客户端配置

1、下载frp库
2、解压frp压缩包
tar -zxvf frp_0.33.0_linux_amd64.tar.gz 
3、进入该解压目录:
cd frp_0.33.0_linux_amd64/ 

并打开配置文件:

vi frpc.ini (注意哦,不是frps.ini) 

将文件内容修改为如下:

# 客户端配置 [common] server_addr = 服务器ip # 与frps.ini的bind_port一致 server_port = 7000 # 与frps.ini的token一致 token = 52010 # 配置ssh服务 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 # 这个自定义,之后再ssh连接的时候要用 remote_port = 6000 # 配置http服务,可用于小程序开发、远程调试等,如果没有可以不写下面的 [web] type = http local_ip = 127.0.0.1 local_port = 8080 # web域名 subdomain = test.hijk.pw # 自定义的远程服务器端口,例如8080 remote_port = 8080 

修改后如下图:

在这里插入图片描述

  • 注意:[ssh]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2]、[ssh3]等;意思就是说,如果你要配置多个客户端,必须将另外的客户端的[ssh]改为[ssh2]、[ssh3]等,并且remote_port也要变,比如6002,6003等
4、防火墙开放端口

linux:

sudo firewall-cmd --permanent --add-port=6000/tcp sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload 
sudo systemsetup -getremotelogin sudo systemsetup -setremotelogin on 

开启ssh服务:

sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 
5、客户端启动

在frp_0.33.0_darwin_amd64目录下执行

./frpc -c frpc.ini 

3、测试穿透是否配置成功

找另外一台不同网段的linux或者mac电脑,在终端执行

ssh 用户名@服务端ip -p 端口号 

这里一定要注意,这里用的是服务端的ip和用户名,端口号用的frpc.ini文件中的remote_port。如果你登录成功,那么,恭喜你,你已经学会了利用frc怎么配置内网穿透了!!!

参考:https://tlanyan.me/frp-tunnel-tutorial/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179356.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:46
下一篇 2026年3月26日 下午3:47


相关推荐

  • fastJson 解析json字符串

    fastJson 解析json字符串packagecom zhw project domain importcom alibaba fastjson JSON importcom alibaba fastjson JSONArray importcom alibaba fastjson JSONObject importjava util ArrayList importjava util List 正常防疫对象 antiepidemic normal authorruoyi

    2026年3月19日
    2
  • 这个问题让我疯掉!用oledbcommand执行一个插入一条记录的程序,到现在也没有解决!…

    这个问题让我疯掉!用oledbcommand执行一个插入一条记录的程序,到现在也没有解决!…数据库结构:StringStr=”INSERTINTODataHis(时间,开盘价,最高价,最低价,收盘价)VALUES(’98-02-12′,4,34,45,56)”;//StringStr=”select*fromDataHis”;stringstrConn=”Provider=Mic…

    2022年5月12日
    32
  • 自动化压力测试:Mokey测试参数:

    自动化压力测试:Mokey测试参数:Mokey 测试参数 简单案例 adbshellmonk v500adbshell v nbsp pcom easyto travel100adb vthrottle300 touch30pct motion20pct nav20pct majornav15pc appswitch5

    2026年3月16日
    2
  • 浅谈大数据的标签管理

    浅谈大数据的标签管理最近参与了一个大数据的项目,是涉及标签管理方面的内容,使我这个初涉入大数据领域的人获益匪浅。标签,也可以叫做Tag,最早出现于2005年(注1),随着Web2.0的Blog应用被广泛使用开来。标签也可以说是一种关键词标记,可以更好的显示和突出搜索的关键词条,以便进行更好的索引和浏览查找。但标签又不同于平常的关键词,它可以使用文章或日志中根本没有出现过的词条来标记。比如一篇关于产品方面的文章,通篇…

    2022年5月8日
    42
  • js promise的用法

    js promise的用法nbsp 在理解 promise 的使用之前 首先要理解 js 语言的运行环境是单线程的 也就是说一次只能完成一个任务 也就是一条流水线 如果有多个任务就必须排队 前面一个任务完成 再执行后面一个任务 以此类推 这与 java 的多线程环境截然不同 所以要加以区分 1 对于 js 同步和异步 在这里需要加以备注一下 我们可以简单的理解为 可以改变程序执行顺序的操作就可以看成为异步操作 其实异步和同步的差别很简单 就在于这

    2026年3月19日
    3
  • WebView输入框提示

    做基于WebView应用时,页面上有一个输入框,当输入的文字过多时,超过输入框的行数时,输入框能够滚动,这时间问题来了,输入的提示箭头会移动到输入框外,如何解决这个问题呢,查找chromium源码如下

    2021年12月26日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号