FRP内网穿透

一、环境:

内网服务器 Centos

外网服务器 Centos

模拟场景:使用虚拟机安装Centos系统模拟内网服务器,外网服务器是正常使用云服务器

适用于:Company内部有自己的机房,部署相关服务,但是只能在内网中使用。当出现新的需求,需要通过外网访问内网中的服务的时候,可以通过内网穿透,通过内网指定的端口与外网IP端口转换,达到通过外网IP直接访问内网服务的效果。

二、需求:

通过外网服务器的公网IP访问内网服务器

通过外网服务器的端口访问内网服务器的端口服务

三、内网穿透:

内网服务器有自己的内部IP,但是通过外网无法访问,所以就需要内网穿透,将外网IP转换为内部合法的IP来进行合法访问

四、内网穿透过程:

1.在公网IP的服务器上配置运行frp的服务器程序frps

2.在内网IP的服务器上配置运行frp的客户端程序frpc

3.用户通过公网服务器通过内网穿透来访问内网服务器

五、部署

1. 下载

查看Linux系统体系结构,并选择对应的frp版本

# 1.1 初次在不知情情况下,下载了arm安装包
frp_0.42.0_linux_arm64.tar.gz
# 1.2 因为安装包与linux系统体系不符合,所以导致报错无法执行二进制文件
[root@zxy_master frp]# ./frps
frps: frps: cannot execute binary file# 2.1 再次根据查找资料,找到与linux系统匹配的安装包
frp_0.42.0_linux_amd64.tar.gz
# 2.2 执行测试成功
[root@zxy_master frp]# ./frps
2022/05/22 23:00:53 [I] [root.go:202] frps uses command line arguments for config
2022/05/22 23:00:53 [I] [service.go:194] frps tcp listen on 0.0.0.0:7000
2022/05/22 23:00:53 [I] [root.go:209] frps started successfully

下载方式一

wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.42.0_linux_amd64.tar.gz

下载方式二


方式三:可以通过博客资源下载

2.服务端

2.1 安装

# frp安装包上传到software下,解压到/zxy/apps/下
[root@zxy_master software]# tar -zxvf frp_0.42.0_linux_amd64.tar.gz -C /zxy/apps/
# 修改名称
[root@zxy_master apps]# mv frp_0.42.0_linux_amd64/ frp
# frpc  frpc_full.ini  frpc.ini 属于客户端应用
# frps  frps_full.ini  frps.ini 属于服务端应用
[root@zxy_master frp]# ls
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd

2.2 修改配置文件

[root@zxy_master frp]# vim frps.ini[common]
bind_port = 7000dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admintoken = frps
tcp_mux = truelog_file = /zxy/apps/frp/logs/frps.log
log_level = info
log_max_days = 3authentication_timeout = 0
privilege_mode = true

2.3 开放端口

关闭防火墙
在云服务器管理平台,开放7000,7500端口

2.4 启动服务端

# 启动服务端frps,并将日志输出到logs下以server和时间开头的日志文件中
[root@zxy_master frp]# nohup ./frps -c ./frps.ini > ./logs/server`date +%Y-%m-%d`.log 2>&1 &# 查看启动进程
[root@zxy_master frp]# ps -ef | grep frp
root     22460 19596  0 23:15 pts/0    00:00:00 ./frps -c ./frps.ini
root     24755 19596  0 23:19 pts/0    00:00:00 grep --color=auto frp

内网穿透管理平台[IP:7500]

3.客户端

3.1 安装

# frp安装包上传到software下,解压到/opt/apps/下[root@hadoop software]# tar -zxvf frp_0.42.0_linux_amd64.tar.gz -C /opt/apps/
# 修改名称
[root@hadoop apps]# mv frp_0.42.0_linux_amd64/ frp
# frpc  frpc_full.ini  frpc.ini 属于客户端应用
# frps  frps_full.ini  frps.ini 属于服务端应用
[root@hadoop frp]# ls
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd

3.2 修改配置文件

[root@hadoop frp]# vim frpc.ini[common]
server_addr = [外网IP]
server_port = 7000token = frps
tcp_mux = truelog_file = /opt/apps/frp/logs/frpc.log
log_level = info
log_max_days = 3
authentication_timeout = 0[ssh]
type = tcp
local_ip = 192.168.130.100
local_port = 22
remote_port = 7001

3.3 关闭防火墙

服务端需要开启7001端口

[root@hadoop frp]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)

3.4 开启客户端

## 后台启动
[root@hadoop frp]# nohup ./frpc -c frpc.ini > ./logs/client`date +%Y-%m-%d`.log 2>&1 &
[1] 26756
## 查看进程
[root@hadoop frp]# ps -ef | grep frp
root      26756   1789  0 23:34 pts/0    00:00:00 ./frpc -c frpc.ini
root      26815   1789  0 23:34 pts/0    00:00:00 grep --color=auto frp
[root@hadoop frp]#

六、ssh服务穿透-ssh测试

frp服务端:外网IP地址

frp客户端:内网IP地址

frp服务端和frp客户端的交换端口是7000

使用frp服务端的7001端口来 交换 frp客户端的22端口

测试连接

测试连接成功

七、添加其余服务穿透-MySQL

1.客户端修改frpc.ini

[root@hadoop frp]# vim frpc.ini
## frpc.ini添加以下内容
[mysql]
type = tcp
local_ip = 192.168.130.100
local_port = 3306
remote_port = 7002

2.测试外网IP端口Port连接MySQL

八、内网穿透管理平台[外网IP:7500]

1.Overview

这里可以从Proxy Counts看到,目前内网穿透服务有两项

2.Proxies

Proxies下分为了多种代理类型,我们目前使用到的服务中有ssh和mysql都是使用了TCP模式

九、如果需要一台外网服务器穿透多台服务器

将第一台内网服务器的frp文件夹打包,并发送到其他内网服务器中
在第二台内网服务器中解压frp文件,并修改frpc.ini配置文件即可

1.部署

# 内网服务器一
[root@hadoop apps]# tar -cvf frp.tar ./frp/
[root@hadoop apps]# scp frp.tar root@192.168.130.101:/opt/apps/# 内网服务器二
[root@hadoop apps]# tar -xf frp.tar

2.修改frpc.ini文件

第一:[common]部分不需要变
第二:在内网服务器一中,我们穿透了ssh服务和mysql服务,在内网服务器二中如果再次穿透这两个服务,命名需要修改否则会报如下错误:

2022/05/23 15:54:48 [W] [control.go:179] [80ed2e1283ba3e9b] [ssh] start error: proxy name [ssh] is already in use
2022/05/23 15:54:48 [W] [control.go:179] [80ed2e1283ba3e9b] [mysql] start error: proxy name [mysql] is already in use

[common]
server_addr = [外网IP]
server_port = 7000token = frps
tcp_mux = truelog_file = /opt/apps/frp/logs/frpc.log
log_level = info
log_max_days = 3
authentication_timeout = 0[ssh2]
type = tcp
local_ip = 192.168.130.101
local_port = 22
remote_port = 7003[mysql2]
type = tcp
local_ip = 192.168.130.101
local_port = 3306
remote_port = 7004

3.防火墙

指定端口开放防火墙方法

内网服务器二开放22和3306端口,或者关闭防火墙
外网服务器则需要开放7003和7004端口

4.启动

[root@hadoop frp]# nohup ./frpc -c frpc.ini > ./logs/client`date +%Y-%m-%d`.log 2>&1 &[root@hadoop frp]# ps -ef | grep frp
root       6290      1  0 15:59 pts/0    00:00:00 ./frpc -c frpc.ini
root      10372   1983  0 16:10 pts/0    00:00:00 grep --color=auto frp

5.通过外网服务器[IP:7500]查看内网穿透管理平台

这时可以观察到内网服务器二的ssh服务[ssh2]和MySQL服务[mysql2]已经穿透成功

《工具箱-内网穿透》FRP内网穿透(实现外网访问内网服务)相关推荐

  1. 钉钉内网穿透工具,如何使用钉钉小程序访问内网

    描述:公司内网搭建项目,客户端钉钉小程序,如何实现钉钉小程序请求公司内网服务. 钉钉提供了内网穿透工具. 一.安装工具 git clone https://github.com/open-dingta ...

  2. 外链自动转内链html,一个简单的HTML实现外链转内链

    一个简单的HTML实现外链跳转,支持所有程序 下载文章底部的附件或者将以下代码保存为go.html,然后放到网站根目录 超链接地址为:你的网址/go.html?url=跳转网址 如 http://ww ...

  3. 利用内网穿透,实现公网访问内网

    由于IPV4地址资源的稀缺性,运营商分配给到用户的,基本都是内网IP.因此,公网电脑想要访问内网电脑时,常常会遇到没有公网IP,无法直接与内网电脑进行通信. 而在没有公网IP的情况下,想要访问内网,经 ...

  4. 保姆级教程——如何访问内网NAS

    在讲解如何访问NAS之前,我先来说下为什么需要访问内网NAS. 首先处于成本考虑,很多NAS系统都是部署在企业内网的,离开公司就无法访问,现在是高效率办公的时代,可能随时随地都需要用到NAS内部的文件 ...

  5. 详解外网访问内网DDNS作用 及ddns解析软件使用方法

    导语: 随着互联网的成熟,家庭宽带的提速,大家对外网访问家庭内网电脑,监控,服务器,存储NAS等设备的需求倍增.目前外网访问内网可以用DDNS动态域名解析的方式,以下本文就来介绍一下原理和实现工具. ...

  6. ssh外网访问内网服务器

    现在有这样一个情况,实验室有自己的服务器(内网),并且有相关老师进行维护(公网),我们可以在内网用内网ip访问服务器,如果我们在家里只能通过公网进行登录.但是我在实验室有一个小服务器(内网),如果我在 ...

  7. 如何设置电脑不能访问公网但是能够访问内网

    如何设置电脑不能访问公网但是能够访问内网 方法: 删除本地路由 手动添加只能访问内网的路由 首先查看本地路由 打开cmd 输入 ipconfig /all 通常默认网关对应的路由即是默认路由 查看路由 ...

  8. 终端配置多网卡实现同时访问内外网

    在日常的运维中,经常有使用多张网卡的需求,比如服务器需要同时连接两个网络,或者是需要提供远程环境供对方访问内网.但是在pc或者服务器上做好网络配置后常常有只能上外网,无法连接内网,或者是只能上内网,无 ...

  9. 内网穿透 --- frp

    中文文档:https://github.com/fatedier/frp/blob/dev/README_zh.md 手机+frp内网穿透搭建随身携带的服务器:https://blog.csdn.ne ...

最新文章

  1. 11.2 计算机保护条例解读
  2. 复习笔记(四)——C++内联函数
  3. git touch不是内部_'NODE_ENV' 不是内部或外部命令,也不是可运行的程序或批处理文件。...
  4. 利用python爬虫(part17)--初识selenium
  5. Dockerfile里的VOLUMES关键字
  6. matebook14装鸿蒙系统,matebook14几个接口
  7. 电路——I/O口定时翻转电平驱动蜂鸣器注意事项
  8. JavaSceipt核心语法——运算符
  9. RCP之病人信息系统开发总结(4):MVC模式之View层—透视图
  10. 【ABC196-D】 Hanjo(dfs+状态标记)
  11. 思科模拟器的常用命令
  12. 康考迪亚大学应用计算机科学,康考迪亚大学专业设置详情
  13. Mac网络正常但是所有浏览器无法上网问题解决
  14. 解决Vue启动报错 npm ERR! @1.0.0 dev: node build/dev-server.js
  15. JCL新手入门学习教程(1) 2021-02-09
  16. Scrapy去重操作
  17. 升级win11后,觉得不好用想重装win10系统?教你重装win10“精简版”
  18. MSP430F5529-定时器介绍
  19. ue4 小知识点 als advanced locomotion system v4 foot ik 坑
  20. 聊聊我的故事|最感人的是细枝末节

热门文章

  1. 【UE5】打开他人的UE4/5项目没有.sln文件,打开c++文件失败
  2. 短视频如何涨粉引流?三个小技巧来帮你,人设、细节都要抓牢
  3. 基于javaee的酒店预订管理系统设计与实现、ssh框架+mysql数据库
  4. WORD页眉相同问题
  5. Java基础面试题一
  6. Mrt render
  7. Tabbar组件封装
  8. Vue实现自定义表格合并
  9. 杨辉三角形(超级简单的Python实现方法)
  10. 【前端】判断是否为IE浏览器(edge,ie版本)