内网穿透用服务器转发实现公网访问本地内网 frp服务搭建

简介
frp全名Fast Reverse Proxy, 是一个可用于内网穿透的高性能的反向代理应用,主要用于解决一些内网服务没有公网ip但是却需要提供外网访问的问题。使用frp可以将内网中的TCP、UDP、HTTP、HTTPS等协议类型的服务发布到公网,并且支持Web服务根据域名进行路由转发。
优点:小巧方便,部署简单

截至本文完成,frp的最新版本为v0.36.1,本文使用最新版本。
 

前置准备

  • 云服务器一台(或者有公网ip的机器);

  • 内网服务器一台;

  • Frp脚本文件;

  • 域名一个(可选);

  • 基本linux操作命令。

下载脚本部署文件

下载地址:https://github.com/fatedier/frp/releases

注意事项:
1)服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透
2)根据服务器系统选择合适的脚本

Frp 结构很简单,分为 frps/frpc 两个可执行程序,在有公网地址的 VPS 上运行 frps 然后在家中内网运行 frpc 就行:

1、 查看结果,如果是“X86_64“即可选择”amd64”,

2、运行如下命令,根据架构不同,选择相应版本并进行下载
SSH连接到VPS之后运行如下命令查看处理器架构,根据架构下载不同版本的frp(以下两种命令均可)

arch

uname -m

3、新建目录 mkdir -p /usr/local/frp,上传frp_0.36.1_linux_amd64.tar.gz至linux服务器该目录下

4、解压tar -zxvf  frp_0.36.1_linux_amd64.tar.gz

5、改个名字    cp -r frp_0.36.1_linux_amd64 frp

6、进入解压目录cd frp_0.36.1_linux_amd64,这里主要关注4个文件,分别是frpc、frpc.inifrps、frps.ini,前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。

脚本主要分为服务端与客户端文件
1.服务器端用到的是Frps和Frps.ini
2.客户端用到的是Frpc和Frpc.ini

一、外网服务端配置

比如想把家中服务器的 ssh 端口 22 代理代理到外网 vps 202.115.8.1:221 上,那么在 vps 上编辑 frps.ini 配置文件:vim frps.ini

[common]
bind_port = 7000
dashboard_port = 7500
token = 12345678
dashboard_user = admin
dashboard_pwd = admin
#该端口就是以后访问web服务需要用到的端口
vhost_http_port = 10080
vhost_https_port = 10443

如果没有必要,端口均可使用默认值,token、user和password项请自行设置。

  • “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
  • “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
  • “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
  • “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
  • “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用。

个人配置如下

端口自行配置  修改完后 启动 frps

注:需要切换到文件目录

./frps -c frps.ini

如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。

此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面

服务端后台运行

至此,我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用 nohup命令将其运行在后台。

后台启动:nohup ./frps -c ./frps.ini &

如果您出现了此类错误:在使用nohup命令的时候,经常由于输出nohup.out的路径没有写入权限,而无法使用nohup。

这是可以使用Linux重定向的方法,将nohup.out重定向至一个有写入权限的路径,或者直接扔到/dev/null中。

nohup ./program >/dev/null 2>/dev/null &     program 为你的项目文件

此教程直接执行下面语句

nohup ./frps </dev/null &>/dev/null &

再执行上面的后台启动命令

这样就会后台启动

二、内网客户端配置

同样地,根据客户端设备的情况选择相应的frp程序进行下载,Windows下下载和解压等步骤不再描述。(这里仅介绍centos)

[common]
#外网-服务器端ip
server_addr = xx.xx.xx.xx
#外网-服务器端监听的端口(必须与Frps.ini中的配置一致)
server_port = 7000    #与服务端bind_port一致

公网通过ssh访问内部服务器
[ssh]
type = tcp              #连接协议
local_ip = 192.168.40.128 #内网服务器ip
local_port = 22         #ssh默认端口号
remote_port = 6000      #自定义的访问内部ssh端口号

[web]
#配置类型为http协议
type = http
#内网机器的IP
local_ip = 127.0.0.1
#内网需要监听的端口
local_port = 80
#公网服务器的IP或者已解析的域名    这里如果你填了域名 请千万记得解析
custom_domains = xxx.xxxx.xxxx

如果上方代码custom_domains填的域名没有解析 ,则会出现以下情况!!!

所以一定要记得填的域名必须解析到对应服务器 

下面是我个人配置:

启动命令: ./frpc -c frpc.ini          这是前台启动

客户端后台运行

 

后台启动命令:nohup ./frpc -c ./frpc.ini &

如果还是出现问题 显示下面这个就还是在本地的虚拟机执行上面服务器中那个命令

nohup: ignoring input and appending output to 'nohup.out'

服务器开启后台启动成功了有时候也会出现上面的东西,请自行检查穿透是否成功!!

参考网址:

猜你喜欢

转载自blog.csdn.net/q1246192888/article/details/115024955