使用frp实现内网穿透

使用frp实现内网穿透如远程访问校园内网服务器:frp-Github链接

frp安装

可以根据需求下载对应的文件版本,推荐使用Windows_amd64和Linux_amd64版本,具体还需要根据机子情况。下载链接

frp环境部署

frp 主要由 客户端(frpc)服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。以阿里云WinServer2008作为公网IP服务器和Win10作为内网机子为例。

首先下载frp_0.33.0_windows_amd64版本,之后配置客户端文件,打开frpc.ini。

image-20200917153330438

[common]
server_addr = x.x.x.x  #填写公网服务器IP
server_port = 7000     #这个端口指的是客户端与服务端通信使用的端口

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389      #SSH使用22端口 windows系统使用3389端口
remote_port = 6000     #这个端口是指通过x.x.x.x:6000访问内网机子的转发端口

注意若使用云服务器,在服务器的安全组中要把端口7000、6000(可自定义)都进行开放,否则连接不上。服务端使用默认配置文件不需要更改。

配置好文件之后,启动即可,windows的话需要使用cmd打开,可自写bat文件启动。

想要多客户端配置就在不同客户端上面使用不同端口启动即可:

[common]
server_addr = x.x.x.x  #填写公网服务器IP
server_port = 7000     #这个端口指的是客户端与服务端通信使用的端口

[ssh2] # 不同客户端需要不同的名字
type = tcp
local_ip = 127.0.0.1
local_port = 3389      #SSH使用22端口 windows系统使用3389端口
remote_port = 6006     #这个端口是指通过x.x.x.x:6000访问内网机子的转发端口

若需要配置web服务需要更改服务器和客户端文件如下:

frps.ini服务端配置文件

[common]
bind_port = 7000
vhost_http_port = 6001 # 访问6001端口,映射到内网web服务

frpc.ini客户端配置文件

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000

[web]
type = http
local_port = 8080 # 访问本地8080web服务
custom_domains = www.xxx.cn # 必须已经备案

客户端启动:

image-20200917153940979

服务端启动:

img

连接测试图:

image-20200917154424554

frp仪表盘配置

通过frp自带仪表盘控制界面 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示

image-20201125194746816

要使用这个功能首先需要在 FRP 服务端配置文件 frps.ini 中指定 Dashboard 服务使用的端口:

# frps.ini 内容
[common]
bind_port = 7000

# 指定 仪表盘控制界面 Dashboard 的监听的 IP 地址 //0.0.0.0 为所以IP均可访问
dashboard_addr = 0.0.0.0

# 指定 仪表盘控制界面 Dashboard 的监听的端口,默认为 7500
dashboard_port = 7500

# 指定访问 仪表盘控制界面 Dashboard 的登录用户名
dashboard_user = admin

# 指定访问 仪表盘控制界面 Dashboard 的登录用户密码
dashboard_pwd = admin123

在frp目录下输入【frps -c frps.ini】命令重新启动 frps 服务端

image-20201125200243063

出现start frps success即启动好服务,注意在阿里云开放对应端口7500.

nssm将frp注册为win10服务

为了方便frp在win10启动,可以设置为服务,让其后台自启。

首先下载nssm,官网链接

NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。它的特点如下:

  1. 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
  2. 安装简单,修改方便
  3. 可以重定向输出(并且支持Rotation)
  4. 可以自动守护封装了的服务,程序挂掉了后可以自动重启
  5. 可以自定义环境变量

服务安装:

服务安装可以使用如下命令(注意使用管理员运行): nssm install servicename

image-20201125201148191

执行此命令后,会出现一个界面,基本上看着就知道怎么用了,大多数情况下,只需要填第一个界面的程序路径就可以了。

其它界面的是高级参数的配置,可以根据需要自行选择。

参数填完后执行"install service"按钮即可将服务安装到系统,可以使用系统的服务管理工具查看了。

当然,如果要自动化安装,可以直接带上程序路径: nssm install servicename program [arguments]

NSSM本身win7及以上的系统基本都是支持的,我测试过win7,2008,2016系统,都是没有问题的,如果安装失败,请首先检查是否装了某国产管家或国产杀毒软件。

安装完成后,服务还没有启动,需要通过下面的服务管理的命令启动服务。

服务管理:

服务管理主要有启动、停止和重启,其命令如下:

  • 启动服务:nssm start servicename
  • 停止服务:nssm stop servicename
  • 重启服务:nssm restart servicename

当然,也可以使用系统自带的服务管理器操作和使用系统的命令。

修改参数:

NSSM安装的服务修改起来非常方便,命令如下:

nssm edit servicename

会自动启动操作界面,直接更改即可。

服务删除:

服务删除可以使用如下命令之一:

  • nssm remove servicename
  • nssm remove servicename confirm

功能没有大的区别,后面的命令是自动确认的,没有交互界面。

建议

  • 如果有自己的域名,可以将域名解析到公网ip上面,这样只需要根据域名即可进行远程连接。
  • frp是需要公网的机子,若无公网机子,可以考虑花生壳、NatApp等软件进行内网穿透。
posted @ 2020-09-17 15:54  国-哥  阅读(10873)  评论(0编辑  收藏  举报