如何通过 Avahi 宣传 VNC 服务?

如何通过 Avahi 宣传 VNC 服务?

我有一个家庭网络,有两台 Mac 和一台运行 Debian(以及将来可能的其他发行版)的 PC。我目前有阿瓦希在 Debian PC 上设置网络谈话,将 PC 宣传为 iMac。

当我单击 Finder 侧栏中的 Mac Mini 时,我看到以下内容: 在 Finder 边栏中选择了 Mac Mini 该连接通过我的 Apple ID 进行身份验证,除了 AFP 共享之外,还有一个标记为“共享屏幕...”的按钮

当我单击“共享屏幕...”时,会在第一方 macOS VNC 客户端中打开与 Mac Mini 的 VNC 连接。

当我单击 Finder 侧栏中的 Debian PC(“Alpha”)时,我看到以下内容: 在 Finder 侧栏中选择 Debian PC 连接被验证为远程本地用户名,我只看到 Netatalk (AFP) 共享。

请注意,过去我使用 CIFS/SMB 共享而不是 AFP/Netatalk,效果同样好。

在第三方应用程序中屏幕,“附近和远程计算机”显示“Kandinsky”(实际上处于离线状态的旧版 Mac Mini)以及当前的 Mac Mini。目前还不清楚 Screens 是否使用 Bonjour (Avahi) 以及它自己的握手服务 Screens Connect(不支持 Linux)来实现“附近和远程计算机”,但它似乎在这里可能相关。 Edovia 屏幕“附近和远程计算机”显示两台本地 Mac 我使用 Screens 的原因是 GNOME 默认 VNC 服务器的身份验证协议与第一方 macOS VNC 客户端不兼容。或类似的东西。 (这是一个已知的问题。

反正。

当我运行命令时

$ avahi-browse --all --ignore-local --resolve --terminate

在 Debian PC 上,输出包括以下内容:

+ enp3s0 IPv6 Mac Mini    VNC Remote Access    local
+ enp3s0 IPv4 Mac Mini    VNC Remote Access    local
= enp3s0 IPv6 Mac Mini    VNC Remote Access    local
   hostname = [macmini.local]
   address = [192.168.4.63]
   port = [5900]
   txt = []

= enp3s0 IPv4 Mac Mini    VNC Remote Access    local
   hostname = [macmini.local]
   address = [192.168.4.63]
   port = [5900]
   txt = []

(我的 MacBook 没有显示,因为它没有启用屏幕共享。)

我知道我可以执行以下操作dns-sd在我的 Mac 上:

% dns-sd -B <type> <domain>

这可能会给我一些有用的信息,但是

% dns-sd -B

不显示 Mac Mini,并尝试浏览“VNC 远程访问”:

% dns-sd -B "VNC Remote Access"
Browsing for VNC Remote Access._tcp
DNSService call failed -65540

不起作用,所以这似乎是一个死胡同。

在所有这些背景下重申我的问题:

如何让 Debian PC 上的 Avahi 守护程序宣传 VNC 远程访问?

虽然我对使用第一方 macOS VNC 客户端持悲观态度,但我看好如果 Debian PC(它以 iMac 的形式呈现)将自己呈现为拥有 VNC Remote,那么可能会出现其他可能性使用权。

我对解决方案的最佳猜测是,我将创建一个 Avahi 服务文件,但 Avahi 文档(例如 的手册页avahi.service(5))在这方面非常少。我当前设置的唯一服务是/etc/avahi/services/afp.service,其内容如下:

$ cat /etc/avahi/services/afp.service
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
 <name replace-wildcards="yes">%h</name>
  <service>
   <type>_afpovertcp._tcp</type>
   <port>548</port>
  </service>
  <service>
   <type>_device-info._tcp</type>
   <port>0</port>
   <txt-record>model=iMac</txt-record>
  </service>
  <service>
   <type>_adisk._tcp</type>
   <port>9</port>
   <txt-record>sys=waMa=0,adVF=0x100,adVU=fbdbccf4-6b71-4995-8fa7-ad066939d808</txt-record>
   <txt-record>dk0=adVN=Backups,adVF=0x81</txt-record>
  </service>
</service-group>

知道如何为 VNC 创建相应的文件吗?

或者我需要做什么?

答案1

我刚刚在我的 Pi 上设置了这个,也运行 Debian & 我希望这可以帮助其他人做类似的事情。

在你的 Debian 机器上,它归结为创建vnc.service一个/etc/avahi/services.

您可以从 `/usr/share/doc/avahi-daemon/examples; 复制示例;对于 VNC,它应该如下所示:

<service-group>
  <name replace-wildcards="yes">%h</name> 
  <service>
    <type>_rfb._tcp</type>
    <port>5900</port>
  </service> 
</service-group>

保存后,重新加载 Avahi 以将其拾取:

sudo systemctl restart avahi-daemon.service

关于从 Mac 终端浏览,VNC 的类型为“_rfb._tcb”(请参阅众所周知的服务类型列表:

dns-sd -B  _rfb._tcp

andy@XXX ~ % dns-sd -B  _rfb._tcp
Browsing for _rfb._tcp
DATE: ---Thu 26 Aug 2021---
14:20:50.925  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
14:20:50.926  Add        3   4 local.               _rfb._tcp.           rpi
14:20:50.926  Add        3   5 local.               _rfb._tcp.           rpi

我通常更喜欢使用 GUIDiscovery(以前称为 Bonjour 浏览器),Mac 和 iOS 版 App Store 中也是免费的。

相关内容