Ubuntu 18.04 使用FRP 内网穿透,映射内网Web服务至公网

对于开发来说高昂的服务器费用一点都不想承担,于是想到了[内网穿透],在经过对比后最终选择了 frp 来实现。于是在本机搭建了虚拟机来“趟雷”(Ubuntu 18.04),毕竟小白一枚(搭建虚拟机浪费时间过长,这里的心酸就不说了一定要留意设置的密码是什么,不然虚拟机重启后,真的进不去!!)

最终效果(域名自行购买):http://www.zhuhongmiaoq.com:8089 (如果打不开,不要慌可能是本机没在线)

打开看到 “Welcome to nginx!” 的就是本地服务

想要了解更多就实际操作一下吧

简单说明

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

使用说明

下载地址: https://github.com/fatedier/frp/releases

使用版本 frp_0.33.0_linux_amd64

将 frps 及 frps.ini 放到具有公网 IP 的机器上。

将 frpc 及 frpc.ini 放到处于内网环境的机器上。

使用示例说明:在这里只是简单映射了web应用端口

通过自定义域名访问部署于内网的 web 服务

公网服务器配置

有时想要让其他人通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能,以下示例为 http 服务,https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。

修改 frps.ini 文件,设置 http 访问端口为 8089

[common]

bind_port = 7000

vhost_http_port = 8089

启动 frps:

./frps -c ./frps.ini

成功结果!

内网服务器配置

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

[common]

server_addr = x.x.x.x

server_port = 7000

[web_9971]

type = http

local_port = 9971

custom_domains = www.yourdomain.com

#多个web项目可以这么配置(域名必须唯一)

[web_9972]

type = http

local_port = 9972

custom_domains = test.yourdomain.com

启动 frpc:

./frpc -c ./frpc.ini

成功结果!

将 www.yourdomain.com 的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。

通过 SSH 访问内网机器

修改 frps.ini 文件,这里使用了最简化的配置,设置了 frp 服务器端接收客户端流量的端口:

[common]
bind_port = 7000

启动 frps:

./frps -c ./frps.ini

修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x:

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

注意,local_port(客户端侦听)和 remote_port(服务器端暴露)是用来出入 frp 系统的两端,server_port 则是服务器用来与客户端通讯的。

以守护进行的方式运行,方式很多,我这里选择了nohup(偷懒) 
nohup ./frpc -c ./frpc.ini &

END 验证自定义域名访问

这里启动服务使用是容器的方式: 先安装 docker 安装方式这里不说了

新建 docker-compose.yml,复制以下代码可启动nginx服务进行验证

version: "3.6"

services:
    
    halobug-main:
        image: nginx:1.17.1-alpine
        restart: always
        ports: 
            - "9971:80"
        volumes:
            - /etc/localtime:/etc/localtime:ro
            - /etc/timezone:/etc/timezone:ro
            - ./logs:/var/log/nginx
        networks:
            - traefik
        labels:
            - "traefik.enable=true"
            - "traefik.docker.network=traefik"
            - "traefik.http.routers.halobug-main.entrypoints=http"
            - "traefik.http.routers.halobug-main.rule=Host(`halobug.local.cn`)"
            - "traefik.http.services.halobug-main-backend.loadbalancer.server.scheme=http"
            - "traefik.http.services.halobug-main-backend.loadbalancer.server.port=80"
        logging:
            driver: "json-file"
            options:
                max-size: "10m"
                
networks:
  traefik:
    external: true

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

END 验证SSH 登录

#ssh 就能登录了

ssh user@ip -p 6000

如果想了解更多使用方式 请点击这个详细的很:https://github.com/fatedier/frp/blob/master/README_zh.md

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值