背景
之前对内网穿透一无所知,后来听到这个名词,才发现内网穿透的魅力。什么是内网穿透?内网穿透就是让外网电脑能够找到处于内网的电脑,从而相互通信。最常用的例子就是让外网可以访问你内网的web服务。
本篇文章就完整地教大家如何在windows
环境下实现多个二级域名的内网穿透
,并且开机自启动该服务
。看完该教程,你仅需要一个域名,就可以把自己内网机子上的web服务改成外网可访问,而无需布在服务器上。
技术列表
完成该教程的全部内容,你需要准备以下环境:
方案
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都替换成外网访问的地址,如果你有配置文件,那么应该操作会简单很多。
大年初一,一篇教程给大家拜年啦!祝大家新年快乐,身体健康。