如何對 VPN 連線上的封包遺失問題進行疑難排解?

2 分的閱讀內容
0

我的 VPN 連線有連續或間歇性的封包遺失和高延遲問題。我想執行測試以確保問題不會發生在我的 Amazon Virtual Private Cloud (Amazon VPC) 中。

解決方法

在開始效能測試之前,啟動並設定您的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體:

  1. 依照啟動執行個體中的步驟,在相同 VPC 下至少兩個不同的可用區域中啟動 Linux 執行個體。您可以從執行個體執行網路效能測試。
  2. 為了獲得最佳的網路效能,請確定執行個體支援 Linux 的增強型聯網,並在相同 VPC 中啟動執行個體。
  3. 如果您要在非同一放置群組中或不支援 Jumbo 框架的執行個體之間執行網路測試,請依照在 Linux 執行個體上檢查並設定 MTU 的步驟執行。
  4. 完成連線到 Linux 執行個體中的步驟,以確認您是否可以存取執行個體。

使用 mtr 檢查 ICMP 或 TCP 封包丟失和延遲

在兩個執行個體上安裝 mtr 網路工具,以檢查是否有任何 ICMP 或 TCP 封包遺失和延遲。mtr 提供持續更新的輸出,可讓您隨時間分析網路效能。它在單一網路診斷工具中結合了 tracerouteping 的功能。

在 Amazon Linux 上安裝 mtr

sudo yum install mtr

在 Ubuntu 上安裝 mtr

sudo apt-get install mtr

在 EC2 執行個體的私有和公有 IP 地址與內部部署主機雙向之間執行下列測試。當方向反轉時,TCP/IP 網路上節點之間的路徑可能會變更。注意:在兩個方向上獲得 mtr 結果非常重要。

第一個 mtr 測試是基於 ICMP 的,但第二個測試有 -T 選項,可給您一個基於 TCP 的結果。基於 TCP 的結果可協助您確定連線上是否有任何應用程式型封包遺失或延遲。MTR 版本 0.85 及以上版本具有 TCP 選項。

私有 IP 測試:

mtr -n -c 200 <Private IP EC2 instance/on-premises host> --report
mtr -n -T -c 200 <Private IP EC2 instance/on-premises host> --report

公有 IP 測試:

mtr -n -c 200 <Public IP EC2 instance/on-premises host> --report
mtr -n -T -c 200 <Public IP EC2 instance/on-premises host> --report

使用 Linux traceroute 公用程式確定延遲或路由問題

Linux traceroute 公用程式可識別從用戶端節點到指定目標節點的路徑。它也會顯示路徑中識別的每個路由器回應要求的時間 (以毫秒為單位)。此外,公用程式也會計算並顯示每個躍點到達目標之前所花費的時間量。如果未安裝 traceroute,請務必將其安裝在您的執行個體上。

在 Amazon Linux 上安裝 traceroute

sudo yum install traceroute

在 Ubuntu 上安裝 traceroute

sudo apt-get install traceroute

在 EC2 執行個體的私有和公有 IP 地址與內部部署主機雙向之間執行下列測試。當方向反轉時,TCP/IP 網路上節點之間的路徑可能會變更。在兩個方向上獲得追蹤路由結果非常重要。 私有 IP 測試:

sudo traceroute <private IP of EC2 instance/on-premises host>
sudo traceroute -T -p 80 <private IP of EC2 instance/on-premises host>

公有 IP 測試:

sudo traceroute <public IP of EC2 instance/on-premises host>
sudo traceroute -T -p 80 <public IP of EC2 instance/on-premises host>

**注意:**引數 -T -p 80 -n 會在連接埠 80 上執行基於 TCP 的追蹤。確保您有連接埠 80 或要在兩個方向上開啟要測試的連接埠。

用來指定 TCP 型追蹤而非 ICMP 的 Linux traceroute 選項非常有用,因為大多數網際網路裝置會取消 ICMP 型追蹤請求的優先順序。一些逾時的請求是常見的,因此請注意封包遺失到目的地或路由的最後一個躍點。累積在多個躍點上的封包遺失也可能表示有問題。

**注意:**使用 traceroute 對網路連線進行疑難排解時,雙向執行指令會很有幫助。

使用 hping3 來確定延遲或 TCP 封包遺失問題

hping 是一個面向命令行的 TCP/IP 封包彙編器/分析器。除了 ICMP 回應請求外,它還支援 TCP、UDP 和 RAW-IP 通訊協定。它還具有跟踪路徑模式,可以在覆蓋的通道之間傳送檔案以及許多其他功能。

如果未安裝 hping3,請在 Amazon Linux 上執行下列命令:

sudo yum --enablerepo=epel install hping3

執行下列命令:

hping3 -S -c 50 -V <Public IP of EC2 instance or on-premises host>
hping3 -S -c 50 -V <Private IP of EC2 instance or on-premises host>

**注意:**根據預設,hping3 將 TCP 標頭傳送到目標主機的連接埠 0,winsize 為 64 且沒有 TCP 旗標。

使用 tcpdump 的封包擷取範例

複製問題時,您可以在 EC2 執行個體 (存在於多個可用區域) 和內部部署主機上執行封包擷取。這些封包擷取範例有助於確定 VPN 連線上是否有任何網路層問題。在您的執行個體上安裝 tcpdump 以執行封包擷取。

在 Amazon Linux 上安裝 tcpdump

sudo yum install tcpdump

在 Ubuntu 上安裝 tcpdump

sudo apt-get install tcpdump

**注意:**如需如何檢查網路裝置以進行分析和疑難排解的指示,請參閱您的特定廠商說明文件。


相關資訊

如何在同一個 Amazon VPC 中對 Amazon EC2 Linux 執行個體上的網路輸送量進行基準測試?

AWS 官方
AWS 官方已更新 2 年前