为什么不用socat

参见知乎评论,体验过lucky之后,发现lucky反正比openwrt自带的ddns好用多了。还带端口转发、web服务、ssl等功能

安装启动lucky

首先,官网读一遍,最终选择docker的方式,主要是方便。

version: '3.3'  
services:  
  lucky:  
    container_name: lucky  
    restart: always  
    network_mode: host  
    volumes:  
      - '/root/luckyconf:/goodluck'  
      - /:/host  # 给https证书续签后,回调宿主机使用
    image: gdy666/lucky
docker run -d --name lucky --restart=always --net=host -v /root/luckyconf:/goodluck -v /:/host gdy666/lucky

执行docker-compose up -d启动lucky。

配置动态域名(ddns)

  1. 买域名,并在cloudflare解析,解析AAAA,地址先随便填个合法ipv6地址
  2. 在cloudflare或其他dns服务提供商注册账号,并申请相应的令牌token(cloudflare:创建令牌编辑区域 DNS (使用模板)   注意!全局token是无法使用的)
  3. lucky-动态域名-添加ddns
    1. 按需填写,用ipv6就选ipv6
    2. 获取公网ip方式:通过接口获取
    3. 域名列表:填写买的域名
  4. ip绑定成功后,可以直接域名访问openwrt的服务(而不是lucky的服务,lucky的服务需要通过特定端口,http是16606,https是16626)
  5. 想要给多个终端添加动态域名,可以考虑软路由上ikuai:ikuai安装和ddns配置

配置端口转发和web代理

  • lucky-端口转发:一般用于转发外部流量到内部https服务
    • 添加转发规则,默认选项尽量不动,转发类型选多了可能用不了(用ipv6的时候仅仅选tcp6就行,选其他的可能用不了),目标地址填内网的其他ip地址即可(如小米路由器的管理后台,端口是8080)。
  • lucky-web代理:一般使用反向代理,代理外部https流量到内部服务,达到使用一个https证书保护多个内网服务的目的
    • 使用反向代理

使用ACME配置https自动续签

lucky-安全管理-添加证书

  • 备注:xxx (不能随意填,和下面证书映射路径、触发脚本有关)
  • 添加方式:ACME
  • 证书颁发机构:Let’s Encrypted
  • DNS服务商:cloudflare
  • token:同上动态域名使用的令牌,区域DNS token
  • 域名列表:即你要用什么域名访问openwrt和lucky后台
  • 证书映射:启用
    • 映射路径:/goodluck/cert(和docker-compose.yml的配置保持一致)
    • 证书改变后触发脚本:(如重启openwrt宿主机的uhttpd服务)
cp /goodluck/cert/xxx.key /host/etc/uhttpd.key # 把证书文件复制到宿主机的指定位置:(/host/etc/uhttpd.key /host/etc/uhttpd.crt)
cp /goodluck/cert/xxx.crt /host/etc/uhttpd.crt
chroot /host /etc/init.d/uhttpd restart #docker-compose.yml把宿主机根路径映射到lucky实例的/host目录下了。所以在lucky容器内直接使用chroot临时改变命令执行root路径为/host,然后重启uhttpd,即可重启宿主机的openwrt管理后台

openwrt管理后台在证书改变后脚本执行之后就能使用https域名访问。

lucky后台开启https访问

lucky-设置-后台管理入口

  • 外网访问:开
  • TLS端口:启用
  • https端口:改一个记得的端口 保存修改后,使用https域名加端口访问lucky面板

其他

  • 动态域名+端口转发/web代理+https可以实现 https+域名访问家里的路由器管理后台。
  • openwrt的TTYD终端只支持内网ip访问