用了几年的公网ip被偷偷停用了

吐槽了公网ip被偷偷收回并且艰难找不回的经历,并且介绍了通过openSSL让内网ip使用https的方法

碎碎念

起因是,正在开心研究博客的评论系统的时候,需要保存一个密码,发现Bitwarden却一直在转圈加载。之前因为证书过期也出现这种情况,我没有在意,日常去查看群晖的证书目录、检查acme.sh容器,发现均正常运行。

思考了一会,又猜测可能是ddns没有正确的更新到域名上去,于是又去域名控制台查看更新情况。

解析公网ip

查询到的值,和搜索自身ip查到值是一样的,这就很令人纳闷了。

于是我又想,难道因为我用的运营商的DNS,被污染了?于是打算换DNSpod试试。然而,正在我打算换,进入路由器后台的时候,发现

WanIP

这是什么奇怪的IP地址?查询后发现IP地址显示的位置距离我十万八千里,于是恍然大悟, 我被偷偷变成内网了!

这不能忍啊,愤怒的拨打电信10000的客服电话:“您好…”“人工服务”,“业务繁忙…”“人工服务”,“您可以先查流量…”“人工服务”

  • 客服1

    • “家庭网络不可以申请公网ip”
      “我用了几年了,这两天突然这样的”
    • “好的,我帮您设置了,请重新拨号连接”
      “好的,我试试”
    • “请问还有什么能帮到您的,结束后按两个1好评”
      「路由器还在重启拨号中,心想这么干脆,应该没问题吧,给了两个1」

    结果还是在内网

  • 客服2

    • “我看已经帮您设置了公网”
      “我这里显示还是在内网中啊?!”
    • “我这里帮您开启公网双zan”
      「没听清zan是什么,也不知道什么是公网双zan,先答应吧」
      “好的,我先重新拨号试试”
    • 在拨号中…“请问还有什么能帮到您的,结束后按两个1好评”
      「还想让她等一下的,话还没说出口已经是两个1的系统提示了」
    • 「这回应该解决了吧,先给两个1吧,顺便查了下公网双z
      靠联想词搜索,原来是公网双栈,有说法是ipv4和ipv6同时公网,又有说法是ipv4内网、ipv6公网,还有说法是开启了ipv6会让ipv4只有内网。

    重新拨号完,依旧是内网ip,开启ipv6,获取不到任何地址,一片空白

  • 客服3

    • “我这里看已经帮您设置了公网双zan”
      “可是我这里ip显示并没有在公网啊?”
    • “这是ipv6的公网,您要开启ipv6”
      “我开启了ipv6,显示一片空白,并且我是想要ipv4的公网,之前一直都有的”
    • 避开ipv4的问题没有回答,“您好,这边帮您切换到了公网单zan,您再拨号试试”
      “好的,我再试试”
    • 在拨号中…“请问还有什么能帮到您的,结束后按两个1好评”,立马又是系统提示音
    • 「这回总该解决了吧,于是又给了两个1」

    重新拨号完,这回终于不是内网ip了,是 联机中断! 重启路由、重启光猫, 联机中断!

  • 客服4

    • “已经帮您设置了公网”
      “这次不是公网,是网都没有了。”
    • “已经帮您上报,给您运维师傅的联系电话,可以打电话联系”
      “好的,谢谢”
    • 「我不忍心还是扣了两个1」
    • 去打了运维的电话,折腾了半天终于电脑拨号恢复了网络,但是依旧连ipv6都没有,因为天很晚了,说要上门查看

    两天过去…中途只有回访的电话,没有运维上门的电话

  • 客服5

    • “已经是ipv6的公网单栈,不需要开通的。”
      “什么是公网单栈,什么是公网双栈啊?”
    • “稍等我查一下,不好意思,系统里也没有具体解释”

    再打给运维,沟通后说师傅很忙要问问有没有时间,然后直接挂断电话再没有回音。(我寻思原来不是你上门啊?)

折腾了好几天,PC端拨号也试验过,情况是不仅公网ipv4没有,甚至ipv6都没有,只能怀疑是光猫有问题,运维上门修也联系不上。

如果半个月内还没有回音,那就去投诉了,给足他们时间,再好说话的脾气也被磨没了,😡

既然如此,那就只能先想办法没公网的情况下解决问题了

OpenSSL

由于基本只在家用,所以就在想有没有办法直接给IP地址加上SSL证书,搜索后发现不少人也有类似问题。可以使用OpenSSL制作自签名证书,来给内网加上https。

前期准备

  1. 先去OpenSSL官网下载并安装对应系统的安装包,Light版已经足够大多数人使用。
  2. Windows搜索环境变量编辑账户的环境变量→在Path中添加OpenSSL安装位置的bin文件夹进入环境变量,例如我添加的路径是C:\Program Files\OpenSSL-Win64\bin,方便随时调用。
  3. 在想存放证书文件的文件夹,按Shift+鼠标右键在此处打开Powershell窗口

制作证书

生成私钥,private可以改成任意名字。

openssl genpkey -algorithm RSA -out private.key

使用刚刚生成的私钥,生成证书签名请求(CSR)。

openssl req -new -key private.key -out csr.pem

会提示需要提供一些信息,分别是企业部门域名邮件密码可选公司,可以随意填写,我只在域名填了Nas的IP地址,其他都是乱写的。

使用CSR和私钥生成自签名证书,我直接申请了100年。

openssl req -x509 -days 36500 -key private.key -in csr.pem -out certificate.crt

这样,证书相关的操作就完成了。

给Nas内网地址加入证书

我使用的是群晖Nas,所以以群晖为例子来设置,其他Nas应该大同小异。

进入控制面板-安全性-证书-新增-新增新证书-导入证书,将.key文件加入私钥、.crt文件加入证书,点击确定

导入证书

100年的证书就成功添加上去了,然后点击设置,设定证书的使用范围,我将所有的都改成了自签证书。

配置范围

打开浏览器网页,输入https://NasIP地址/ 测试效果,会提示不安全,无所谓,反正是在内网,仍然进入就行了。

https提示

内网Nas通过https成功访问。

WebUI通过https访问

以Bitwarden为例(因为官方硬性要求WebUI使用https才能使用,如果是安卓客户端,反而可以直接用http登录),如果直接使用https://内网IP:端口的方式会发现无法连接。

可以进入控制面板-登录门户-高级-反向代理服务器,添加反向代理。 来源是要访问的https端口,目的地是Bitwarden的自己设定的容器端口。

反向代理

可以发现主机名不让填IP,然而,其实可以不填,直接确定就好。

这时输入https://内网IP:1111就能访问http://内网IP:2222的Bitwarden的WebUI界面了。

拓展

其他部署的项目也都可以用类似方法,比如TinyTinyRSS的订阅链接,必须是https,因此可以给RSSHub也加上证书并反向代理。(然而我直接把TTRSS换成了Miniflux

再比如Transmission老是要求身份验证,也可以换成https进入。

transmission登录

甚至有多余闲置的域名的话,可以直接把内网IP地址解析到域名上使用,还挺好用的,哈哈。

参考资料

Licensed under CC BY-NC-SA 4.0
最后更新于 2025-03-25 16:40 CST
主题 StackJimmy 设计 Blog Run Time
Love U: