Cups

如何啟用跨網路的 CUPS 瀏覽?

  • April 8, 2013

我有一個定義了兩個列印隊列的 CUPS 伺服器。一旦定義了這一點,同一子網上的所有 CUPS 客戶端都可以自動看到這兩個列印隊列,沒有問題。

現在我在一個單獨的子網上有一組機器,可以通過路由器從第一個子網訪問。

如何在第二台機器上啟用 CUPS 瀏覽,以便他們可以看到在第一台機器上定義的列印隊列?

我們稱伺服器為 ABC7。第一個子網是 ABC0/24。第二個子網是 ABD0/24,兩個網路上都有一個帶 arm 的路由器。

“本機”方式是在每個子網上都有一個 CUPS 伺服器(它們不需要列印機,只需 CUPS 軟體),並將這些伺服器配置為充當瀏覽中繼伺服器。配置將是

BrowsePoll a.b.c.7
BrowseRelay CUPS

然後,執行 CUPS 的伺服器將使用遠端伺服器響應子網本地瀏覽請求。

還有一種方法可以通過多播和服務定位協議來實現,但它根本沒有很好的文件記錄。

杯子 1.6 使用了 dnssd。此組播到 224.0.0.251 埠 5353。由於不允許路由器轉發 224.0.0.251,因此數據包卡在網關邊界上。

您可以在網關上使用 avahi-daemon mDNS 反射器功能。

注意:如果您在網關上進行 nat,則需要為從父網路傳入的數據包設置 NONAT。在shorewall/masq文件中:

<external_interface> <parent_net_ip_range>    NONAT
<external_interface> 224.0.0.0/4     NONAT
<external_interface>:!<parent_net_ip_range>,224.0.0.0/4 <subnet_ip_range> detect

路由器上的 avahi-daemon.conf

[reflector]
enable-reflector=yes

avahi-daemon will reflect incoming mDNS requests to all local network interfaces,  effectively allowing clients to browse mDNS/DNS-SD services on all networks connected to the      gateway. 
Make sure to not run multiple reflectors between the same networks, this might cause them to play  Ping  Pong with mDNS packets.

PS:可能需要破壞數據包以增加生存時間。這是一個需要更多調查的主題,儘管這裡是shorewall/start,原始iptables調整:

/sbin/iptables -t mangle -A PREROUTING -p all -s 224.0.0.0/4 -j TTL --ttl-inc <ttl_inc>
/sbin/iptables -t mangle -A PREROUTING -p all -d 224.0.0.0/4 -j TTL --ttl-inc <ttl_inc>
/sbin/iptables -t mangle -A PREROUTING -p all -s <parent_net_ip_range> -j TTL --ttl-inc <ttl_inc>
/sbin/iptables -t mangle -A PREROUTING -p all -d <parent_net_ip_range> -j TTL --ttl-inc <ttl_inc>

ttl_inc:從一開始的任意數字。我在本地使用 20 個,雖然它不是一成不變的。主要取決於列印機和客戶端站之間交叉的路由器數量。

Gnome 控制中心“列印機”在此處發送 ttl f 255(最大值),因此不需要。

引用自:https://serverfault.com/questions/222706