fix: harden intranet CUPS setup

This commit is contained in:
2026-06-09 14:47:36 +08:00
parent 0878c71b5a
commit 2a688d2514
7 changed files with 158 additions and 112 deletions

View File

@@ -8,18 +8,18 @@
## 一、一键安装
### Gitee 仓库
### Gitea 仓库
```
https://gitee.com/yu-yon/S905L3A.git
https://git.workyai.cn/237899745/S905L3A.git
```
### 一键安装命令
```bash
# 方式一curl
curl -fsSL https://gitee.com/yu-yon/S905L3A/raw/master/setup_cups.sh | bash
curl -fsSL https://git.workyai.cn/237899745/S905L3A/raw/branch/master/setup_cups.sh | bash
# 方式二wget
wget -qO- https://gitee.com/yu-yon/S905L3A/raw/master/setup_cups.sh | bash
wget -qO- https://git.workyai.cn/237899745/S905L3A/raw/branch/master/setup_cups.sh | bash
```
### 脚本功能
@@ -38,8 +38,7 @@ wget -qO- https://gitee.com/yu-yon/S905L3A/raw/master/setup_cups.sh | bash
|------|------|------|
| CUPS | 631 | 打印服务/Web管理界面 |
| Avahi | 5353 | mDNS/AirPrint 自动发现 |
| Samba | 445/139 | Windows SMB 打印共享 |
| LPR (xinetd) | 515 | LPR 打印协议 |
| 驱动管理器 | 632 | 内网上传安装打印机驱动(可选) |
---
@@ -56,19 +55,7 @@ wget -qO- https://gitee.com/yu-yon/S905L3A/raw/master/setup_cups.sh | bash
### 公网环境
公网环境较为复杂,可能遇到以下问题:
- Windows IPP 强制使用 HTTPS自签名证书不受信任
- SMB 445 端口可能被 ISP 阻止
- 需要在云服务器安全组开放相应端口
**公网可用方案:**
1. **LPR 协议(推荐)**
- 端口515
- 队列名:打印机名(如 PDF
- Windows 添加方式TCP/IP 打印机 → 自定义 → LPR 协议
2. **IPP + 证书信任**
- 需要将服务器证书导入 Windows 受信任的根证书
不建议把 CUPS 或驱动管理器直接暴露到公网。本项目默认按内网使用配置,访问范围使用 `@LOCAL`,驱动管理器也会拒绝非私有网段来源。
---
@@ -98,9 +85,8 @@ https://服务器IP:631
| `/etc/cups/cupsd.conf` | CUPS 主配置文件 |
| `/etc/cups/printers.conf` | 打印机配置 |
| `/etc/cups/ssl/` | SSL 证书目录 |
| `/etc/samba/smb.conf` | Samba 配置SMB 打印共享) |
| `/etc/xinetd.d/cups-lpd` | LPR 服务配置 |
| `/usr/share/cups/templates-zh_CN/` | 中文界面模板 |
| `/opt/cups-driver-manager/` | 驱动管理器安装目录(可选) |
---
@@ -114,8 +100,8 @@ Listen 0.0.0.0:631
# 允许任何主机名访问
ServerAlias *
# 禁用强制加密(允许 HTTP
DefaultEncryption Never
# 内网允许 HTTP同时接受客户端主动 HTTPS
DefaultEncryption IfRequested
# 中文界面
DefaultLanguage zh
@@ -123,32 +109,16 @@ DefaultLanguage zh
# 允许远程访问
<Location />
Order allow,deny
Allow all
Allow @LOCAL
</Location>
# 允许远程打印
<Location /printers>
Order allow,deny
Allow all
Allow @LOCAL
</Location>
```
### Samba 打印配置
```ini
[global]
printing = cups
printcap name = cups
load printers = yes
[printers]
comment = All Printers
path = /var/spool/samba
printable = yes
guest ok = yes
```
---
## 七、常用命令
```bash
@@ -161,14 +131,8 @@ systemctl restart cups
# 查看 CUPS 日志
tail -f /var/log/cups/error_log
# 重启 Samba
systemctl restart smbd nmbd
# 重启 LPR 服务
systemctl restart xinetd
# 检查端口监听
ss -tlnp | grep -E "631|445|515"
ss -tlnp | grep -E "631|632"
```
---
@@ -176,14 +140,15 @@ ss -tlnp | grep -E "631|445|515"
## 八、故障排除
### 问题1Windows 无法连接 IPP 打印机
**原因**Windows IPP 客户端强制使用 HTTPS自签名证书不受信任
**解决**使用 LPR 协议或 SMB 协议代替
**原因**常见原因是客户端缓存了旧队列、服务器 IP 变化,或没有在同一内网网段。
**解决**删除旧打印机后重新添加,使用 `http://服务器IP:631/printers/打印机名` 或 Windows 设置里的“添加打印机”重新发现。
### 问题2SMB 连接失败0x80070035
**原因**445 端口被防火墙/ISP 阻止
### 问题2驱动管理器无法打开
**原因**驱动管理器默认只允许内网来源访问,且需要安装时生成的 `admin` 密码。
**解决**
- 检查云服务器安全组是否开放 445 端口
- 局域网内通常无此问题
- 确认客户端和打印服务器在同一内网
- 查看密码:`cat /opt/cups-driver-manager/.password`
- 查看服务状态:`systemctl status cups-driver-manager`
### 问题3打印任务卡住
**解决**
@@ -219,7 +184,7 @@ locale -a | grep zh_CN
## 十、待测试项目
- [ ] 局域网 Windows SMB 连接
- [ ] 局域网 Windows IPP/CUPS 连接
- [ ] 局域网 macOS/iOS AirPrint 自动发现
- [ ] 局域网 Android Mopria 打印
- [ ] 真实 USB 打印机连接测试