内网穿透-frp工具使用

前景

有时想要让其他人通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能。

frp是什么

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
架构
在这里插入图片描述

使用示例

本次使用 frp做内网穿透的小测试,作为测试环境使用,本文章仅做学习使用,若有疑问请在本文留言,
本次示例来源于github :https://github.com/fatedier/frp,
请关注 frp中文文档

准备:

软件下载:https://github.com/fatedier/frp/releases

  1. frp_0.24.1_linux_amd64.tar.gz
  2. frp_0.24.1_windows_amd64.zip

涉及到的系统

服务器:CentOS Linux release 7.3.1611 (Core)
本地计算机:window10

文件存放

将 frps 及 frps.ini 放到具有公网 IP 的机器上。
将 frpc 及 frpc.ini 放到处于内网环境的机器上。

1. 修改服务器上 frps.ini 文件

设置 http 访问端口为 8080,该端口为外网访问的端口,记得防火墙和安全组都开放这个端口。
frps.ini内容如下:
[common]
bind_port = 7000
vhost_http_port = 8080
frps启动成功后标识如下:
2019/02/26 08:46:26 [I] [service.go:124] frps tcp listen on 0.0.0.0:7000
2019/02/26 08:46:26 [I] [service.go:166] http service listen on 0.0.0.0:8080
2019/02/26 08:46:26 [I] [root.go:204] Start frps success

2.服务器上启动 frps

启动命令如下:

./frps -c ./frps.ini

frps shell启动脚本记录

##! /bin/bash
## frp所在目录
SERVER=/opt/data/frp
cd $SERVER

start(){
    echo "启动"
    nohup   ./frps -c frps.ini > frp.out 2>&1 & 
    echo $! > $SERVER/server.pid
    echo "启动成功"
}

stop(){
    echo "暂停"
    if [ ! -d "$SERVER/server.pid" ]; then
      kill `cat $SERVER/server.pid`
      rm -rf $SERVER/server.pid
      echo "暂停成功"
    else
      echo "没有进程可以杀死"
    fi
}

restart(){
    echo "开始重新部署"
    stop
    sleep 1
    start
}

restart

3.修改本地frpc.ini 文件

假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 www.yourdomain.com:

frpc.ini内容如下
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com

4.本地启动frpc

dos 命令行 启动 frpc:

frpc.exe -c frpc.ini

本地启动成功打印日志如下

2019/02/25 19:09:28 [I] [service.go:214] login to server success, get run id [4c598326abd6bdf2], server udp port [0]
2019/02/25 19:09:28 [I] [proxy_manager.go:137] [4c598326abd6bdf2] proxy added: [web]
2019/02/25 19:09:28 [I] [control.go:143] [web] start proxy success

服务器端相应打印日志如下

2019/02/25 19:09:30 [I] [service.go:317] client login info: ip [110.87.117.91:10341] version [0.24.1] hostname [] os [windows] arch [amd64]
2019/02/25 19:09:30 [I] [http.go:67] [4c598326abd6bdf2] [web] http proxy listen for host [www.yourdomain.com] location []
2019/02/25 19:09:30 [I] [control.go:397] [4c598326abd6bdf2] new proxy [web] success

5.通过域名访问

通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上的 web 服务。

总结:

本例子使用的是域名来进行内网穿透,frp还有更多功能待研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值