使用frp反向代理工具,实现端口映射

有时外网想访问局域网的服务器,找运营商要公网IP还需要一笔费用,那有没有一种可行的有性价比的替代方案呢?答案是肯定的,网上有很多这类工具,一般称为内网穿透/反向代理工具。如:开源的ngrok和frp,还有些商业化的如natapp,nat123,花生壳等。下文介绍其中一种:frp,开源免费、且一直在更新,亲试可用。
 
什么是frp
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
 
中文文档
 
架构
 
frp使用案例
  • 通过ssh访问公司内网机器
  • 通过自定义域名访问部署于内网的web服务
  • 转发DNS查询请求
  • 转发Unix域套接字
  • 对外提供简单的文件访问服务
  • 为本地HTTP服务启用HTTPS
  • 安全的暴露内网服务
  • 点对点内网穿透
 
部署环境:
服务端:阿里云 CentOS 7 64位操作系统
客户端:Win10 64位操作系统
 
服务端部署
环境:CentOS 7 64位操作系统
 
根据对应的操作系统及架构,从 Release页面下载最新版本的程序。
1.下载安装包并解压
$ wget https://github.com/fatedier/frp/releases/download/v0.32.0/frp_0.32.0_linux_amd64.tar.gz
$ tar -zxvf frp_0.32.0_linux_amd64.tar.gz

解压后,目录中有如下文件,

其中,
frps/frps_full.ini/fprs.ini是服务端程序及配置文件,文件放在具有公网IP的机器上。
frpc/frpc_full.ini/fprc.ini是客户端程序及配置文件,文件放到处于内网环境的机器上。
systemd下注册成服务的配置文件。
 
2.服务端
在解压路径下拷贝frps文件到/usr/bin/
$cp frps /usr/bin/

在解压路径下拷贝frps.ini文件到/etc/frp/

$mkdir /etc/frp/
$cp frps.ini frps_full.ini /etc/frp/

设置systemd服务

拷贝./systemd/frps.service文件到/etc/systemd/system
$cp sytemd/frps.service /etc/systemd/system

管理frps服务

$systemctl daemon-reload      //重新加载单元配置
$systemctl enable frps        //启用frps服务
$systemctl start frps         //启动frps服务
$systemctl restart frps       //重启frps服务
$systemctl stop frps          //停止frps服务
$systemctl status frps        //查看frps服务状态

成功运行,查看状态

 
服务器防火墙设置
firewall-cmd --zone=public --add-port=2000-8000/tcp --permanent
firewall-cmd --reload
 
阿里云防火墙安装组规则-配置了2000到8000的范围。
 
frps.ini配置添加,支持工作台
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

访问:http://frps.com:7500/ 即可。

 
 
 
客户端部署
环境:Win10 64位操作系统
1.下载安装包
2.解压,树形结构与Linux版本一致。
 
3.配置客户端frpc.ini,如下
[common]
server_addr = 0.0.0.0//服务端IP
server_port = 7000//服务端通信端口

内网服务器配置,这边是内网服务器上ssh服务,类型是tcp,IP是本机,端口22

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

通讯服务应用,比如,车辆gps采集服务,类型是tcp,IP是本机,端口6500

[tcp6500]
type = tcp
local_ip = 127.0.0.1
local_port = 6500
remote_port = 6500

4.CMD运行客户端

cmd>frpc.exe -c frpc.ini
 
5.测试通讯服务应用
使用网络调试助手,模拟 通信应用服务端,监听本机6500端口,如下:
模拟客户端访问外网的通信服务应用,连接公网IP,6500端口,如下:
 
模拟客户端发送“hello 你好吗?”, 通信应用服务端成功收到外网映射端口来的“hello 你好吗?”
至此,TCP类型的内网穿透成功。
 
 
6.设置远程桌面
frpc.ini映射配置应用,名称为RDP
[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6389

frpc启动后,正常无意外远程桌面即可连上。

 
7.客户端添加工作台支持
frpc.ini中添加
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin

重启客户端

内网服务器,网页输入访问: http://127.0.0.1:7400/,可以进行GUI热配置,这样不要每次后台修改.ini文件。
 
参考:
 
更多欢迎关注微信公众号:
阿尔法星电子】,科技爱好者,记录分享科技趣闻,创意DIY。
 
 
发布了11 篇原创文章 · 获赞 0 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Kimihong/article/details/105025515