手把手教你在windows下frp内网穿透,访问内网服务不是梦

背景

之前对内网穿透一无所知,后来听到这个名词,才发现内网穿透的魅力。什么是内网穿透?内网穿透就是让外网电脑能够找到处于内网的电脑,从而相互通信。最常用的例子就是让外网可以访问你内网的web服务。
本篇文章就完整地教大家如何在windows环境下实现多个二级域名的内网穿透,并且开机自启动该服务。看完该教程,你仅需要一个域名,就可以把自己内网机子上的web服务改成外网可访问,而无需布在服务器上。

技术列表

完成该教程的全部内容,你需要准备以下环境:

  1. 下载windows版的frp压缩包,下载地址
  2. 下载winsw,下载地址
  3. 一台服务器(云服务器)
  4. 一个备案的域名

方案

frp

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

winsw

WinSW is an executable binary, which can be used to wrap and manage a custom process as a Windows service. Once you download the installation package, you can rename winsw.exe to any name, e.g. myService.exe.
这就是一个方便地部署服务的windows软件而已,简单实用。

具体实施

服务端

首先,解压下载了的frp压缩包,最新的是frp_0.31.1_windows_amd64.zip,里面有两类文件,一类是frps开头的,另一个是frpc开头的。frps是服务端的文件,frpc是客户端的文件。
我们把frps.exe和frps.ini拷贝到你的服务器中,然后,我们修改frps.ini的文件内容,改为如下:

[common]
bind_port = 7000
vhost_http_port = 8080
subdomain_host = 一级域名

dashboard_user = 自定义
dashboard_pwd = 自定义
dashboard_port = 7500

注释
bind_port:服务端的端口
vhost_http_port:外网的映射端口,只能设置一个,支持http和https
subdomain_host:你的一级域名
dashboard_user:服务仪表盘页面用户名
dashboard_pwd:服务仪表盘页面密码
dashboard_port:服务仪表盘页面端口

然后,我们在命令行切换到frps所在的文件夹目录下,执行

frps.exe -c frps.ini

如果没有报错,说明服务端配置成功。

注意
你需要把服务端的7000、7500和8080端口打开。具体做法就是打开防火墙=》高级=》入站规则=》添加=》选择特定端口,按要求操作即可。

客户端

我们把frpc.exe和frpc.ini拷贝到一个文件夹下,修改frpc.ini文件的内容:

[common]
server_addr = 你的服务器公网IP
server_port = 7000

[web1(自定义名称)]
type = http
local_ip = 80
subdomain = 二级域名1(test1)
http_user = 网页服务用户名(非必须)
http_pwd = 网页服务密码(非必须)

[web2(自定义名称)]
type = http
local_ip = 81
subdomain = 二级域名2

[web...n]
...

注释
local_ip:本地web服务IP
subdomain:二级域名,通过访问http://二级域名.一级域名:服务端端口,访问服务。例如:

http://test1.domain.com:8080可以访问内网test1对应的端口服务(80)
http://test2.domain.com:8080可以访问内网test2对应的端口服务(81)

配置好后,我们执行以下命令:

frpc -c frpc.ini

如果没有报错,说明配置成功。

注意
二级域名需要解析,腾讯云的解析方法是:
在这里插入图片描述
主机记录输入二级域名,记录值输入服务器IP。

添加windows服务

服务端命令行一直开着没什么问题,但是内网客户端的机子开个窗口很不方便,我们可以添加一个windows服务,设置为开机自启动。通过winsw可以很方便添加一个服务。
我们把下载的winsw加压后,可执行文件(exe)和配置文件(xml)统一改名为winsw.exe和winsw.xml。
我们修改xml的内容:

<service>
    <id>frpWebServe</id>
    <name>frpWebServe</name>
    <description>frp web service</description>
    <executable>frpc</executable>
    <arguments>-c frpc.ini</arguments>
    <logmode>reset</logmode>
</service>

我们把winsw.exe和winsw.xml放到frpc.exe同一个文件夹下。执行以下命令:

winsw install
winsw start

即可添加服务,并且开机自启动。
大功告成!

总结

通过本篇教程,我们实现了多个二级域名的内网穿透,不出意外,你应该可以在外网访问你在内网部署的网站,不过也许你需要把你的内网代码做调整,把url都替换成外网访问的地址,如果你有配置文件,那么应该操作会简单很多。
大年初一,一篇教程给大家拜年啦!祝大家新年快乐,身体健康。

发布了41 篇原创文章 · 获赞 28 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/lyandgh/article/details/104083814