为什么不用socat
参见知乎评论,体验过lucky之后,发现lucky反正比openwrt自带的ddns好用多了。还带端口转发、web服务、ssl等功能
安装启动lucky
首先,官网读一遍,最终选择docker的方式,主要是方便。
- 安装docker-compose
- 使用docker-compose.yml安装,管理端口是16601
version: '3.3'
services:
lucky:
container_name: lucky
restart: always
network_mode: host
volumes:
- '/root/luckyconf:/goodluck'
- /:/host # 给https证书续签后,回调宿主机使用
image: gdy666/luckydocker run -d --name lucky --restart=always --net=host -v /root/luckyconf:/goodluck -v /:/host gdy666/lucky执行docker-compose up -d启动lucky。
配置动态域名(ddns)
- 买域名,并在cloudflare解析,解析AAAA,地址先随便填个合法ipv6地址
- 在cloudflare或其他dns服务提供商注册账号,并申请相应的令牌token(cloudflare:创建令牌→编辑区域 DNS (使用模板) 注意!全局token是无法使用的)
- lucky-动态域名-添加ddns
- 按需填写,用ipv6就选ipv6
- 获取公网ip方式:通过接口获取
- 域名列表:填写买的域名
- ip绑定成功后,可以直接域名访问openwrt的服务(而不是lucky的服务,lucky的服务需要通过特定端口,http是16606,https是16626)
- 想要给多个终端添加动态域名,可以考虑软路由上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 通过外网访问
openwrt管理后台在证书改变后脚本执行之后就能使用https域名访问。
lucky后台开启https访问
lucky-设置-后台管理入口
- 外网访问:开
- TLS端口:启用
- https端口:改一个记得的端口 保存修改后,使用https域名加端口访问lucky面板
其他
- 动态域名+端口转发/web代理+https可以实现 https+域名访问家里的路由器管理后台。
- openwrt的TTYD终端只支持内网ip访问