frp实现内网穿透(centos7)

说明

参考网络上其他人文章。将他人技术文章亲自测试并总结补充。
实现内网穿需要有一台公网服务器,域名。(本文将公网服务器称为服务端,内网服务器称为客户端)
(需要开启相关的端口。相关端口没开通,访问就会失败。)

frp下载地址:http://getfrp.yzxx-soft.com/
https://github.com/fatedier/frp
本文使用软件:frp_0.8.1_linux_amd64.tar.gz
本文使用系统:centos7(公网一台,内网一台),其他系统配置类似
本文使用a.com代替实际域名,10.10.10.10代替实际公网ip,实际中请使用自己的域名和ip并解析到服务端
主域名:a.com
公网服务器ip:10.10.10.10
内网服务器ip:192.168.198.229

centos7 frp安装和配置(其他系统配置类似)

  1. 将软件下载到服务器和客户端(服务端和客户端相同)
    解压frp软件包

    1
    tar -zxvf frp_0.8.1_linux_amd64.tar.gz

    进入解压后的文件夹

    1
    cd frp_0.8.1_linux_amd64

    文件说明

    frps.ini: 服务端配置文件
    frps: 服务端软件
    frpc.ini: 客户端配置文件
    frpc: 客户端软件

  2. 修改服务端配置
    修改服务端frps.ini

    1
    vi frps.ini

    修改如下内容(由于本文为测试,所以将原配置文件清空),或对照如下修改。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [common]
    bind_port = 7000
    vhost_http_port = 80
    [ssh]
    listen_port = 6000
    auth_token = 123
    [web]
    type = http
    custom_domains = test1.a.com
    auth_token = 123
    [web2]
    type = http
    custom_domains = test2.a.com
    auth_token = 123

    开启服务端服务(在frp_0.8.1_linux_amd64目录下)

    1
    ./frps -c ./frps.ini

    服务端出现如下启动成功

    配置说明

    [common] 必须设置
    bind_port 是自己设定的frp服务端端口
    vhost_http_port 是自己设定的http访问端口
    [ssh] ssh反向代理(不是必须设置)
    listen_port 是自己设定的ssh访问端口
    auth_token用于身份认证(以下皆是)。
    [web] http反向代理[]里的内容可以自己设定,但是客户端和服务端必须要对应(如[aaa],[bbb]);
    type 为服务类型,可以设为http,https
    custom_domains为要映射的域名,记得域名的A记录要解析到外网主机的IP。
    [web2]同上(可设置多个)

  3. 修改客户端配置(win系统找到相应配置文件进行类似配置)
    修改服务端frpc.ini

    1
    vi frpc.ini

    修改如下内容(由于本文为测试,所以将原配置文件清空),或对照如下修改。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [common]
    server_addr = 10.10.10.10
    server_port = 7000
    auth_token = 123
    [ssh]
    local_port = 22
    [web]
    type = http
    local_port = 80
    [web2]
    type = http
    local_port = 8080

    开启客户端服务(在frp_0.8.1_linux_amd64目录下)

    1
    ./frpc -c ./frpc.ini

    客户端出现如下启动成功

    配置说明

    [common]必填
    server_addrfrp服务端的ip(也就是外网主机的IP)
    server_portfrp服务端的bind_prot。
    [ssh]
    local_port客户端ssh端口。
    [web]
    type对应服务端配置
    local_port客户端访问端口。
    [web2]同上

测试(本文中客户端已经装了Nginx服务)

  1. http测试
    访问内网http://192.168.198.229

    访问域名http://test1.a.com
  2. ssh连接内网机器测试(linux系统)
    连接设置

    连接结果
  3. win系统也可通过tcp远程桌面连接,只需要把客户端端口改成win远程默认端口:3389。

后台启动(使用nohup,以服务端为例子,客户端类似)

启动(进入frp目录)

1
nohup ./frps -c ./frps.ini &     #启动服务端 带&符号


启动后会返回相关的pid
关闭

1
2
kill 19619                     #输入你系统中返回的pid
kill -9 $(pidof frps) #或者使用这个命令关闭,$(pidof frps)中frps为进程名称客户端为frpc

查看状态

1
netstat -antpl                 #看到7000端口说明后台启动成功(配置文件中配置的frp服务端口)