[关闭]
@zhongdao 2018-03-26T10:23:40.000000Z 字数 2013 阅读 2373

通过frp实现访问内网ssh与http简明教程

1. 前言

当内网安装有服务例如ssh,web时,因为从公网无法访问内网,需要借助内网穿透的软件。
frp 是一个开源的可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。
frp的基本原理是在公网搭设一个具有公网ip的服务器,然后建立与内网的通道,转发所有的端口流量到内网相应服务器,实现了内网服务的对外提供。架构图如下:
image_1c7bb1plmbvjiqfp31vu11shn9.png-16.2kB

github上的官方说明内容太多,而且没有清晰的结构化和顺序,所以编写了如下教程,针对典型的ssh访问和web访问,给出了简明的步骤和说明,便于快速上手使用。

2. 下载与安装

各种平台的软件包下载地址:

  1. https://github.com/fatedier/frp/releases

包括linux, windows等不同版本。

下面以常见的linux 64位为过程演示

  1. mkdir ~frp
  2. cd ~frp
  3. wget https://github.com/fatedier/frp/releases/download/v0.16.0/frp_0.16.0_linux_amd64.tar.gz
  4. tar -zxvf frp_0.16.0_linux_amd64.tar.gz
  5. cd frp_0.16.0_linux_amd64/

因为下载的文件同时包含服务端和客户端,所以基本无需安装。

2.1. 公网服务器端:

将 frps 及 frps.ini 放到具有公网 IP 的机器上。

2.2. 内网客户端:

将 frpc 及 frpc.ini 放到处于内网环境的机器上。

3. 实现ssh与web访问所需配置

事先申请域名,将域名指向服务器的ip. 这里的域名为 p2pnet.club

3.1. 公网服务器端

编辑 frps.ini

  1. [common]
  2. bind_addr = 0.0.0.0
  3. bind_port = 7000
  4. # udp port to help make udp hole to penetrate nat
  5. bind_udp_port = 7001
  6. dashboard_port = 7500
  7. # dashboard 用户名密码,默认都为 admin
  8. dashboard_user = admin
  9. dashboard_pwd = admin
  10. vhost_http_port = 2780
  11. subdomain_host = p2pnet.club

可通过7500的管理端口来查看连接情况。 具体通过
http://ip:7500/ 来访问。

运行

  1. ./frps -c ./frps.ini

3.2. 内网客户端1

修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x;
需要注意多个客户端时字段区域section的 ssh, web的名字不要重复。可以通过ssh, ssh2,web,web2来改变。
ssh的端口在服务端不能重复,设置为7022,7023.

web通过二级域名office,home来区分,可以采用相同的端口配置,这里是2780。

  1. [common]
  2. server_addr = x.x.x.x
  3. server_port = 7000
  4. admin_addr = 127.0.0.1
  5. admin_port = 7400
  6. [ssh]
  7. type = tcp
  8. local_ip = 127.0.0.1
  9. local_port = 22
  10. remote_port = 7022
  11. [web]
  12. type = http
  13. local_port = 2780
  14. subdomain = office

3.3. 内网客户端2

  1. [common]
  2. server_addr = x.x.x.x
  3. server_port = 7000
  4. admin_addr = 127.0.0.1
  5. admin_port = 7400
  6. [ssh2]
  7. type = tcp
  8. local_ip = 127.0.0.1
  9. local_port = 22
  10. remote_port = 7023
  11. [web2]
  12. type = http
  13. local_port = 2780
  14. subdomain = home

3.4. 客户端相关命令

启动 frpc:

  1. ./frpc -c ./frpc.ini

修改配置文件重新载入frpc:

  1. ./frpc reload

查看frpc状态:

  1. ./frpc status

4. 访问

4.1. 访问服务器端的dashboard查看统计信息

  1. http://p2pnet.club:7500/

4.2. 访问内网ssh

通过 ssh 访问内网机器,假设用户名为 test:

  1. ssh -oPort=7022 test@x.x.x.x
  1. ssh -oPort=7023 test@x.x.x.x

4.3. 访问内网web

通过浏览器访问内网机器

  1. http://home.p2pnet.club:8080/
  2. http://office.p2pnet.club:8080/
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注