V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qinyui
V2EX  ›  路由器

内网实现 https 方案的问题

  •  
  •   qinyui · 2024-01-29 14:38:34 +08:00 · 4011 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近用 n1 在局域网内搭建了个轻 nas ,整个架构现在是这样的:

    https://imgur.com/a/i1zIMEK

    但是现在访问是用 http://192.168.1.xxx 的方式,感觉不太安全,(因为局域网是合租公用的),所以想在现有基础上加上 https 传输更安全点

    目前了解到的比较可行的方案是:解析一个二级域名,再申请个对应的 ssl 证书(非自签名证书),然后在局域网修改路由器的 hosts ,将域名转发到 n1 的 ip 上,这样在局域网内的所有设备都可以通过 https 加域名的方式访问 n1 并且不需要修改设备的 hosts 信息

    但是现在问题是,主路由器是公用的并且不知道管理台密码,没法操作配置 hosts ,副路由器倒是我自己的但是配置 hosts 好像也没用

    现在到这里卡住了,有什么办法解决吗?

    43 条回复    2024-02-01 11:03:46 +08:00
    qinyui
        1
    qinyui  
    OP
       2024-01-29 14:41:41 +08:00
    pigeon2049
        2
    pigeon2049  
       2024-01-29 14:45:23 +08:00
    cloudflare zero trust tunnel
    cpstar
        3
    cpstar  
       2024-01-29 14:48:57 +08:00   ❤️ 3
    直接把域名解析为 192.168.1.x 就行了。改啥 hosts 。。。
    biabia123456
        4
    biabia123456  
       2024-01-29 14:49:29 +08:00   ❤️ 1
    外网有访问的需求吗 没有的话直接二级域名 DNS 解析到内网 ip 就好了
    Vegetable
        5
    Vegetable  
       2024-01-29 14:50:23 +08:00
    你能控制域名,直接解析到内网 IP 就行了,先找公网服务器做好证书,然后 DNS 解析到局域网,不用动什么 host
    cpstar
        6
    cpstar  
       2024-01-29 14:50:41 +08:00
    然后,内网还要啥 ssl ,非要 ssl 自签一个得了。不对公网,证书的成本完全无法分摊。
    qinyui
        7
    qinyui  
    OP
       2024-01-29 14:50:45 +08:00
    @cpstar 直接在域名控制台解析到内网地址就行了?我还没试过呢,一会我试试😂
    qinyui
        8
    qinyui  
    OP
       2024-01-29 14:52:36 +08:00
    @cpstar 自签名的证书还要信任什么的不方便,ssl 证书有免费的也没啥成本呀
    ilovey482i
        9
    ilovey482i  
       2024-01-29 15:01:13 +08:00
    本机改 hosts 也一样,在 host 里写域名对应的 IP
    qinyui
        10
    qinyui  
    OP
       2024-01-29 15:03:03 +08:00
    @ilovey482i 那也手机改着不方便,需要 root 或者越狱
    cpstar
        11
    cpstar  
       2024-01-29 15:03:59 +08:00
    部署配置不是成本?免费的每年更新一次不是成本? Let'sEncrypt 的脚本实施不是成本?
    你理解的成本是啥,只是那一点点钱么?
    leonshaw
        12
    leonshaw  
       2024-01-29 15:04:28 +08:00
    DNS 直接解析到内网 IP 不就行了
    InDom
        13
    InDom  
       2024-01-29 15:07:46 +08:00
    DNS 解析到内网,然后定时通过 DNS 认证签发证书。
    ilovey482i
        14
    ilovey482i  
       2024-01-29 15:19:40 +08:00
    @qinyui 手机的话,你要自建 DNS 服务了,自己解析域名
    whileFalse
        15
    whileFalse  
       2024-01-29 15:29:50 +08:00 via Android
    1. 搞一张证书 2.域名解析到 n1 的内网地址
    不就完了吗,楼主都在想些什么啊。
    qinyui
        16
    qinyui  
    OP
       2024-01-29 15:46:38 +08:00
    #7 测试过没问题,直接域名解析到内网地址就行了,再配置上 ssl 证书也没问题,以前不知道还能直接解析到内网地址😂
    qinyui
        17
    qinyui  
    OP
       2024-01-29 15:49:35 +08:00
    顺便再问下,如果是纯内网环境没有外网的话,域名解析内网 ip 这种方式就不行了吧?那时候怎么解决呢?
    Jinnrry
        18
    Jinnrry  
       2024-01-29 15:50:17 +08:00 via Android
    what ?你是为了防止中间人攻击?我觉得跟你合租的人 99.999%是不懂中间人攻击的,就算你是那 0.001%刚好遇上了一个搞安全的,我觉得他 99.999%也不会吃饱了去中间人攻击研究你这个 nas 服务
    qinyui
        19
    qinyui  
    OP
       2024-01-29 15:53:34 +08:00
    但是数据和各种密码请求都在 http 下传输一点都不放心。。。
    @Jinnrry
    qinyui
        20
    qinyui  
    OP
       2024-01-29 15:57:07 +08:00
    @biabia123456 后边也准备弄个内网穿透实现外网访问,到时候我再弄个二级域名解析就行了吧?
    zhujinliang
        21
    zhujinliang  
       2024-01-29 15:58:50 +08:00
    我考虑过,申请一个泛域名证书不难,主要是内网设备很多,而且像交换机这种不能安装软件的,更新证书会比较麻烦
    Blunt1991
        22
    Blunt1991  
       2024-01-29 16:01:12 +08:00
    caddy+DNS 直接指向内网 IP
    Jinnrry
        23
    Jinnrry  
       2024-01-29 16:24:35 +08:00 via Android
    @qinyui 你流量都在内网,也就是和你合租跟你共用路由器交换机且他必须有路由器管理员密码且必须能够注入路由器固件的情况下可能可以监听你的流量。这也需要担心安不安全?
    dvz
        24
    dvz  
       2024-01-29 16:25:55 +08:00
    caddy 或者 npm 反向代理
    totoro625
        25
    totoro625  
       2024-01-29 16:27:51 +08:00
    @Jinnrry #18 0.001%刚好遇上了一个搞安全的,肯定也是物理攻击
    mithrilyue
        26
    mithrilyue  
       2024-01-29 16:48:12 +08:00
    docker 的话 traefik+dns-challenge ,群晖之类的可以反代到 traefik,也可以 acme.sh+dns-challenge+dsm-deploy
    教程都挺全的,配置起来很简单的。
    Ariake265
        27
    Ariake265  
       2024-01-29 16:53:01 +08:00
    dns 解析到内网 IP 之后直接 caddy
    qinyui
        28
    qinyui  
    OP
       2024-01-29 16:55:46 +08:00
    @Jinnrry @totoro625 我能说我上一个合租室友就是搞运维的大佬吗?你还觉得概率低吗。。🥲
    qinyui
        29
    qinyui  
    OP
       2024-01-29 16:57:51 +08:00
    @wanghr64 没用过 caddy ,我用 nginx 也行吧
    vmebeh
        30
    vmebeh  
       2024-01-29 17:12:25 +08:00
    都放在副路由器后面不就行了
    SenLief
        31
    SenLief  
       2024-01-29 17:19:08 +08:00
    内网自己签名就行
    Jinnrry
        32
    Jinnrry  
       2024-01-29 17:24:04 +08:00 via Android
    @qinyui 你真要是为了防室友的话,那你还不如像#30
    说的,你自己再搞个子网,跟公用的网络隔开,做网络隔离岂不更安全,而且维护也简单很多。

    你真硬要上 ssl 的话,像楼上那些说的搞反代,那不把服务暴露到公网了吗,那不反而增加了安全风险。

    真要上 ssl 那你就域名解析指到内网,但是验证使用 dns 记录验证,不要用 http 验证。
    libook
        33
    libook  
       2024-01-29 17:31:44 +08:00
    我现在的方案是这样的:

    使用 Let's Encrypt 的 DNS-01 challenge 申请证书,在 DNS 解析平台上填写相应的 TXT 记录,这样证书签发平台只需要去看你的域名的 DNS 解析记录就可以确定你是不是拥有这个域名。

    DNS-01 challenge 可以看这个: https://letsencrypt.org/docs/challenge-types/#dns-01-challenge

    然后使用 acme.h 获取/刷新证书,定了个每月执行的计划任务。

    给每个服务分配一个二级域名,并解析到 NAS 的内网 IP 。

    NAS 上的 Nginx 配置每个域名( host 指令)对应代理到的端口号,并加载证书提供 HTTPS 访问。
    qinyui
        34
    qinyui  
    OP
       2024-01-29 17:33:17 +08:00
    @Jinnrry @vmebeh

    首先我那个 tplink 的好像不支持子网,没看到相关选项,我是无线桥接的,而且无线桥接的网络相比直接连原路由器网速会低点,这个我用笔记本测试过(连原来的 wifi 是 400Mbps ,连新的 wifi 是 200Mbps ),这样正常访问外网速度就降低了得不偿失呀

    目前就是准备域名解析内网 ip 然后申请 ssl 证书用,不使用 http 验证什么意思?
    qinyui
        35
    qinyui  
    OP
       2024-01-29 17:37:32 +08:00
    @libook 我目前基本也准备这么弄了,不过 ssl 证书准备直接用腾讯云的了,一年免费的也不用怎么更换,Let's Encrypt 的配置着还麻烦
    poopoopoopoo
        36
    poopoopoopoo  
       2024-01-29 17:41:04 +08:00
    不如简单点 deny all allow XXXX
    qinyui
        37
    qinyui  
    OP
       2024-01-29 17:48:42 +08:00
    @poopoopoopoo 是个思路,就是所有终端得固定下 ip
    benjaminliangcom
        38
    benjaminliangcom  
       2024-01-29 19:46:52 +08:00
    不用改 host ,直接把 DNS 解析到 lan 地址,最好配合 nginix proxy manager/Traefik 自动化 acme
    fsdrw08
        39
    fsdrw08  
       2024-01-29 23:43:33 +08:00 via Android
    HTTPS 整个链条涉及到几个服务:
    1 ,dns ,浏览器检验证书最重要的就是看域名,因此要先部署一个 DNS 服务器,我自己环境用的是 consul, 够轻量,也可用 freeipa,
    2 ,CA, 即证书颁发机构,由于是内网,只能自己搭,可以用 step-ca, 或者 hashicorp 的 vault, 我目前用的是 step-ca, 但打算换到 vault ,因为 vault 支持的功能更多,也可以用 freeipa, 这个也有 ca 功能
    3 ,证书签发,我建议使用内网 acme ,step-ca, vault, freeipa 都支持 acme
    4, 反向代理,我用的是 traefik ,因为它支持 acme,能自动获取证书,还有 ui

    如果想省心,可以部署 freeipa+traefik ,就能实现内网 HTTPS ,部署方式可以考虑 podman 容器化部署,为什么用 podman ?因为 podman 支持 k8s yaml 的方式部署,我写了些专用于 podman 的 helm chart, 包含了 freeipa, traefik, consul

    https://github.com/fsdrw08/helm-charts/tree/e820377c669dc2665c4091d4a7ed838cca0a7cd0/charts
    fsdrw08
        40
    fsdrw08  
       2024-01-29 23:51:35 +08:00 via Android
    我看你这里还涉及到路由,也可以考虑用 vyos ,我现在这套内网 HTTPS 链条的所有服务都是部署在运行 vyos 的虚拟机上,可以使用 terraform 部署,参考 https://github.com/fsdrw08/SoloLab/tree/main/TerraformWorkShop/System/VyOS
    zgw199012
        41
    zgw199012  
       2024-01-30 15:26:40 +08:00
    https://192.168.1.xxx 不就可以吗
    qinyui
        42
    qinyui  
    OP
       2024-01-30 15:42:45 +08:00
    @zgw199012 内网 ip 好像不能 https 吧?
    zgw199012
        43
    zgw199012  
       364 天前
    @qinyui 这个没有限制,浏览器会报证书风险,你自己用的话不成问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1788 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:48 · PVG 18:48 · LAX 02:48 · JFK 05:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.