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

14 篇文章 0 订阅
13 篇文章 0 订阅

一、FRP内网穿透

1.环境:

内网服务器 Centos

外网服务器 Centos

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

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

2.需求:

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

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

3.内网穿透:

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

4.内网穿透过程:

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

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

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

5.部署

5.1. 下载

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

查看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

下载方式二

在这里插入图片描述
方式三:可以通过博客资源下载

5.2.服务端

5.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
5.2.2 修改配置文件
[root@zxy_master frp]# vim frps.ini

[common]
bind_port = 7000

dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

token = frps
tcp_mux = true

log_file = /zxy/apps/frp/logs/frps.log
log_level = info
log_max_days = 3

authentication_timeout = 0
privilege_mode = true
5.2.3 开放端口
关闭防火墙
在云服务器管理平台,开放7000,7500端口
5.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]

在这里插入图片描述

5.3.客户端

5.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

5.3.2 修改配置文件
[root@hadoop frp]# vim frpc.ini

[common]
server_addr = [外网IP]
server_port = 7000

token = frps
tcp_mux = true

log_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
5.3.3 关闭防火墙

服务端需要开启7001端口

[root@hadoop frp]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
5.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]#

6.ssh服务穿透-ssh测试

frp服务端:外网IP地址

frp客户端:内网IP地址

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

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

测试连接

在这里插入图片描述

测试连接成功

在这里插入图片描述

7.添加其余服务穿透-MySQL

7.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

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

在这里插入图片描述

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

8.1.Overview

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

在这里插入图片描述

8.2.Proxies

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

在这里插入图片描述

9.如果需要一台外网服务器穿透多台服务器

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

9.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

9.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 = 7000

token = frps
tcp_mux = true

log_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

9.3.防火墙

指定端口开放防火墙方法

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

9.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

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

这时可以观察到内网服务器二的ssh服务[ssh2]和MySQL服务[mysql2]已经穿透成功
在这里插入图片描述

二、Linux系统体系结构和Linux应用版本匹配选择(以frp内网穿透为例)

1.frp版本选择

当安装的frp系统结构与服务器环境系统架构不匹配的时候,就会报无法执行二进制文件的错误。这时需要下载对应系统架构的frp版本安装,通过【二、Linux体系结构查看】

# 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
frpLinux
386x86架构
amd6464位x86架构
armarm架构
arm6464位arm架构
mipsmips架构
mips6464位mips架构
mipslemipsle架构
mips64le64位miplse架构

在这里插入图片描述

2.Linux系统体系结构查看

根据计算的体系结构从指令集的复杂度上可以分为两类,一是复杂指令集CISC,主要是X86架构。另一类是精简指令集RISC,这个主要有ARM、MIPS、PowerPC等,而判断你Linux系统的体系结构主要有以下方法:

2.1. arch

直观的返回系统体系结构

[root@zxy_master ~]# arch
x86_64

2.2.uname

直观的返回系统体系结构

[root@zxy_master software]# uname -m
x86_64

2.3.file

file命令查看一个本地可执行文件,就可以返回一串信息中包含系统体系结构

[root@zxy_master frp]# file frpc
frpc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

3.Linux系统位数

3.1. getconf

[root@zxy_master software]# getconf LONG_BIT
64

3.2. file

x86-64

[root@zxy_master software]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=c8ada1f7095f6b2bb7ddc848e088c2d615c3743e, stripped

4.查看Linux内核版本

4.1./proc/version

Linux version 3.10.0-1160.45.1.el7.x86_64

[root@zxy_master /]# cat /proc/version
Linux version 3.10.0-1160.45.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Wed Oct 13 17:20:51 UTC 2021

4.2.uname

3.10.0-1160.45.1.el7.x86_64

## uname -a
[root@zxy_master /]# uname -a
Linux zxy_master 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

## uname -r
[root@zxy_master /]# uname -r
3.10.0-1160.45.1.el7.x86_64

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DATA数据猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值