1.开始

最近状态一直不是很好,身体也一直8行,而且很忙,导致没怎么写东西

这两天联通的师傅来我家升级宽带,使得我家终于有了千兆带宽和ipv6,有了这两个东西,我立马在我的nas上部署了一个叫lucky的内网穿透工具

接下来,第二部分我会讲如何部署,第三部分讲怎么使用ipv6进行外部访问,第四部分讲如何强制https访问,第五部分讲ipv4的访问允许,第六部分讲如何使用cloudflare自带的重定向去掉端口,用域名访问我们的服务.

2.部署

使用docker来进行容器部署,镜像使用 gdy666/lucky:latest

【ps:说句题外话,最近docker镜像网站很多都无了,大家可以尝试自己用cloudflare的worker自己搭一个,这里网上很多教程 ,大家自己去看看就行】

拉取镜像并创建容器,容器的话基础设置和我一样保持默认即可,重启策略我选择退出时重启

存储空间的话,自己创建一个lucky的文件夹,对应装载目录/goodluck,类型别忘了要读写

端口就保持默认的16601,网络类型选择host最好,其他的就暂时不用管了

最后创建容器,默认访问时,账号密码皆为666,这样子就部署完毕了

3.使用ipv6进行外部访问

第三部分一共分为两个小节,第一节首先我们要将ipv6绑定到我们的域名上,第二小节就是把访问域名加端口绑定到我们的内部服务商

3.1 ddns动态域名服务

我将我的域名托管到了cloudflare上,因此本文就只讲cloudflare,其他服务商的可以跟着lucky的教程自行获取即可

接下来来到lucky的动态域名一栏,由于我们的公网ip可能会产生改变,因此我们需要获取我们的托管服务商的账户的一些东西,我的是cloudfalre,所以我要去获得一个token

https://dash.cloudflare.com/profile/api-tokens,访问这个网址来获取token,

创建令牌,打开后看到编辑区域dns点击使用模板

打开后,接下来对区域资源进行修改,可以和我下图一致

点击继续显示摘要,你就会获得一个token,复制下来并保留它,不要泄露给他人

到lucky中,此时点击左侧栏的动态域名并点击上侧的添加任务按钮,可看下图填写对应的东西

任务名称随意,模式选择建议,服务商cloudflare,token填写刚才获取的token

类型选择ipv6,获取方式通过网卡获取,如果ipv4就选择接口获取

域名列表选择你要用来使用的域名,比如你的域名是example.com

你就可以填写*.example.com,建议和我选择一致

3.2 开启web服务并绑定访问域名

第一小节中,我们把ip和我们的泛域名绑定在了一起,接下来我们就可以用我们的子域名来和我们一些具体的服务进行绑定来从外面进行访问

首先我们在lucky的侧边栏中选择web服务,然后添加web服务规则,规则名称自己随便即可

类型因为我是ipv6,所以选择tcp6

可以按照我的配置来填,如果你的家庭宽带没有封80和443端口的话,你可以把监听端口换成80或443

因为涉及到后文,所以建议大家监听端口不选16666,而是选2096

子规则自己添加并启用,名称自己随意,然后类型选择反向代理,前面说过添加你的泛域名*.example.com了【这里是举例】

这里前端地址你就可以随便填一个你的子域名了,比如a.example.com,自己随意即可

后端就是你的内网对应服务的地址,比如我想访问nas,我的nas是192.168.8.150:9999,所以我这里就填写了我的nas地址

之后你就可以保存,因为我们在外面访问基本还是以https访问为主,所以这里我们去申请一个ssl证书

如下图所示,去安全管理,ssl证书添加证书,我们这里就可以去申请一个证书,添加方式acme,颁发机构lets encrypt即可,验证选择cloudflare,token就填前面我们自己的就行,域名填你前面动态域名的泛域名就可以了,其余默认,最后添加证书,等待一小会,你的证书就申请成功了

这样我们就成功实现了用https://a.example.com:16666访问内部的http://192.168.8.150:9999

以此类推,同理,我们可以添加其他子规则来用其他子域名访问我们另外的一些服务,你也可以去添加申请其他的域名证书,这都是ok的

4.强制https访问

我们现在已经可以用域名加端口的访问来访问我们的内部服务了,但是这是用https来访问的,有些浏览器使用http访问时还是打不开,仍然需要我们地址栏加个s来访问,所以我们可以在别人访问http时,自动跳转到https访问,解决方案也很简单

在web服务中,直接添加一个新的web服务规则,选择定制模式,类型和端口跟之前保持一致,地址留空

自动放行防火墙和tls不用打开

然后翻到下面,有个默认规则,这里我们要修改

服务类型重定向,目标地址选择https://{host}:{port},和我配置一样即可,最后保存这个配置就可以了

这样子就实现了强制https访问

5.ipv4+ipv6双栈访问

我们这里用的ipv6地址进行访问的,但是有些网络环境不支持ipv6,所以本节来讲如何解决ipv4访问我们这个web服务

首先是Web服务规则,cloudfalre监听端口我们能用的仅限以下:

  • HTTP 模式下:80、8080、8880、2052、2082、2086、2095
  • HTTPS 模式下:443、2053、2083、2087、2096、8443

我们上文用的16666,所以要进行修改,而80/443都被封掉,所以我改用的2096

去cloudflare中,假设我们前文中用的域名端口是https://a.example.com:2096

那么我们就可以在cloudflare中选择dns解析,并用cname类型来解析,名称随意,类型就选择你的a.example.com,代理状态打开,我这里填的是v4,那么我这个域名就是v4.example.com

保存后,我们回到lucky中,我们现在已经设置了域名cname绑定,接下来在lucky的web服务中,我们打开刚才设置的web服务规则中监听类型的tcp4

我们在刚才https://a.example.com:2096这条ipv6的子规则下面再加一条子规则,前端地址v4.example.com,后端地址和你刚才a.example.com一致就可以了,这条就代表了ipv4的子规则

我们在ipv4环境下,就可以用https://v4.example.com:2096来访问对应的服务了

这样子访问的话速度有些慢,不过也算能用了

6.去掉端口,直接域名访问

本章节分为两小节,第一小节是使用cloudflare来进行重定向访问,第二小节是使用其他平台来进行隐性url转发,大家看看哪种适合自己就用哪种吧

6.1 cloudflare重定向访问

这里就需要用到cloudflare自带的重定向了,这里还是假设我们用的https://a.example.com:2096来进行的web服务

我们可以继续用它举例,如果我们现在想用b.example.com来直接访问这个web服务,那么操作如下

进入dns解析后台,先添加"b.example.com"解析,名称为b,解析地址随便填写,解析地址填写"8.8.8.8"(但不能为"1.1.1.1")都可以,最后开启代理状态。

之后去侧边栏打开规则,点击重定向规则

点击创建规则,名称随意,下面的配置就按我的来填写即可

主机名等于b.example.com,则重定向为静态https://a.example.com:2096[图片里这里网址少打了,我的疏忽]

状态码301,之后保存就可以了,访问的话就直接使用b.example.com就可以访问了,这样子每次访问就会直接重定向,省去了记端口的麻烦

但是每次访问的时候,都会从b.example.com跳转到a.example.com:端口,这样子就有些麻烦了

6.2 隐性url转发访问

这个的话我们需要注册一个平台的账号,叫做米花,他们的官网在这里

https://www.mfpad.com,大家自行去注册一个账号,注册我就不多说了,我讲如何配置

进入控制台,添加重定向,上面源地址写我们最后访问的域名。下面的目标地址就是我们现在需要带上端口访问的地址

完成这一步后,接下来就是dns解析设置,我们回到cloudflare中,

添加一个cname记录,开不开小黄云都行,具体配置就按照下图中米花要求你进行的配置来

有什么不够详尽的地方也可以看米花官方的教程

https://www.mfpad.com/blog/how-to-redirect-a-domain

而米花免费的套餐对于我来说也是完全够用了,三条重定向记录和域名,100k的访问量

如果有兴趣不妨试一试这种方法,还有其他的一些访问方法,但是呢,不能白嫖,所以我就没有去研究

如果你有买cdn的话也可以,直接用一个cdn域名,然后使用回源域名加端口的访问也是可以的

但是我选择白嫖,所以这里只介绍这两种不花钱的方法

7.结语

欢迎大家评论区批评指正