一、软件简介

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

frp 的作用

  1. 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。

  2. 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

  3. 利用处于内网或防火墙后的机器,对外网环境提供 tcp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

  4. 可查看通过代理的所有 http 请求和响应的详细信息。(待开发)

架构图

二、使用案例

2.0 服务器list

序号 主机名 服务器IP 服务器作用 部署服务名称
1 jump-server-1 172.20.254.254 JumpServer, 可以连通线上线下 frps 服务端
2 redis-1 172.18.254.254 prod redis instance1 frpc 客户端
3 nn2 172.18.254.253 prod bdc server2 frpc 客户端
4 windows-host 10.3.254.254 windows client frpc 客户端

2.1 案例目标1

实现本地访问prod redis instance1:

redis节点上已安装frp软件:

[root@server1 frp_0.34.1_linux_amd64]# pwd
/opt/software/frp_0.34.1_linux_amd64
[root@server1 frp_0.34.1_linux_amd64]# ll
total 22648
-rwxrwxr-x 1 1000 1000  9908224 Sep 30 15:38 frpc
-rw-rw-r-- 1 1000 1000     7928 Sep 30 15:44 frpc_full.ini
-rw-rw-r-- 1 1000 1000      126 Sep 30 15:44 frpc.ini
-rwxrwxr-x 1 1000 1000 13205504 Sep 30 15:38 frps
-rw-rw-r-- 1 1000 1000     4928 Sep 30 15:44 frps_full.ini
-rw-rw-r-- 1 1000 1000      143 Oct 14 13:10 frps.ini
-rw-rw-r-- 1 1000 1000    11358 Sep 30 15:44 LICENSE
-rw------- 1 root root    29775 Oct 29 08:50 nohup.out
drwxrwxr-x 2 1000 1000     4096 Sep 30 15:44 systemd

步骤1:>服务端操作

JumperServer 端配置:
配置后,执行启动命令:
cd /opt/software/frp_0.34.1_linux_amd64;
nohup ./frps -c ./frps.ini &
.
说明: 设置frps web侧管理、查看功能, 账户信息配置如下:

[common]
bind_port = 7000
dashboard_addr = 0.0.0.0
dashboard_port = 7001
dashboard_user = admin
dashboard_pwd = dashboard@5431
token = QAZ1235

步骤2:>客户端操作

Redis server instance1 客户端配置:
配置后,执行启动命令:
cd /opt/software/frp_0.34.1_linux_amd64;
nohup ./frpc -c ./frpc.ini & 或者 nohup ./frpc &

[common]  # 配置frps服务器信息
server_addr = jump-server-1
server_port = 7000
token = QAZ1235[my-redis-7001] # 配置Redis对外暴露的端口、data加密、data压缩信息
type = stcp
sk = abcdefg
local_ip = redis-1
local_port = 7001
use_encryption = true
use_compression = true

步骤3:>Windows客户端操作
Windows客户端主机上已安装frp软件:

user@DESKTOP-CODE123 MINGW64 /d/BIGDATA_DEV/FRP/frp_0.34.1_windows_amd64
$ ll
total 22923
-rwxr-xr-x 1 user 197121 10039808  9月 30 15:41  frpc.exe*
-rw-r--r-- 1 user 197121      335 10月 21 13:51  frpc.ini
-rw-r--r-- 1 user 197121     7928  9月 30 15:44  frpc_full.ini
-rwxr-xr-x 1 user 197121 13379072  9月 30 15:41  frps.exe*
-rw-r--r-- 1 user 197121       26  9月 30 15:44  frps.ini
-rw-r--r-- 1 user 197121     4928  9月 30 15:44  frps_full.ini
-rw-r--r-- 1 user 197121    11358  9月 30 15:44  LICENSE
-rw-r--r-- 1 user 197121    14660 10月 22 14:15  README.docx
drwxr-xr-x 1 user 197121        0 10月 14 14:21  systemd/

Windows client instance1端配置:

[common]
server_addr = jump-server-1
server_port = 7000
token = QAZ1235[my-redis-7001_visitor]
type = stcp
role = visitor
server_name = my-redis-7001
sk = abcdefg
bind_adrr = 127.0.0.1
bind_port = 6000

配置后,执行启动命令:

cd /d/BIGDATA_DEV/FRP/frp_0.34.1_windows_amd64;
frpc.exe 或 将封装win脚本并加入C:\Users\user>services.msc做成win自启动服务。

步骤4:
使用Redis客户端连接redis:

连上后,测试效果如下:

2.2 案例目标2

实现本地访问某台服务器(如:nn2):

步骤1:

[common]  # frps服务端认证信息配置
server_addr = jump-server-1
server_port = 7000
token = QAZ1235[my-sqoop-22]
type = stcp                         #使用stcp协议
sk = abcdefg
local_ip = nn2  #配置nn2 所在的本地IP
local_port = 22                    #配置prod希望访问的PORT
use_encryption = true
use_compression = true

步骤2:
Windows客户端主机上已安装frp软件:

Windows client instance1端配置:

[common]
server_addr = jump-server-1
server_port = 7000
token = QAZ1235[my-redis-7001_visitor]
type = stcp
role = visitor
server_name = my-redis-7001
sk = abcdefg
bind_adrr = 127.0.0.1
bind_port = 6000[my-sqoop-22_visitor]
type = stcp
role = visitor
server_name = my-sqoop-22
sk = abcdefg
bind_adrr = 10.3.254.254 #Windows本地IP
bind_port = 6001

配置后,执行启动命令:

cd /d/BIGDATA_DEV/FRP/frp_0.34.1_windows_amd64;
frpc.exe 或 将封装win脚本并加入C:\Users\user>services.msc做成win自启动服务。

步骤3:
Windows客户端主机,安装ssh服务:
Win键-》设置-》应用-》应用和功能-》可选功能-》找到openssh服务器-》安装。
Win键-》设置-》应用-》应用和功能-》可选功能-》找到openssh客户端-》安装。

步骤4:
验证ssh client 是否安装成功:
任意目录下,右键打开“git bash here”(假设已安装Git客户端),输入ssh:

user@DESKTOP-CODQ9G8 MINGW64 /d/BIGDATA_DEV/FRP/frp_0.34.1_windows_amd64
$ ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface][-b bind_address] [-c cipher_spec] [-D [bind_address:]port][-E log_file] [-e escape_char] [-F configfile] [-I pkcs11][-i identity_file] [-J [user@]host[:port]] [-L address][-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port][-Q query_option] [-R address] [-S ctl_path] [-W host:port][-w local_tun[:remote_tun]] destination [command]

步骤5:
ssh keygen后生成ssh共秘钥信息:

user@DESKTOP-CODQ9G8 MINGW64 ~
$ cd .ssh/user@DESKTOP-CODQ9G8 MINGW64 ~/.ssh
$ ll
total 7
-rw-r--r-- 1 user 197121  403 10月 22 13:51 authorized_keys
-rw-r--r-- 1 user 197121 1679 10月 21 13:33 id_rsa
-rw-r--r-- 1 user 197121  403 10月 21 13:33 id_rsa.pub
-rw-r--r-- 1 user 197121  379 10月 21 13:35 known_hosts

步骤6:
将win上生成的公钥文件 id_rsa.pub 中的内容,拷贝至 prod bdc server2 上root用户的 authorized_keys文件中。

步骤7:
设置开机自启动:

在/lib/systemd/system 目录下, 新建启动服务文件(frp.service):

[Unit]
Description=Frp Client Start on Reboot.
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
ExecStart=/opt/software/frp_0.34.1_linux_amd64/frpc -c /opt/software/frp_0.34.1_linux_amd64/frpc.ini[Install]
WantedBy=multi-user.target

将该服务设置开机自启动:

[root@nn2 system]# pwd
/lib/systemd/system
[root@nn2 system]# vim frp.service
[root@nn2 system]# ll frp.service
-rw-r--r-- 1 root root 266 Oct 29 11:50 frp.service
[root@nn2 system]# systemctl enable frp.service
Created symlink from /etc/systemd/system/multi-user.target.wants/frp.service to /usr/lib/systemd/system/frp.service.

2.3 win10 服务器上创建启动脚本

文件格式为bat, 如可以命名为: start_frp.bat

@echo off
start /d "D:\BIGDATA_DEV\FRP\frp_0.34.1_windows_amd64\" frpc.exe
exit

2.4 查看frps web控制台页面

登录web控制台: http://${dashboard_addr}:${dashboard_port}

弹出的账户弹窗中填入: $dashboard_user $dashboard_pass

①.概览

②. 代理列表

Frp实现外网穿透访问内网相关推荐

  1. ssh连接linux_使用内网穿透访问内网ssh图文教程

    使用内网穿透访问内网ssh图文教程 穿透内网Linux系统22端口(SSH)教程 此教程可实现在外网SSH连接处于内网的Linux设备 1.下载网云穿linux版本 可使用wget下载或直接在官网下载 ...

  2. 外网怎么访问内网_神卓互联搭建远程桌面和web应用(很详细)

    外网怎么访问内网_神卓互联搭建远程桌面和web应用,我们都知道国内IP资源严重不足,导致运营商商们都不给固定的IP,都是动态分配的,现在基本的已经是100或者10开头的局域网的IP,运营商的ADSL网 ...

  3. 快解析外网如何访问内网共享服务器

    两台电脑怎么在同一个路由下访问共享文件夹?两台不同系统的电脑在同一个路由器下访问共享文件夹进行数据共享,从本质上说就是在同一个局域网下设备之间的互通互联,这就需要我们搭建一个内网文件共享服务器来实现此 ...

  4. 如何从外网穿透到内网

    内网,也叫局域网.从范围上来讲,内网就是小部分的网络.如,最小最简单的内网就是二台电脑用网线连接起来,就是一个内网.一般的特定环境,都是内网,如学校的校园网:公司单位的局域网等.内网IP地址常见的有如 ...

  5. Cisco Packet Tracer 思科模拟器利用NAT实现外网主机访问内网服务器

    前两篇讲解了动态NAT地址转换,以及静态NAT地址转换,本篇文章主要讲解如何理由NAT实现外网主机访问内网服务器,含有重分布教学 情境分析 公司只申请了一个公网IP地址,基于私有地址与公有地址不能直接 ...

  6. 玩转内网穿透(1):内网穿透是什么?有什么用

    文章目录 1 什么是内网穿透? 2 内网穿透有什么用? 3 有哪些免费/收费的商业化内网穿透工具? 4 自己搭建内网穿透需要准备哪些东西? 1 什么是内网穿透? 非学术的说法: 通常个人电脑无论是连接 ...

  7. 外网如何访问内网/局域网网站【内网穿透】

    ​ 在本地内网/局域网环境下搭建的网站,正常情况下只能在同个局域网下访问,想要实现外网用户也能够正常访问,可以通过内网穿透来实现. 做内网穿透,无需公网IP,也无需进入到路由器配置,在本地安装个内网穿 ...

  8. 内网通过外网IP访问内网服务器?

    转自:http://bbs.hh010.com/thread-133589-1-1.html 以下所有内容均针对出口是以太网的情况,对于串口接入,不会出现这种问题. 如图,这个图是本贴的初始图,大圈是 ...

  9. 配置NAT实现外网主机访问内网服务器(Cisco)

    假设你是某公司的网络管理员,公司只向ISP申请了一个公网IP,现公司的网站在内网,要求在互联网也可以访问公司网站. 192.168.1.2是Web服务器的IP地址(内网地址).通过分析可知,需要将内网 ...

最新文章

  1. unity3d-游戏实战突出重围,第四天 添加角色
  2. 记录kubesphere的安装与使用
  3. 一段话系列-领域模型是什么?
  4. [转载] Python3.X 线程中信号量的使用方法示例
  5. git 初始化git存储库_什么不保存到Git存储库中
  6. RMAN duplicate恢复数据库报错RMAN-06054问题处理
  7. 特殊时期,找工作的 9 点建议!
  8. 全自动与半自动手表的区别_半自动和全自动的区别在哪里?
  9. 简述 matlab 命令窗的主要作用,matlab复习
  10. 大数据杀熟已被明令禁止!
  11. Fibonacci数列 斐波那契数列
  12. 自适应simpson积分
  13. 简单介绍一下HBase、Cassandra、Voldemort、Redis、VoltDB、MySQL
  14. 判断一个数是否为整数、正整数、小数通用算法
  15. 2013年各大小IT公司待遇,绝对真实,一线数据!
  16. Java多线程/Java8多线程
  17. OpenCV图像处理——把图像指定颜色变成透明
  18. C++新特性——郭炜
  19. 技术提升了,钱自然就来了:盘点这段时间我挣钱的感受
  20. Oracle ERP/EBS顾问就业前景 Oracle ERP/EBS顾问 培训

热门文章

  1. SpringBoot自定义banner小彩蛋
  2. 朗伯面、朗伯体、立体角----详细解答
  3. 猫猫向前冲 Week8作业B题
  4. 软件工程项目——黄金矿工
  5. 导航框架式html播放器的实现以及导航栏的自动更新脚本实现
  6. 从面试角度聊聊 ConcurrentHashMap 的理解
  7. C++实现rtmp服务器和客户端
  8. Android SDK 和虚拟器 安装过程详解
  9. Android MVC框架 - Baymax
  10. 哈希在线计算工具_哈希:开发人员的绝佳工具