美文网首页工具癖
frp内网穿透简易教程

frp内网穿透简易教程

作者: cf45965ab317 | 来源:发表于2018-10-24 13:40 被阅读24次

    frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。
    本文教程原发时间为2016年,只测试过老版本,新版本的frp服务并未测试。本文仅做参考。

    项目开源地址:
    https://github.com/fatedier/frp
    中文官方文档:
    https://github.com/fatedier/frp/blob/master/README_zh.md
    官网下载地址:
    https://github.com/fatedier/frp/releases
    备用下载地址:
    http://pan.baidu.com/s/1bp3Nk2j

    1.穿透案例一 (标准用法)

    工具:一台内网主机(A:12.34.56.78),一台外网主机(B:1.1.1.1),frp程序。
    本文将使用作者编译好的程序,有兴趣可以根据作者的文档对源程序自己进行编译。
    下载符合自己系统架构的版本,然后解压。
    其中以下四个文件需要特别留意:
    frpc:客户端脚本
    frpc.ini :客户端脚本配置文件
    frps:服务器端脚本
    frps.ini:服务器端脚本配置文件

    将服务器端脚本及配置文件上传到外网主机(B)上,将客户端脚本及配置文件上传到内网网主机(A),
    然后编辑服务器端脚本文件frps.ini:

    [common]
    bind_addr =12.34.56.78    #服务器端监听的IP地址,多网卡时候需要可以设置,可省
    bind_port = 7000   # 用于接收 frpc 连接的端口
    log_file = ./frps.log  #log 文件,可省
    log_level = info   # 记录日志的级别,可省
    dashboard_port = 750   # web页面端口,可省
    
    [ssh]  # ssh 为代理的自定义名称,可以有多个,不能重复,和frpc中名称对应
    auth_token = 123   #服务器端和客户端认证口令,一致才能认证通过
    bind_addr =  12.34.56.78   #服务器端监听的IP地址,多网卡时候需要可以设置,可省   
    listen_port = 6000  # 最后将通过此端口访问后端服务
    
    [web01]
    auth_token = 123
    bind_addr = 12.34.56.78
    listen_port = 1111  # 最后将通过此端口访问后端服务
    

    编辑客户端脚本文件frpc.ini:

    server_addr = 12.34.56.78  # frps 所在服务器绑定的IP地址
    server_port = 7000  #服务器端的IP地址
    log_file = ./frpc.log   #log 文件,可省
    log_level = info   # 记录日志的级别,可省
    auth_token = 123  #服务器端和客户端认证口令,一致才能认证通过
    
    [ssh]  # ssh 需要和 frps.ini 中配置一致
    local_port = 22  # 需要转发的本地端口
    use_encryption = true  # 启用加密,frpc与frps之间通信加密,默认为 false
    
    [web01]
    type = http
    local_ip = 12.34.56.78
    local_port =80
    use_gzip = true
    pool_count = 1111  #服务器端用于转发开启的端口
    

    配置完成后,先启动服务器端服务(启动时候会占据并且不会释放终端,可以借助screen、nohup等命令进行剥离)
    ./frps -c ./frps.ini
    ss -ntlp 检查配置文件中设置的端口是否开启,按照经验来说,终端未释放就可以说明服务已启动。
    再启动客户端
    ./frpc -c ./frpc.ini
    按照经验来说,终端未释放就可以说明服务已启动。
    当然也可以直接访问A主机对应B主机服务的端口测试,访问地址http://12.34.56.78:1111。
    也可以访问 http://12.34.56.78:7500 查看。

    2. 穿透案例二(域名泛解)

    在frpc.ini和frps.ini的对应服务器段(如:[web01])下添加:
    custom_domains = web01.mykernel.cn
    注意:域名必须存在,你自己可以解析。
    解析格式如下(这种写法可以直接在配置文件中定义二级域名了,不需要单独再去域名提供商那里做额外的解析):

    *         CNAME         mykernel.cn
    @         A                   12.34.56.78
    

    当然也可以直接指定单个的二级域名进行解析。
    此时访问地址可以为web01.mykernel.cn:1111,若要使用80端口,请备案域名或者使用国外主机。

    3. 穿透案例三(docker部署frps)

    注意:以下文件都必须放在同一个文件夹内。

    1. 文件一:Dockerfile

    #设置继承镜像
    FROM ubuntu:14.04
    #提供一些作者的信息
    MAINTAINER mykernel(www.mykernel.cn)
    #下面开始运行命令,此处更改ubuntu的源为国内163的源
    RUN echo "deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list
    RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list
    RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
    RUN apt-get update
    #更改系统时区
    RUN echo "Asia/Shanghai" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
    #为了避免ubuntu发生不必要的错误,所以建议更新下系统的时区设置,因为在 web 应用中经常会用到时区这个系统变量。
    RUN mkdir -p /frp
    #复制配置文件到相应位置,并赋予脚本可执行权限
    ADD  frps /frp
    ADD frps.ini /frp
    ADD run.sh /run.sh
    RUN chmod 755 /run.sh
    EXPOSE 81
    EXPOSE 7500
    EXPOSE 6000
    #设置自启动命令
    CMD ["/run.sh"]
    
    

    2. 文件二 frps

    frps运行程序,百度云链接,自取。

    http://pan.baidu.com/s/1kVLhMBX
    密码:ah3f

    3. 文件三 frps.ini

    [common] 
    #bind_addr = 120.27.112.196 # 用于接收 frpc 连接的端口 
    bind_port = 7000 
    log_file = ./frps.log 
    log_level = info 
    dashboard_port = 7500 # ssh 为代理的自定义名称,可以有多个,不能重复,和frpc中名称对应
     [ssh1] 
    auth_token = 123 
    bind_addr = 0.0.0.0 # 最后将通过此端口访问后端服务
     listen_port = 6000 
     [web02] 
    auth_token = 123 
    bind_addr = 0.0.0.0 
    # 最后将通过此端口访问后端服务 
    listen_port = 81
     custom_domains = frp2.mykernel.cn
    

    4. 文件四 run.sh

    vim run.sh
    #文件内容如下:
    #! /bin/bash 
     cd /frp
    ./frps -c ./frps.ini ~   
    

    5. 编译并启动容器

    #编译dockerfile文件
    docker build -t frp .
    
    #启动编译好的docker镜像
    docker run --name frp -p 81:81 -p 6000:6000 -p 7500:7500 -p 7000:7000 -d  frp
    
    #查看服务示范启动
    docker ps
    #或者
    ss -ntlp查看宿主机端口是否开启
    

    个人小站:http://www.mykernel.cn

    相关文章

      网友评论

        本文标题:frp内网穿透简易教程

        本文链接:https://www.haomeiwen.com/subject/sonttqtx.html