专栏首页乐百川的学习频道使用内网穿透工具frp

使用内网穿透工具frp

前几天写了篇文章用本机电脑搭建网站(域名、DNS解析),写完第二天发现我的网站访问不上去了。仔细研究了一下,发现我想的太简单了。很早一些时候,运营商会给我们分配一个公网IP地址,使用动态域名解析可以非常方便的搭建网站。但是现在一般运营商都是用NAT方式,我们只能得到一个大局域网的IP,所以这种方法就失效了。

因此,如果需要用自己电脑做服务器的话,我们只能使用花生壳这样的内网穿透工具了。花生壳的缺点就是只能使用人家给你分配的三级域名,而且免费套餐每个月只有1G流量,有时候还不太稳定。

后来,我又发现了一个工具——ngrok。这个东西倒是挺好用,速度、稳定性方面都不错。但是2.0版本开始和花生壳一样受限了。免费许可下只能使用随机分配的三级域名,临时用一下倒是还可以。如果想获取固定的子域名的话还得付费。

正在这时,我发现了一个工具——frp,完美解决了我的需求。所以就有了这篇文章,向大家介绍一下这个功能强大的工具。当然需要说一点,这个工具功能强大,没有限制,这个工具作者是自己人,所以有正宗的中文文档,大家可以看看。

下载

首先到下载页面下载对应版本的服务端和客户端。我的服务器是搬瓦工Ubuntu 16.04 64位,客户端是Windows 10 64位,所以下面都以我自己的为准。大家根据自己情况配置。

在搬瓦工上,执行下面的命令,下载frp服务器端。

cd /opt
sudo mkdir frp
cd frp
sudo wget https://github.com/fatedier/frp/releases/download/v0.9.3/frp_0.9.3_linux_amd64.tar.gz

然后解压,得到一个目录。

sudo tar xvf frp_0.9.3_linux_amd64.tar.gz

进入该目录,可以看到列出了一系列文件。

$ ls
LICENSE  frpc  frpc.ini  frpc_min.ini  frps  frps.ini  frps_min.ini

配置服务端

打开frps.ini文件,配置为类似下面这样的。custom_domains是自定义域名,如果有自己的域名就写到这里。auth_token是验证凭据,服务端和客户端的凭据必须一样才能连接,当然为了安全还是设置长一点。·dashborad`的三个配置是仪表盘功能的端口以及用户名和密码,为了安全也要设置的长一点。

[common]
bind_addr = 0.0.0.0
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
dashboard_port = 7500
dashboard_user = XXX
dashboard_pwd = XXX

privilege_mode = true
privilege_token = 12345678

[http]
type = http
auth_token = 12345678
custom_domains = www.lionan.me

[https]
type = https
auth_token = 12345678
custom_domains = www.lionan.me

启动服务端

使用./frps -c ./frps.ini即可启动服务器端。然后应该会显示类似下面的文本,说明服务端启动成功。

2017/05/09 19:56:19 [main.go:194] [I] Start frps success
2017/05/09 19:56:19 [main.go:196] [I] PrivilegeMode is enabled, you should pay more attention to security issues

然后访问服务器的7500端口(前面服务端设置的仪表盘端口),输入用户名和密码之后应当可以看到frp的仪表盘。

设置自启

服务端虽然启动了,但是不能就这么算了。这个进程最好可以向Windows服务那样拥有一个状态,可以开机自启。我们使用Linux下常用的进程管理器supervisor来管理该服务。

首先需要安装supervisor。

sudo apt install supervisor

然后在/etc/supervisor/conf.d下新建一个配置文件frp.conf,输入以下内容。command应该是你放置frp软件的位置。

[program:frp]
command = /opt/frp/frp_0.9.3_linux_amd64/frps -c /opt/frp/frp_0.9.3_linux_amd64/frps.ini
autostart = true

然后启动supervisor,如果事先已经安装好了supervisor那么就重新启动。之后查看一下supervisor的运行状态,看看frp是否已在运行。

# 重启supervisor
sudo systemctl restart supervisor
# 查看supervisor运行状态
sudo supervisorctl status

配置客户端

打开Powershell,然后输入下面的命令下载客户端。

 wget https://github.com/fatedier/frp/releases/download/v0.9.3/frp_0.9.3_windows_amd64.zip -OutFile frp.zip

下载完成后,双击解压,得到一系列文件。然后双击打开frpc.ini,进行配置。server_addr为服务器的IP地址。server_port为服务器端口号,需要和服务器端配置相同。auth_token为凭据,需要和服务器端配置相同。local_iplocal_port用于设置本地Web服务器的IP和端口号。所以你也可以想到,不仅这里可以填写运行frp客户端的主机,还可以填写在本局域网中可以访问到的其他主机的IP地址。

[common]
server_addr = XXXX
server_port = 7000
auth_token = XXXX
privilege_token = 12345678

[http]
type = http
local_ip = 127.0.0.1
local_port = 80

[https]
type = https
local_ip = 127.0.0.1
local_port = 443

然后使用./frpc -c .\frpc.ini运行客户端。如果客户端显示类似这样的消息,说明和服务端连接成功。然后用自定义域名访问试试,看看能不能解析到你的本地网站。

2017/05/09 19:35:31 [control.go:206] [I] ProxyName [http], connect to server [XXX:7000] success!
2017/05/09 20:17:54 [control.go:220] [I] Start to send heartbeat to frps

设置自启

每次运行客户端都需要打开一个命令提示符窗口,很麻烦也不方便。有没有什么办法能够让客户端以Windows服务的方式在后台默默运行呢?答案当然是有的。正好我前段时间写了一篇用winsw让任何Windows程序都能运行为服务,完美解决了这个问题。

下载就不说了,直接看我的那篇文章即可。下面只说说配置。我这里是将winsw.exefrpc.exe放到了一起,这样只需要直接填写程序名称。然后在和winsw.exe同级的目录下,新建winsw.xml文件,输入以下内容。

<service>
    <id>frp</id>
    <name>frp</name>
    <description>用frp发布本地电脑网站到外网</description>
    <executable>frpc</executable>
    <arguments>-c frpc.ini</arguments>
    <logmode>reset</logmode>
</service>

然后打开管理员权限命令提示符,使用下面的命令安装并启动服务。

winsw install
winsw start

这样,一个自定义内网穿透的网站就搭建完成了。当然,frp的功能还不仅于此。如果看看官方文档的话,就会发现它不仅可以将本地网站映射到外网,还可以用作反向代理、自定义DNS服务器等等,功能非常强大。怪不得在Github上这个项目有高达4000的星星数。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 内网穿透工具frp简易教程

    版权声明:本文为博主原创文章,转载请注明出处。 ...

    乐百川
  • Visual Studio Code 1.35更新:远程开发终于来啦

    版权声明:本文为博主原创文章,转载请注明出处。 ...

    乐百川
  • 系统安装部署系列教程(五):精简母盘和集成补丁

    版权声明:本文为博主原创文章,转载请注明出处。 ...

    乐百川
  • Free FrpService

    手里面有一个树莓派3B,让他作为一个网络服务器提供服务下载服务,即便这玩意儿的网口和SD卡速度有点着急,但是也会比GitHub速度快,笔者一直深入机器视觉领域,...

    用户1327296
  • 某小公司项目环境部署演变之路

    在环境部署问题上,我们经历了3个阶段:传统安装、镜像恢复、自动发现注册+指令下达。目前镜像恢复后,启动虚拟机,一旦能ping通我们公司地址,就会自动注册这台机器...

    Java团长
  • 腾讯云主机上部署FRP+Teamviewer穿透内网进行远程运维

    frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议 可以将内网服务以安全、便捷的方式通过具有公网 IP ...

    yuanfan2012
  • [Golang软件推荐] Frp内网穿透

    在一个IP紧缺的时代,连电信也不分配固定IP给到你用,一条专网专用线路贵的不行,那么作为软件开发人员常常要使用到外网,比如和微信调试程序,给到不在同一网段的朋友...

    喵了个咪233
  • 2021最新的微信官方域名检测API接口

    「微信域名检测接口」是腾讯官方对外公布的域名查询api,请求api接口可实时查询域名在微信中的状态信息。如果状态异常则返回结果提示“域名被封”,如果未有异常则返...

    晶天
  • 2021最新微信域名检测接口(附上PHP和Python代码)

    由于业务要在微信推广,面临了一个难题:微信域名被封,导致无法正常访问推广网页,损失了庞大的流量!作为一名程序猿燃燃熊气,开发了微信域名检测代码,包含php代码d...

    晶天
  • 学界丨反向传播算法最全解读,机器学习进阶必看!

    AI 科技评论按:如果对人工智能稍有了解的小伙伴们,或多或少都听过反向传播算法这个名词,但实际上BP到底是什么?它有着怎样的魅力与优势?本文发布于 offcon...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券