Windows主机上安装CUPS服务端共享USB打印机实践心得

背景

平时主力机器是Windows,不想额外开一个Linux服务器来共享打印机。由于主力机平时也不关机,尝试在Windows上安装CUPS服务。

结论

先说结论,结论是可行,但是麻烦且不稳定,虚拟机方案少折腾,但是资源消耗大,WSL次之,最后是Docker方案。

技术难点

  1. 应用软件层面
  • CUPS在Windows上没有找到可行的方案。因此得在Linux中安装CUPS。
    • (Windows的自带的共享打印机服务楼主按照各种教程实践没能成功开启)
  1. 硬件层面
  • USB打印机可以直接接入Windows,但是虚拟机、WSL和Docker无法直接使用USB设备。
  1. 系统持久化
  • 让打印机服务开机就可以自动启动,无需后续手动开启。
  1. 网络层面
  • Windows主机到虚拟机/Docker主机/WSL主机的端口映射。

硬件问题思路

CUPS直接在Windows运行貌似不太可行

大体上应该有三种方式:

  • 虚拟机
    • 以 VMWare为例,安装CentOS 7 后,安装LPR和CUPS驱动。
    • 把打印机的USB接口直接接入虚拟机中。
  • WSL
    • 驱动安装与虚拟机一致。
    • USB接口映射需要依赖 USBIP 工具。下载地址:https://github.com/dorssel/usbipd-win
    • 大体上分为两步:
      • 通过bind命令把指定USB端口共享出去
      • 通过attach,通过网络共享该USB接口。
    • 缺点
      • 梯子可能导致失效
      • 重启后失效
  • Docker
    • 很遗憾,Docker并不能像虚拟机一样直接做到USB端口映射,也需要依赖USBIP工具。
      • 如果host和容器设备都是Linux是可以的,但是由于Win和Linux的USB接口实现方式差异太大,Docker没能做到直接映射。

持久化问题思路

  • 设置计划任务
    • 触发时机:启动时
    • 权限:管理员权限
    • 命令记得带参数

网络层面思路

  • 使用Windows主机的端口映射命令。
    netsh interface portproxy add v4tov4 listenport=<监听端口> listenaddress=<监听地址> connectport=<目标端口> connectaddress=<目标地址>
    • 例如:
      netsh interface portproxy add v4tov4 listenport=631 listenaddress=0.0.0.0 connectport=631 connectaddress=192.168.1.100
    • host主机的631端口映射到内部主机的631端口。
    • host端监听所有可用的网络接口。0.0.0.0 意味着无论是本地网络接口还是外部网络接口,任何连接到该主机的631端口请求都可以被接受。
    • 虚拟机/WSL主机/Docker主机的IP为192.168.1.100,端口为631。
  • 允许win防火墙通过631端口
    • netsh advfirewall firewall add rule name="CUPS Printer" dir=in action=allow protocol=TCP localport=631
相关推荐
小龙在山东2 小时前
Python 包管理工具 uv
windows·python·uv
昏睡红猹2 小时前
我在厂里搞wine的日子
windows·wine
love530love5 小时前
Docker 稳定运行与存储优化全攻略(含可视化指南)
运维·人工智能·windows·docker·容器
1024小神10 小时前
tauri项目在windows上的c盘没有权限写入文件
c语言·开发语言·windows
程序视点18 小时前
Window 10文件拷贝总是卡很久?快来试试这款小工具,榨干硬盘速度!
windows
wuk99819 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
lzb_kkk20 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
Paper_Love1 天前
x86-64_windows交叉编译arm_linux程序
arm开发·windows
前端若水1 天前
通过 Windows 共享文件夹 + 手机访问(SMB协议)如何实现
windows·智能手机
超龄超能程序猿2 天前
dnSpy 使用教程
windows·microsoft