X11 轉送時 TCP 連線速度異常緩慢

X11 轉送時 TCP 連線速度異常緩慢

我有一台家用電腦 H(Linux)、一台工作電腦 W(Mac OS X)和一台 IP 11.22.33.44 的公共伺服器 S(與 H 相同的 Linux)。

由於 H 和 W 都位於 NAT 後面,因此我使用 autossh 將它們都連接到 S 並透過隧道相互通訊:

# From H to S
ssh -R :8822:127.0.0.1:22 [email protected]
# From W to S
ssh -R :7722:127.0.0.1:22 [email protected]

當我在辦公室時,我經常 SSH 到 H 並將 X11 轉發回來:

# on W
ssh -X -p 8822 [email protected]
xterm
...

H 和 W 到 S 的延遲都非常低(ping 大約 2-5 毫秒),因此一切都非常順利,直到我的辦公室搬家並且 ISP 發生變化。從 W 到 S 的 ping 仍然很低,而且一切仍然很快,直到 X 轉送開始。每當我嘗試從 H over X11 向前啟動 xterm 時,TCP 連接就會變得非常慢。但是,從 W 到 H 且沒有轉送的其他 SSH 會話仍然保持快速。 Ctrl-C 無回應的 xterm 後,轉送 SSH 工作階段立即恢復回應。

感覺就像有人正在監視 SSH 會話,並且每當進行 X11 通訊時就會減慢速度。為了找出哪個部分出了問題,我做了這樣的測試:

# on W
ssh -R 11.22.33.44:6010:127.0.0.1:6000 [email protected]
# on S
DISPLAY=11.22.33.44:10 xterm  # works fine!
# on H
DISPLAY=11.22.33.44:10 xterm  # unresponsive

奇怪的是,如果xterm 以S 啟動,那就沒問題;如果xterm 以S 啟動,則可以。當它來自 H 時,它會停止,不是 H→S 部分,而是 W→S SSH 會話,因為在上面打字變得非常慢。 Ctrl-C 掛起的 xterm 後,它立即恢復。

這似乎不是網路問題,因為 H→S 和 W→S 都很棒(延遲和頻寬方面)。穿過隧道,W和H之間的scp速度很快;lftp fish://H來自 W 也可以正常工作。

由於這種情況發生在ISP 切換之後,我在想ISP 是否有任何流量限制,但是X11 轉送在W 和S 之間或H 和S 之間的任何方向上都可以正常工作。任何X11 流量,在我能想到的任何方式都會減慢 SSH 連接的速度。

我對這個爛攤子深感困惑。誰能幫我弄清楚我該研究哪一部分?

相關內容