![为什么 Mac Book Pro 上的 VNC 查看器通过 L2TP 连接到 AWS 时会报告 RFB 协议错误?](https://linux22.com/image/659102/%E4%B8%BA%E4%BB%80%E4%B9%88%20Mac%20Book%20Pro%20%E4%B8%8A%E7%9A%84%20VNC%20%E6%9F%A5%E7%9C%8B%E5%99%A8%E9%80%9A%E8%BF%87%20L2TP%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20AWS%20%E6%97%B6%E4%BC%9A%E6%8A%A5%E5%91%8A%20RFB%20%E5%8D%8F%E8%AE%AE%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我们中的一小部分人在亚马逊网络服务 (AWS) 上工作,我们使用 Mac 笔记本作为台式机,并通过 VNC 连接到在 AWS 上运行的服务器。问题始于我们将 VPN 从 PPTP 升级到 L2TP(带有 Openswan 的 Centos 6)。设置它的同事在使用新 VPN 时没有遇到任何问题。然而,连接几分钟后,我的 VNC 查看器会话就黑了,并报告:
RFB 协议错误:错误的 hextile 数据或 RFB 协议错误:错误的 xrle 数据
以及 RFB(远程帧缓冲区)使用的其他编码协议。这种情况每分钟左右都会发生一次,具体取决于活动情况,在它自行纠正时会延迟长达 10 秒。显然无法使用。我回到 PPTP VPN 并继续使用,没有问题。然而昨天,我们将另一位同事连接到 L2TP VPN,他遇到了和我一样的问题,所以现在我们必须修复它。
唯一明显的区别是,我们两个在使用 VPN 时遇到问题的人,都有 2014 年中期配备视网膜显示屏的 15 英寸 Mac Book Pro(2015 年初与 Yosemite 一起购买),而我的同事没有遇到这个问题,他的 Mac Book Air(13 英寸,2013 年中期)已升级到 Yosemite。
搜索 RFB 协议错误没有找到任何结果,除此之外我甚至不知道要搜索什么甚至询问什么。
任何帮助均感激不尽。
答案1
如果您使用的是 VPN,则最有可能的原因是 MTU 大小设置过大,导致数据包碎片化。
发生这种情况时,某些协议会遇到问题,并且已知会导致 RFB 协议出现一些问题。
如果您有 PV AMI,那么可能值得测试将连接两端的 MTU 调整为较低值是否可以避免出现问题。
答案2
经过大量搜索我发现了这个:
登录 Open Swan VPN 时输入错误导致 MAC 地址损坏 #90
问题的症状完全不同,但硬件设置(带视网膜的 MBP)非常相似。从根本上讲,解决方案似乎是将 VPN 服务器从 PV(半虚拟)AMI(亚马逊机器映像)移至 HVM(硬件虚拟机?)。
我看了这里:
Linux AMI 虚拟化类型
以及此处:
www opswat com/blog/aws-2015-why-you-need-switch-pv-hvm
(如果版主认为可以接受,请重新发布链接)
因此,我去查明我们的 AMI 是 PV 还是 HVM。您可以通过查看 AWS 管理页面上的机器详细信息来判断,有一个字段“虚拟化”,其值为“hvm”或“paravirtual”。因此,我继续查找 Centos 6 HVM 映像并重建了 L2TP 服务器(我使用了 Libreswan)。
现在我很高兴地报告,我和我的同事的 RFB 协议错误已经消失,并且一切运行良好(至少一天)。
我不了解最新的 MacBook、PV/AMI 实例和 VNC RFB 之间的交互,但目前它可以正常工作。
答案3
这不是你想听到的答案,但这是我的经历。
现在是 2021 年,正值 covid 大流行,我这边从未解决这个问题,但我们的设置却相反:我有一台 Macbook 2019,它设置了屏幕共享,而小组中的其他人(10 个人)都在家里或办公室使用 Windows 机器,他们都使用 VNC 5.0.1 连接到那台 Macbook。是的,公司在微薄的 Macbook 上节省开支,并付给我更多钱来“让它活下去”……
我家里确实有一台 Macbook,首先是 2010 年初的,现在(2021 年)我升级到了 2015 年的,我可以告诉你,这不是 Mac 版本。我们之前在“有问题的”机器上运行的所有版本的 OSX 上都遇到过这个问题(真的吗?我说有问题吗?不,对不起,只是开个玩笑)。
我还没有机会测试其他 VNC 版本,例如 Tight VNC 或 Ultra VNC。
我的办公室里有 Windows Desktop VNC Viewer 5.0.1 和 4.6.3 - 我更喜欢 4.6.3 的界面,但两者偶尔都会显示相同的错误。在家里,我不需要连接到 Mac,但当我需要时,为了恢复它,我使用 Mac 原生的“连接到服务器 (CMD-K)”,很高兴它能正常工作。通常只需登录和注销,就足以让其他人再次使用它。
我的结论是“我必须忍受这一点”,因为 Apple 和 VNC 都不会调查它,或者更确切地说,Apple 会做出改变(或者可能根本不会改变)并继续前进……而 VNC 也不会调查……我很高兴能在月底拿到薪水。