我目前正在 2 個站點設定環境。所有伺服器都是linux/ubuntu。第一個站點是我的辦公室,第二個站點是 AWS。我在 AWS 中的 VPC 中有 2 台伺服器,具有站點到站點 VPN Web01 - 172.31.24.106 Revproxy01 - 172.31.17.216
我在辦公室有 1 台伺服器和 1 個 IP 攝影機 Server1 - 192.168.102.1 Camera1 - 192.168.102.79
VPN 位於 Server1 (IPSec Strongswan) 上,並設定為連接到 AWS 端的 AWS 站點到站點 VPN。
經過大量研究和時間,我已經一切就緒並運行,Web01 和 Revproxy01 可以 ping Server1,並且 Server1 可以 ping Web01 和 Revproxy01。
我的下一步是能夠從 Web01 和 RevProxy01 對 Camera1 執行 ping 操作。我最終想從 web01 和 Revproxy01 訪問相機 http feed
我想我需要設定路由(在 Server01 上)以透過 Server1 將資料從 Web01 傳遞到 Camera01。
我非常感謝有人的幫助並學習如何做到這一點?
答案1
好的,我不知道您對路由的工作原理了解多少,所以我將嘗試解釋一下,然後看看您能從我的解釋中理解多少。這個解釋並不完全正確,因為實際上有更多的輪子在轉動,但應該足夠了。
在網路中的每一跳,IP 堆疊都會查看每個傳入的 IP 封包。它比較了目的地IP 位址及其路由表。您可以看到帶有 的路由表ip route
。
首先,它檢查封包的 IP 是否對應到它自己的介面之一。如果是,則封包的目的地是該跳本身,並且該跳「吞噬」該封包(將其向上推向 TCP 堆疊)。
如果封包的目的地不是該躍點本身,則該躍點會檢查並從最重要的路由到最不重要的路由遍歷自己的路由表。 A/24
告訴您 32 位元中有 24 位元是有效的。那麼A/16
就不那麼重要了。在 IP 堆疊的情況下,ip route
將從下到上將封包的 IP 位址與顯示的路由進行比較。第一個與資料包 IP 相符的路由獲勝。因此,當使用目標 IP 192.168.102.10 遍歷路由表時,路由 192.168.0.0/16 將與封包相符。 192.0.0.0/16 路由則不會。您可以使用該sipcalc
工具來顯示網路位址資訊。
最後匹配的路由將是匹配所有內容的預設路由。
每條路由都包含下一跳,即封包將發送到的位置。您也許可以在 中更好地看到下一跳/sbin/route -n
。它是「路由器」列,還是「介面」列,取決於路由表示的網路是否直接連接到該躍點上存在的網路介面。
當封包通過 VPN 隧道時,IP 封包將被包裝在另一個封包中。因此,就您而言,只有 VPN 入口點和出口點的內部 IP 才會被計算在內。資料包「神奇地」進入入口點並從出口點跳出。
因此,現在您應該能夠確定封包應採取的每一跳路徑,包括來源跳數和目標跳數。如果它沒有採取您喜歡的路徑,那麼您必須添加相應的路線。這可以是單一主機路由,也稱為192.168.102.79/32
(所有位元都很重要!僅匹配單一主機!)。尋找 的一些範例ip route add
。
您還想做的是觀察經過躍點的資料包。你可以用tcpdump -n -i interface
它(f.ex. tcpdump -n -i eth0
)。因此,如果您看到資料包經過 hop1,並且您認為它應該前往 hop2,但您看不到它經過 hop2,則 hop1 上的路由可能是錯誤的,並將資料包發送到錯誤的目的地。
這樣您應該能夠逐跳分析每個路由表,從來源到目的地,查看封包的路由應該在每一跳上,可能會添加路由,以便資料包採取正確的路徑,並驗證它們確實與tcpdump
.
請注意,從源頭到目的地的兩條路線和後面需要正確配置。
請注意,錯誤的路由可能會導致無法透過網路存取電腦。因此,您可能希望有一種透過獨立機製而不是透過網路來重新啟動電腦的方法。
一旦您的路由工作正常,請確保它能夠在重新啟動後繼續存在。 F. 前。透過寫入新路由/etc/network/interfaces
(您需要註冊的位置取決於該機器上網路堆疊的配置方式。這在不同的 Unix、Linux 發行版等之間有很大差異)
我希望這對您有進一步的幫助。