内网穿透的技术有很多,常用的方法有:

    • ssh/autossh
    • ngfork
    • frp (本文将介绍该方法)

    github地址:https://github.com/fatedier/frp
    frp为传统的C/S结构,可分为客户端和服务端,其中

    • frpc(客户端) 运行在内网环境
    • frps(服务端)运行在有公网IP的服务器

    ${R(6A`5]8FLP]}1$XVVA2S.png
    frp 运行原理
    编写frpc.ini文件,例如:
    [common] server_addr = 公网IP server_port = frps运行的端口 token = 一串随机字符用来防止未经授权的使用 [appName] type = tcp local_ip = 127.0.0.1 local_port = 需要映射的本地端口 remote_port = 映射成公网服务器的端口
    服务器端frps.ini就更简单了
    [common] bind_port = 服务端运行的端口 token = 一串随机字符用来防止未经授权的使用 ;允许被使用的端口范围 allow_ports = 40000-50000
    假设frps 运行在 1.2.3.4:34567,客户端(192.168.1.5)把本机的80端口映射成了38888端口,则链路如下
    192.168.1.5:80 <-> 1.2.3.4:34567 <-> 1.2.3.4:38888
    提高映射服务可靠性
    请使用supervisor分配守护frpc/frps即可达到理想可靠性