Linux
使用 Linux 虛擬機的 VMWare ESXi 主機中的 NAT 極慢
我有一個連接到快速網路的 VMWare ESXi 主機。主機執行兩個虛擬機:
- 網關
- 客戶
網關有兩個網路介面,一個橋接到外部網路 (vSwitch0),另一個橋接到伺服器的內部網路 (vSwitch1)。它安裝了firehol,並且正在為內部客戶端機器進行 NAT 和埠轉發。
客戶端機器有一個內部 IP 並通過網關連接到網際網路。一切正常,但從客戶端到網際網路的傳輸速度非常慢,不到 30kB/s。從網關到網際網路的傳輸速度很快(100Mbit),從網際網路到客戶端的流量也是如此。我嘗試進行網路轉儲以查看問題可能出在哪裡,但沒有找到任何東西。一切看起來就像線路很慢。
此外,兩個虛擬機之間的傳輸速度幾乎是一個完整的千兆位。所以這也不是問題。兩台機器都執行 Debian Lenny,沒有進行特殊修改。我正在為 VMXNET 半虛擬化網路使用 open-vm-tools。
我找到了解決這個問題的方法。
對於完全內部網路(未連接到任何物理網路介面),您需要從作業系統內部禁用 TCP 分段解除安裝。
這是一個簡單的命令:
ethtool -K <interface> tso off
執行此命令後,我的傳輸速度從 30kb/s 變為全 100Mbit。
您是否嘗試使用其他類型的虛擬網卡?E1000 仿真對我來說似乎工作得很好,也許它是基於驅動程序的?