使用Frp进行内网穿透

使用Frp进行内网穿透

由于工作需要,我们通常需要远程连接内网的服务器,两个没有公网IP的机器很难直接互联,因此,我们需要一个中介来进行内网穿透。本文将介绍使用FRP进行内网穿透

准备工作

假设我们有三台机器,A、B、C,分别是远程服务器A(只有内网IP),中继服务器B(具有公网IP),本地客户端C

  • A: 远程内网服务器 IP: 10.0.0.1
  • B: 中继服务器 IP: 123.123.123.123
  • C: 本地机器
    我们的目标是在A上面通过SSH到A上面,或者在A上通过浏览器访问B的某个端口(例如8001)

为实现这个目标,需要开放B的两个端口,一个是数据传输端口X,另一个是需要代理的端口Y。
这里我们分别设置X=7000Y=8001

简单的来说就是在云服务器的安全组中打开70008001端口,记得把入方向和出方向都打开。

FRP内网穿透

  1. 下载FRP工具包https://github.com/fatedier/frp/releases,并解压后放在A和B上。注意A和B上Frp的版本必须一致
  2. 在服务器B上,编辑frps.ini,并修改为以下内容:
[common]
bind_port = 7000

执行以命令启动服务端,nohup ./frps -c frps.ini > 1.log 2>&1 &
这个时候服务端就启动了,可以访问日志文件1.log查看运行状态
3. 在内网服务器A上,编辑frpc.ini,并修改为以下内容

[common]
server_addr =  123.123.123.123
server_port = 7000
kcp_bind_port = 7000

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

[web0]
type = tcp
local_ip = 127.0.0.1
local_port = 8002
remote_port = 8002
  • common是监听端口,需要和服务器B上的7000保持一致;
  • ssh表示ssh登录的端口,tcp表示使用tcp连接,local_iplocal_port是指要登录的机器和端口,也就是本机的22端口;remote_port表示远方端口。这个部分可以实现将远程服务器的8001端口转发到本地的22端口上,即可实现ssh登录
  • web0web服务端口,这个名称web0可以自定义,这个部分可以实现将远程服务器的8002端口映射到本地的8002端口上。

在A上执行以命令启动客户端,nohup ./frpc -c frpc.ini > 1.log 2>&1 &
4. 在本地机器上,通过以下命令连接服务器:

ssh [email protected] -P 8001

这里username是内网服务器A上的用户名,123.123.123.123是公网服务器的IP。
这条命令先访问公网服务器B的8001端口,然后通过端口frp的端口映射,将8001端口转为内网服务器的22端口,这样就在外网通过ssh连上内网的服务器A了。

也可以访问远程服务器的8002端口,来访问内网服务器A上的8002端口,前提是A上的8002端口开启了相关服务。

123.123.123.123:8002

你可能感兴趣的:(服务器,linux,运维)