AI摘要:Lucky是一款基于Golang和Vue3.2技术的家用软硬路由工具,支持端口转发、DDNS、Web服务、Stun内网穿透等功能,易于安装和使用,适用于Linux嵌入式设备。
Powered by AISummary.
一、lucky介绍
Lucky最初是作为一个小工具,由开发者为自己的个人使用而开发,用于替代socat,在小米路由AX6000官方系统上实现公网IPv6转内网IPv4的功能。Lucky的设计始终致力于让更多的Linux嵌入式设备运行,以实现或集成个人用户常用功能,降低用户的硬件和软件操作学习成本,同时引导使用者注意网络安全。随着版本更新和网友反馈,Lucky不断迭代改进,拥有更多功能和更好的性能,成为用户值得信赖的工具。
Lucky 的核心程序完全采用 Golang 实现,具有高效、稳定、跨平台等优点。其后台前端则采用 Vue3.2 技术进行开发,具有良好的用户体验和响应速度。此外,Lucky 的管理后台采用前后端分离的架构,第三方开发者也可以自由使用OpenToken轻松调用Lucky的各种功能接口。
功能模块
目前已经实现/集成的主要功能模块有
- 端口转发
- 动态域名(DDNS)
- Web服务
- Stun内网穿透
- 网络唤醒
- 计划任务
- ACME自动证书
- 网络存储
端口转发
- 主要用于实现公网 IPv6 转内网 IPv4 的 TCP/UDP 端口转发。
- 支持界面化的管理转发规则,用户可以通过 web 后台轻松地进行规则的添加、删除、修改等操作。
- 单条转发规则支持设置多个转发端口,这样可以实现多个内网服务端口的转发。
- 提供了一键开关和定时开关功能,用户可以根据自己的需求设置转发规则的开启和关闭时间,还可以使用计划任务模块进行定时开关。
- 单条规则支持黑白名单安全模式切换,用户可以根据需要选择使用白名单模式或黑名单模式。
- 白名单模式可以让没有安全验证的内网服务端口稍微安全一点暴露到公网,提高服务可用性。
- 实时记录最新的访问日志,方便用户了解转发情况。
- 规则列表日志一目了然,用户可以方便地追踪转发异常,及时进行排查和处理。
动态域名(DDNS)
- 支持接入多个不同的 DNS 服务商: 阿里云,百度云,华为云,京东云,腾讯云,火山引擎,帝恩爱斯-DNS.LA,西部数码,Cloudflare,deSEC,DNSPod.CN,DNSPod.COM,Dynadot,Dynv6,Freemyip ,GoDaddy,Name.com,NameSilo,Porkbun,Vercel等
- 支持全功能自定义回调(Callback),包括设置 BasicAuth,方便接入任意 DNS 服务商。
- Webhook 支持自定义 headers。
- 内置常用免费 DNS 服务商设置模板(每步、No-IP、Dynv6、Dynu),通过自定义回调进行快速接入,仅需修改相应用户密码或 token 即可一键填充。
Web服务
- 支持反向代理、重定向和 URL 跳转等。
- 支持 HTTP 基本认证。
- 支持 IP 黑白名单模式。
- 支持 UserAgent 黑白名单。
- 规则日志清晰易懂,便于追踪异常。
- 支持一键开关规则和定时开关规则。
- 支持一键启用HTTP3
- 快速构建静态网站
- 安全可靠,集成CorazaWAF。
Stun内网穿透
- 实现内网穿透,无需公网IPv4地址。
- 适合于国内运营商级NAT1宽带网络.
网络唤醒
- 支持远程控制唤醒和关机操作
- 支持接入第三方物联网平台(点灯科技 巴法云),可通过各大平台的语音助手控制设备唤醒和关机.
计划任务
- 不依赖 Linux 系统的 Cron,支持 Windows 系统。
- 操作简便,可视化编辑。
- 可操作控制 Lucky 框架内的其他模块开关。
ACME自动证书
- 支持 ACME 自动证书的申请和续签。
- 支持 阿里云,百度云,华为云,京东云,腾讯云,火山引擎,帝恩爱斯-DNS.LA,西部数码,Cloudflare,deSEC,DNSPod.CN,DNSPod.COM,Dynadot,Dynv6,Freemyip ,GoDaddy,Name.com,NameSilo,Porkbun,Vercel等
网络存储
- 网络存储模块是一个应用范围广泛的模块,它提供了将本地存储、WebDAV和阿里云盘挂载到Lucky内部的各个文件类服务功能。
- 通过网络存储模块,你可以将添加的存储挂载到Web服务的文件服务、WebDAV、FTP和FileBrowser模块,实现更加便捷的文件管理和访问。
二、部署Lucky
Lucky提供的便捷安装方式如下
- OpenWrtIPK包
- Docker镜像
- 自动脚本安装
- 半自动离线脚本安装方法
- 手动运行
OpenWrtIPK包
Lucky官方IPk包源码地址 : https://github.com/gdy666/luci-app-lucky
警告
使用自定义OpenWrt固件编译时,需要手动勾选luci-app-lucky和lucky包才能在编译后的固件中包含Lucky。
警告
安装官方Lucky IPK包时,必须确保您的系统已经完全卸载了所有第三方的Lucky IPK包。
否则,安装完成后,很可能无法启动Lucky。
在安装官方IPK包之前,请务必确保已完全删除 /etc/config/lucky 和 /etc/init.d/lucky。
如果在安装IPK包前已经通过一键脚本方式安装,同样需要先卸载原先版本。执行多一遍安装脚本,选项2.
IPK包下载安装步骤
- 打开 https://github.com/gdy666/luci-app-lucky/releases 页面
- 先安装CPU架构相应Lucky核心IPK包
- 再安装最新的luci-app-lucky\_XXX\_all.ipk 和 luci-i18n-lucky-zh-cn\_XXX\_all.ipk
Docker镜像
host模式, 同时支持IPv4/IPv6, Liunx系统推荐
docker run -d --name lucky --restart=always --net=host gdy666/lucky
桥接模式, 只支持IPv4,windows 不推荐使用docker版本
docker run -d --name lucky --restart=always -p 16601:16601 gdy666/lucky
挂载主机目录, 删除容器后配置不会丢失。可替换 /root/luckyconf 为主机目录, 配置文件为lucky.conf
docker run -d --name lucky --restart=always --net=host -v /root/luckyconf:/goodluck gdy666/lucky
注意
lucky 在docker容器内部存放配置的文件夹路径是 /goodluck
docker compose
_
version: '3'
services:
lucky:
image: gdy666/lucky
container_name: lucky
volumes:
- 宿主机持久化路径:/goodluck
network_mode: host
restart: always
_
_
警告
Linux环境不推荐使用bridge模式
在bridge模式下,Lucky不支持IPv6,而且IPv4也可能会出现端口无法访问的情况。
如果你遇到了端口无法访问的问题,请尝试使用host模式。
如果host模式仍然无法解决问题,你可以尝试更换其他端口。
总之,如果不必使用Docker,建议不要使用Docker。
警告
Windows环境可以使用Docker安装Lucky,但是并不推荐使用此方式。
相反,我们建议使用安装服务的方式来实现开机启动。
在Lucky后台设置页面下方可以找到安装/卸载Windows服务的选项。
在安装服务之前,请确保Lucky文件已经放置在你想要存放的位置。 安装Windows服务需要管理员权限运行Lucky
自动脚本安装
提示
确认路由器设备已经开启SSH并获取root权限(带GUI桌面的Linux设备可使用自带终端安装)
使用SSH连接工具(如putty,JuiceSSH,系统自带终端等)路由器或Linux设备的SSH管理界面或终端界面,并切换到root用户
确认设备已经安装curl或者wget下载工具。
基于OpenWrt(小米官方系统、潘多拉、高恪等)的设备请使用如下命令安装curl
opkg update && opkg install curl #如已安装请忽略 之后在SSH界面执行如下安装命令,并按照后续提示完成安装
升级新版本只需重新运行安装指令,末尾参数改为最新版本号,安装完成后在后台设置页面重启程序即可.
(如无法连接或出现SSL连接错误,请尝试更换各种不同的安装源!)
以安装2.8.3版本为例
安装其它版本时请自行更改指令末尾的版本号
#私人源
curl -o /tmp/install.sh http://6.666666.host:6/files/golucky.sh && sh /tmp/install.sh http://6.666666.host:6/files 2.11.2
wget -O /tmp/install.sh http://6.666666.host:6/files/golucky.sh && sh /tmp/install.sh http://6.666666.host:6/files 2.11.2
curl -o /tmp/install.sh https://6.666666.host:66/files/golucky.sh && sh /tmp/install.sh https://6.666666.host:66/files 2.11.2
wget -O /tmp/install.sh https://6.666666.host:66/files/golucky.sh && sh /tmp/install.sh https://6.666666.host:66/files 2.11.2
#fastgit.org加速
curl -o /tmp/install.sh https://raw.fastgit.org/gdy666/lucky-files/main/golucky.sh && sh /tmp/install.sh https://raw.fastgit.org/gdy666/lucky-files/main 2.11.2
#jsDelivrCDN源
curl -o /tmp/install.sh https://fastly.jsdelivr.net/gh/gdy666/lucky-files@main/golucky.sh && sh /tmp/install.sh https://fastly.jsdelivr.net/gh/gdy666/lucky-files@main 2.11.2
#fastgit.org加速
wget -O /tmp/install.sh https://raw.fastgit.org/gdy666/lucky-files/main/golucky.sh && sh /tmp/install.sh https://raw.fastgit.org/gdy666/lucky-files/main/ 2.11.2
#jsDelivrCDN源
wget -O /tmp/install.sh https://fastly.jsdelivr.net/gh/gdy666/lucky-files@main/golucky.sh && sh /tmp/install.sh https://fastly.jsdelivr.net/gh/gdy666/lucky-files@main 2.11.2
创建成功后,在浏览器中输入NASIP+16601进行访问,默认的账户和密码如下:666/666
登录后及时修改密码。
其他安装方式参考官方文档
三、DDNS(动态域名解析)
接下来需要进行域名解析,在Lucky页面的左侧菜单栏中,点击【动态域名解析】,然后再点击上方的添加任务。
笔者使用的是腾讯云的域名,这里以腾讯云为例,选择托管服务商,然后还需要输入密钥,这里还需要点击上方创建密钥(见下图),类型选择IPV4,然后在域名列表中,输入自己的域名。确定无误后,最后点击添加任务。
点击上方的创建密钥会跳出如下的页面,把该页面出现的secretld 和secretkey复制到上一步中。
接着跳出该页面,说明已部署成功,接下来还需要进行证书和反代的设置。
四、SSL证书
点击lucky页面左侧菜单栏中的【SSL/TLS证书】,接着点击上方添加证书。
注意该页面红框的填写方式,笔者帮大家罗列出来。
添加方式:选择ACME
证书颁发机构:选择Let'sEncrypt
验证方式:选择腾讯云(我是在腾讯云购买的域名)
secretld 和secretkey:点击创建密钥,将ecretld 和secretkey复制过来。
最后检查设置无误后,点击确认。
设置完成后,会调到该页面,会显示证书正在申请中,等待一分钟左右的时间,再刷新页面会显示证书申请完成。
接着进行反代设置。
五、反向代理
在Lucky页面左侧菜单栏点击【Web服务】,接着选择【添加服务规则】。
这里tcp4勾选上,监听端口选择8881,TLS选择启用。
接着添加子规则,给子规则进行命名,接着服务类型选择反向代理,用来访问NAS 可以填写nas.xxxx.com;这里填写nas+域名,后段地址填写:http://+ NAS局域网地址。
然后回到路由器中进行端口转发。
域名:8881即可成功访问NAS啦。