進階 NAT - 將 PAT 與 NAT 混合

進階 NAT - 將 PAT 與 NAT 混合

我剛剛將 Ubuntu 伺服器配置為具有 NAT/PAT 的路由器,並且我正在嘗試執行以下操作:

我在一所學校工作,該學校將其網路劃分為透過路由器連接的較小網路。我需要建立一個在一個房間的內部網路上可見的 IP 位址,它將所有流量轉送到外部 IP 位址。

解釋一下,這是配置:

NAT 外部:eth1 - 192.168.1.254/24

NAT 內部:br0 - 192.168.2.10,偽裝已啟用

我需要創建一個像 192.168.2.1 這樣的位址,也適用於 br0,它將把所有流量轉發到 IP 192.168.1.1,並且看起來好像該 IP 直接連接到網絡,但不會在其上啟用偽裝。

基本想法是將 br0 的路由器位址設定為 192.168.2.10,並將 br0 設定為另一個不偽裝的位址,並將所有流量轉送到 192.168.1.1,即主路由器的位址。原因是 br0 是實體網路和 VPN 之間的橋樑,可以從具有與目標 NAT IP 位址相同的位址 - 192.168.1.1 的路由器後面存取該 VPN。由於我無法確保客戶端始終可以發出“路由新增”命令,因此我需要一種方法來規避此問題。

我找到如何為 br0 配置輔助 IP 位址,並將 br0:1 配置為 192.168.2.1,但我似乎無法將所有流量轉送到 192.168.1.1。

我預先感謝您的幫助。

答案1

如果我理解正確的話,您嘗試做的實際上是一種涉及一些 NAT 的策略路由形式。聽起來您只是想為該子網路上特定路由子網路之外的某個主機建立別名。

您可以建立 DNAT 規則,而無需相應的 SNAT(或偽裝)。沒有這樣做的原因只是大多數 NAT 旨在解決連線問題,否則 NAT「內部」的位址將無法從「外部」路由。如果實際上主機 192.168.1.1 有一條返回 192.168.2.0/24 或其他任何位址的路由,那麼您確實可以設定 DNAT 規則(如果我記得的話):

iptables -t nat -A PREROUTING -s 192.168.2.0/24 -d 192.168.2.1 -j DNAT --to 192.168.1.1

現在,停下來一會兒,暫時不要這樣做。

當 192.168.2.1 是目標位址時,這種方法有效(並且會產生一個奇怪的現象,即回覆流量的位址與原始目標不同)。從你的描述來看,我認為這不是你想要做的,儘管我真的不確定。如果 192.168.2.1 主機應該充當路由器而不是目的地,那麼執行 DNAT 根本沒有幫助。如果它應該充當路由器,NAT(或 PAT)根本沒有幫助。

聽起來您有 VPN 流量傳入,如果我沒有正確理解您的意思並按原樣填寫空白,則最終會橋接到此子網 192.168.2.0/24,並且它需要到達廣闊的世界或某個子集它通過此網關192.168.1.1。在這種情況下,要做的就是只需將 192.168.2.1/24(我想您已將其設定為 VPN 用戶端上的預設閘道)指派給您的路由器,確保已啟用轉發,然後就可以開始了 - VPN 用戶端無需擔心下一跳是 192.168.1.1,就像其原始預設非 VPN 網關(家庭網關?)一樣;當資料包傳輸時,他們完全沒有意識到這一點。 ISP 一直使用這種具有 RFC1918 位址的方案,以避免意外地浪費稀缺的可路由位址;並不要求路徑上的所有路由器都具有唯一的位址(儘管當它們確實具有時,這使得故障排除變得更加容易)。這裡的技巧是 TCP 連線的端點不需要知道任何東西,只需要知道下一跳的 IP 位址。

如果您已經執行此操作但遇到問題,請檢查返迴路徑。當您將流量傳送到 NAT 之外(仍將其視為 192.168.2.0/24)時,位於 192.168.1.1 的網關可能沒有對這些位址進行 NAT,對它們進行了防火牆處理,或沒有適當的回傳路由至192.168.2.0/24。

如果我在這兩方面都誤解了您的意圖,那麼第三件事可能會對您有所幫助。在 iptables 中指定網關的唯一方法是使用 TEE 目標,它克隆資料包並將克隆原封不動地路由到某個任意主機。不過,您需要以某種方式處理未複製的資料包。此目標可以加入到 mangle PREROUTING 鏈中:

iptables -t mangle -A PREROUTING -s 192.168.2.0/24 -j TEE --gateway 192.168.1.1

這是一件很奇怪的事;這是為記錄流量而設計的,而不是路由它。我想你可以在 iptables 的後期處理掉原始資料包,儘管這只是一團糟,我真的不建議這樣做。

作為隨機點,您可以使用該ip addr add命令向介面新增其他 IP 位址。不要使用網路工具(ifconfig);它很古老並且缺少許多功能,從長遠來看只會讓您頭痛。

相關內容