hezpupil

frp实现内网穿透
一、frp的作用利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。对于 http, h...
扫描右侧二维码阅读全文
12
2019/04

frp实现内网穿透

一、frp的作用

  1. 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
  2. 对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
  3. 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

二、配置说明

  1. 实现功能
    1)外网通过ssh访问内网机器
    2)自定义绑定域名访问内网web服务
  2. 配置前准备
    1)外网通过ssh访问内网机器
    2)内网服务器1台(支持Windows、Linux、FreeBSD、Darwin)
    3)公网服务器绑定域名1个(实现外网连接内网服务器功能不需要公网服务器绑定域名,访问内网WEB功能必须需要公网服务器绑定域名)
    4)内网服务器部署一个web服务(支持任何web环境),这里就不演示了

三、安装frp

  1. 公网服务器与内网服务器都需要下载frp进行安装,公网服务器(服务端)配置关注步骤6,内网服务器(客户端)关注步骤7
  2. 下载地址是https://github.com/fatedier/frp/releases,下载linux版本frp_0.26.0_linux_amd64.tar.gz,个人感觉下载速度有点慢,也可以这样选择下载

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

  1. 新建目录mkdir -p /usr/local/frp,上传frp_0.26.0_linux_amd64.tar.gz至linux服务器该目录下
  2. 解压tar -zxvf frp_0.26.0_linux_amd64.tar.gz
  3. 进入解压目录cd frp_0.26.0_linux_amd64,这里主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件。
  4. 配置服务端(公网服务器),首先删掉frpc、frpc.ini两个文件,然后再进行配置,vi ./frps.ini,

[common]
bind_port = 7000 #与客户端绑定的进行通信的端口
vhost_http_port = 81 #访问客户端web服务自定义的端口号
保存然后启动服务./frps -c ./frps.ini,这是前台启动,后台启动命令为nohup ./frps -c ./frps.ini &

  1. 配置客户端(内网服务器),首先删掉frps、frps.ini两个文件,然后再进行配置,vi ./frpc.ini

[common]
server_addr = 120.56.37.48 #公网服务器ip
server_port = 7000 #与服务端bind_port一致

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

#公网通过远程桌面访问内部Windows服务器
[yuancheng]
type = tcp #连接协议
local_ip = 192.168.3.48 #内网服务器ip
local_port = 3389 #远程桌面默认端口号
remote_port = 6001 #自定义的访问内部远程端口号

#公网访问内部web服务器以http方式
[web]
type = http #访问协议
local_port = 8081 #内网web服务的端口号
custom_domains = test.domain.com #所绑定的公网服务器域名,一级、二级域名都可以

Linux系统
保存然后执行./frpc -c ./frpc.ini启动,这是前台启动,后台启动命令为nohup ./frpc -c ./frpc.ini &
Windows系统
保存后在同目录新建一个bat文件 写入 frpc.exe -c frpc.ini 打开bat文件即可启动(不能关闭)

  1. 访问方式
    1)外网ssh访问内网服务器(直接使用配置里面数据演示)

     120.56.37.48  port:6000   用户名:linux服务器的用户  密码:linux服务器的密码        或者
     test.domain.com  port:6000   用户名:linux服务器的用户  密码:linux服务器的密码

    1)外网远程访问内网服务器(直接使用配置里面数据演示)

     120.56.37.48  port:6001   用户名:Windows服务器的用户  密码:Windows服务器的密码        或者
     test.domain.com  port:6001   用户名:Windows服务器的用户  密码:Windows服务器的密码

    3)自定义绑定域名访问内网web服务(直接使用配置里面数据演示)
    test.domain.com:81

Last modification:April 12th, 2019 at 12:06 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment