(一)FRP介绍与应用场景介绍:frp与ngwork一样,用于内网穿透,即对于没有公网ip的网络环境中将该网络中的服务(http,ssh等)给暴露出去。其中frp分为两个部分:frps服务端,frpc客户端。前提条件:一台具备公网ip的服务器,可安装frps(frp服务端)内网环境中存在一个终端(可以是服务器本身,也可以是网关【路由器】)可安装frpc(frp客户端)一个域名,可以配置多个子域名A类地址解析拓扑图:对以上图的描述:公网服务器需要运行frps服务,并暴露两个端口A,B,前者是frp服务的服务端口,用于frpc的连接,后者是虚拟的http端口,用于外界访问,从而间接的访问到frpc所在内网服务。内网路由/服务器需要运行frpc服务,并配置与公网服务器frps的连接,然后配置局域网内需要暴露的服务(ip+端口),并指定一个域名,这个域名通常是服务器的所绑域名的二级域名。由于frpc可以配置多个局域网内服务,但frps对外的虚拟http端口只有一个,要使外部定向到不同的内网服务,就需要使用二级域名来区分。二级域名仅是用于区别定向到不同的内网服务的,他们A类地址解析值都相同。(二)安装与服务配置官方文档:通过自定义域名访问内网的 Web 服务 | frp服务端配置[1]下载压缩包并解压
tar -zxvf frp_0.38.0_linux_amd64.tar.gz
[2]编辑配置文件frps.ini其中bind_port为frp服务端口,token为密钥,设置后要求客户端配置相同,dashboard_xxx为frp的可视化监视网站配置,指定端口和登录的账号密码,vhost_http_port为虚拟http服务端口。
[common]bind_port = 7000token = 123456dashboard_user = zuikakudashboard_pwd = 123456dashboard_port = 7500vhost_http_port = 88
Tips:确保涉及的端口防火墙已放开[3]启动服务
nohup ./frps -c frps.ini >frp.log &
客户端配置(以老毛子路由器为例)[1]找到frp模块,设置为客户端模式[2]编辑配置文件(必须在局域网ip:192.168.123.1下才可编辑)定位到客户端处:
# ==========客户端配置:==========[common]server_addr = 139.224.231.81server_port = 7000token = 660317[web]type = httplocal_ip = 192.168.123.1local_port = 80custom_domains = internal.zuikakuedu.top[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000# ====================
Tips:[name]可以随意定义,但不能相同,若相同,后面的将会覆盖前面的
测试访问HTTP服务:使用对应内网服务所配置的custom_domains二级域名:vhost_http_port来进行访问SSH服务:使用服务器地址:对应remote_port来处理Tips:所有的TCP服务都可以这样进行映射,比如MySQL tcp:3306,远程控制tcp:3389,docker:2375等