需要用内网穿透技术来实现通过其他公网 IP 来访问家里的 NAS 设备的需求,frp使用起来更加简便灵活,以及项目一直开源,所以本文选择frp作为示例

frp的github地址 :https://github.com/fatedier/frp
frp的下载地址:https://github.com/fatedier/frp/releases

一、服务端部署

1、服务器端下载linux版本,也可以通过命令下载

##下载对应版本的Frpwget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz##解压tar -xzvf frp_0.21.0_linux_amd64.tar.gz##进入目录cd frp_0.21.0_linux_amd64##删除服务端相关的文件rm -rf frpc*

2、新建目录mkdir -p /usr/local/frp,上传frp_0.xx.0_linux_amd64.tar.gz至linux服务器该目录下

3、解压tar -zxvf frp_0.xx.0_linux_amd64.tar.gz

4、进入解压目录cd frp_0.xx.0_linux_amd64,这里主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件。

5、配置服务端(公网服务器),首先删掉frpc、frpc.ini两个文件,然后再进行配置,vi ./frps.ini,

编辑服务端配置文件frps.ini

[common]dashboard_port = 7500      //Dashboard端口dashboard_user = admin    //账号dashboard_pwd = admin    //密码bind_port = 7000vhost_http_port = 8080server_addr = x.x.x.x          //服务器id[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000

保存然后启动服务./frps -c ./frps.ini,这是前台启动,后台启动命令为nohup ./frps -c ./frps.ini &

运行服务端frp

nohup ./frps -c ./frps.ini > info.log 2>&1 & echo $! > tpid

3 查看效果&&隐藏端口号,访问浏览器控制面板

访问http://nas.example.com:8080

这时候我们使用网址访问的时候是会带端口号的。看着很烦。这里使用nginx转发的方式可以去掉8080。nginx添加conf如下:

##下载对应版本的Frpwget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz##解压tar -xzvf frp_0.21.0_linux_amd64.tar.gz##进入目录cd frp_0.21.0_linux_amd64##删除服务端相关的文件rm -rf frps*

二、 客户端部署(内网服务器),首先删掉frps、frps.ini两个文件,然后再进行配置,vi ./frpc.ini

[common]server_addr = x.x.x.x   //服务端的IP地址server_port = 7000[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000[nas]type = httplocal_ip = 192.168.0.100   //nas的局域网iplocal_port = 5000custom_domains = nas.example.com

编辑客户端的配置文件frpc.ini

[common]server_addr = x.x.x.x   //服务端的IP地址,#公网服务器ipserver_port = 7000  #与服务端bind_port一致[ssh]type = tcp #连接协议local_ip = 192.168.0.100 #内网服务器iplocal_port = 22#ssh默认端口号remote_port = 6000#自定义的访问内部ssh端口号#公网访问内部web服务器以http方式[nas]type = http#访问协议local_ip = 192.168.0.100   //nas的局域网iplocal_port = 5000 custom_domains = www.hao7a.com#所绑定的公网服务器域名,一级、二级域名都可以

运行客户端frp,保存然后执行./frpc -c ./frpc.ini启动,这是前台启动,后台启动命令为nohup ./frpc -c ./frpc.ini &

windows下双击frpc.exe或者用命令 frpc -c frpc.ini即可启动客户端

nohup ./frpc -c ./frpc.ini > info.log 2>&1 & echo $! > tpid

有个问题:能像ngrok那样显示每个http请的信息吗?用来做微信端web开发的,需要知道微信服务端和用户都请求了什么,ngrok就可以通过客户端的一个本地端口来显示这些信息,并向内网模拟重新发起请求。

网友给出的解决方案:
觉得这类功能更适合添加一个HTTP代理服务器来实现,比如:
weixin--->frps---->frpc---->http-proxy--->http-source
这样frpc只要能够支持http的代理服务即可,而http-proxy你就有N总成熟的方案可以选择。
filldder, charles, 这两个可能是用的最多的,这个功能交给专业的 HTTP Proxy 工具好了,没必要重复造轮子。Python 用 mitmproxy,nodejs 用 anyproxy。

(以上仅仅是笔记,供学习交流)

charles请求转发_用免费开源的frp实现内网穿透,使用nginx转发的方式去掉端口号...相关推荐

  1. 内网穿透及端口转发(下)

    0x05 ICMP隧道 注意:在搭建ICMP隧道的时候切记把自身的icmp关闭 (sysctl -w net.ipv4.icmp_echo_ignore_all=1) ptunnel ptunnel, ...

  2. 花生壳免费实现Linux主机的内网穿透,可通过SSH、SCP远程访问

    进入花生壳 官网,选择linux版花生壳并下载: Ubuntu Linux(X86_64)就是适用于64位ubuntu 安装花生壳软件: sudo dpkg -i phddns_5_1_amd64.d ...

  3. 用frp开源工具,实现内网穿透(详细教程)

    上一篇文章,讲了"穿透届的骨灰级软件工具",点击查看. 选取其中的frp内网穿透方式,给大家分享本此教程供大家参考. ^ - ^ 如果你有一台云服务器(有公网IP),或者有使用权, ...

  4. 【免费】傻瓜式一键内网穿透实现ssh连接远程局域网的电脑(利用免费frp服务器)

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

  5. Centos使用lanproxy,搭建一个属于自己的内网穿透服务器(附转发失败解决方法),小白向

    目录 前言 准备工作 搭建与使用 1. 安装git工具 2. 安装java环境 3. 安装maven工具 4. 搭建Lanproxy 5. 启动内网穿透服务 6. 设置开机自启 转发失败解决方法 前言 ...

  6. 利用NAS免费部署动态解析实现内网穿透

    ‍ 想要从外网访问家中的NAS等设备,一般来说我们需要知道家中路由器的公网IP. 现在固定的公网IP基本上很难免费申请到了,但是一般来说运营商可以免费提供一个动态变化的公网IP:当路由设备重启时,运营 ...

  7. 群晖网络不通_群晖系统安装zerotier one进行内网穿透过程中常见问题及解决方法...

    群晖系统安装zerotier one进行内网穿透过程中常见问题及解决方法 2020-07-28 17:27:39 21点赞 330收藏 31评论 zerotier one是一款很好用的P2P内网穿透软 ...

  8. 内网穿透+nginx转发

    内网穿透加nginx转发实现本地服务远程访问 前言 一.关于内网穿透 介绍 内网穿透常用工具 二.安装nginx(docker方式) 拉取镜像并启动 创建文件挂载目录(老规矩了) 重新创建并启动ngi ...

  9. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

最新文章

  1. String 常用API
  2. Misc杂项设备驱动框架
  3. vue element menu侧边导航栏 数据渲染
  4. UnicodeDecodeError: 'utf8' codec can't decode byte 0xd1 in position 0: invalid continuation byte问题
  5. mininet编程实现交换机规则的插入、删除与修改。_Mysql闲聊之从Redo、Undo日志到MVCC实现原理
  6. 傅里叶变换(时域频域)
  7. 反转链表——Java递归求解
  8. 2017年腾讯笔试题目
  9. jpeg怎么转换成jpg格式?三步学会在线jpeg转jpg
  10. mysql经典sql语句大全_经典SQL语句大全(sql查询语句大全集锦)
  11. [论文阅读笔记38]基于多标准主动学习EMR实体识别方法
  12. [记录][问题]Win32调用C++/WinRT DLL
  13. google谷歌动态口令
  14. 计算机视觉大型攻略 —— 特征与匹配(3)特征描述符
  15. (三十八)期权定价的蒙特卡洛模拟方法
  16. SuperMap iClient3D for WebGL 用 WebMapTileServiceImageryProvider 接口加载天地图 WMTS 服务
  17. 2019-7-29-PowerShell-拿到显卡信息
  18. 【弱的C艹之路。。未完待续】
  19. java 视频 解码_关于视频解码总结--JavaCV
  20. CSS中的BFC详解:定义、触发方式及应用场景

热门文章

  1. 查询排序_Mysql在排序和查询时不使用索引的情况
  2. 创业者具备的五大技能_赛事动态 | 新道科技连续六年支持全国职业院校技能大赛沙盘模拟企业经营赛项...
  3. 如何查找历史线程阻塞原因_学习 Web Worker(js中的“多线程”)
  4. android设置title_所见即所得的 Android 自动化神器,用 Automate 一键收藏文章
  5. android集成测试工具,android – 集成测试和Cucumber测试
  6. Android开发之虹软人脸识别活体检测基本步骤
  7. java接口常见问题分析_常见问题 - Apache ServiceComb
  8. 微信小程序错误监控方法谈
  9. (一)Builder(建造者)模式
  10. trigger 触发器(mysql)