我正在尝试诊断我的 LaserJet M551dn (lj500) 和 FreeBSD 系统 (hal9k) 之间的连接问题。问题是我无法再浏览 LaserJet 的 Web 界面(30 秒左右后超时)或打印。两者通过 LAN 和中间 Netgear 8 端口交换机直接连接到 192.168.0/24。
有效的方法:
- 我可以
ping lj500
从 hal9k 顺利获得。 - 我与互联网的任何其他部分的连接都没有问题。
- 我可以从同一局域网上的 Windows 笔记本电脑访问 Web 界面。
- 我可以从 Windows 笔记本进行打印。所以打印机看起来没问题。
我最近做了一些事情(可能会把事情搞糟):
- 将 LaserJet 的固件更新至最新版本 (2309046_000288)。
- 将 FreeBSD 更新到最新版本 (14.0-CURRENT #0 main-n246296-77651151f3ca)。
我尝试过但没有成功:
- 禁用防火墙。
- 将 LAN 电缆重新分配到 Netgear 交换机上的不同端口。
- 直接连接 FreeBSD 和打印机(无需开关)。
- 使用不同的浏览器(Firefox、lynx、netcat)。
- 访问端口 80 (HTTP) 和 433 (HTTPS)。
作为最后的手段,我查看了线路上的流量。我发现系统会产生虚假流量(重新传输和 ACK)。有人能诊断出发生了什么以及为什么吗?这是使用 Wireshark 和过滤器捕获的流量host lj500 and not arp
(ARP 工作正常,只是噪音)。看起来黑色背景的数据包不应该存在(是虚假的)。
HTTPS:
HTTP:
答案1
事实证明,LaserJet 在握手中宣传支持 TCP 时间戳选项,但实际上并未使用它。FreeBSD 随后丢弃数据包。FreeBSD 端可以通过以下方式修改此问题:放宽对 TCP 时间戳的检查
sysctl net.inet.tcp.tolerate_missing_ts=1 # Drops packets when 0.
更好的解决方法是让 LaserJet 正确实现 TCP 时间戳。HP,如果你在听的话...