Nginx

這個路由概念叫什麼?無法了解有關 LAN 到 WAN 到 LAN 路由的更多資訊

  • November 6, 2019

在一個簡單的網路上,當我使用 DNS(例如 foo.com)訪問區域網路內的伺服器時,我的 nginx 日誌將使用網關地址(10.0.0.1)而不是內部客戶端地址(10.0.0.19)。

我正在嘗試閱讀更多關於此的內容,但我不知道它叫什麼。是否有“路由器注意到您試圖訪問網路外部,網路內部資源,並將您的 IP 地址替換為網關地址”的術語?如果這只是一個標準的東西,有沒有我可以閱讀更多的文章?我不太明白為什麼會這樣,但感覺就像是一個我不知道名字的路由器“功能”。

作為網關的 FROM 地址的副作用,回復會轉到路由器(然後返回本地客戶端),而不僅僅是使用交換機。這不是很好,因為 LAN 交換機的吞吐量比路由器高得多,因為路由器執行防火牆功能。

這是一個相當簡單的網路設置:


WAN - (70.x)Router(10.0.0.1) - Switch - (10.0.0.3)  Server
                                     - (10.0.0.19) Client

在區域網路內的電腦(客戶端 10.0.0.19)上,我向 foo.com 發出請求。foo.com 的 DNS 指向路由器上的 WAN 介面,該介面具有到伺服器的埠轉發設置。伺服器內的 nginx 將請求顯示為來自 10.0.0.1 而不是 10.0.0.19。

如果請求來自 WAN,則 nginx 日誌會顯示預期數據。

如果相關,路由器是一個 ubiquiti USG,後面有一個 ubiquiti 交換機。

“路由器注意到您試圖訪問網路外部,網路內部資源,並將您的 IP 地址替換為網關地址”?

那是一種稱為 NAPT(網路地址埠轉換)的 NAT(網路地址轉換)變體。有些人稱它為 PAT(埠地址轉換),因為大型供應商稱它為,但*RFC 2663,IP 網路地址轉換器 (NAT) 術語和注意事項*對此進行了解釋。當你想讓它在裡面環回時,那叫各種東西,取決於廠商(髮夾路由,NAT反射等),非常浪費路由器資源。

有各種資源,包括 RFC。例如,*RFC 3022,Traditional IP Network Address Translator (Traditional NAT)*有第 2.2 節。NAPT 概述

2.2. NAPT 概述

比如說,一個組織有一個私有 IP 網路和一個到服務提供商的 WAN 連結。專用網路的存根路由器在 WAN 鏈路上分配了一個全球有效的地址,組織中的其餘節點具有僅具有本地意義的 IP 地址。在這種情況下,可以允許專用網路上的節點在 NAPT 的幫助下使用單個註冊的 IP 地址同時訪問外部網路。NAPT 將允許將類型(本地 IP 地址、本地 TU 埠號)的元組映射到類型(註冊的 IP 地址、分配的 TU 埠號)的元組。

此模型適合大多數小型家庭辦公室 (SOHO) 組使用單個服務提供商分配的 IP 地址訪問外部網路的要求。該模型可以通過靜態映射每個已註冊 IP 地址的服務 TU 埠的本地節點來擴展以允許入站訪問。

在下圖 3 的範例中,存根 A 在內部使用 A 類地址塊 10.0.0.0/8。服務提供商為存根路由器的 WAN 介面分配了一個 IP 地址 138.76.28.4。

                                 \ | /
                               +-----------------------+
                               |Service Provider Router|
                               +-----------------------+
                             WAN |
                                 |
             Stub A .............|....
                                 |
     ^{s=138.76.28.4,sport=1024, |  v{s=138.76.29.7, sport = 23,
     ^ d=138.76.29.7,dport=23}   |  v d=138.76.28.4, dport = 1024}
                     +------------------+
                     |Stub Router w/NAPT|
                     +------------------+
                       |
                       |  LAN
 --------------------------------------------
    |        ^{s=10.0.0.10,sport=3017, |  v{s=138.76.29.7, sport=23,
    |        ^ d=138.76.29.7,dport=23} |  v d=10.0.0.10, dport=3017}
    |                                  |
   +--+      +--+                    +--+
   |--|      |--|                    |--|
  /____\    /____\                  /____\
 10.0.0.1  10.0.0.2   .....        10.0.0.10

  Figure 3: Network Address Port Translation (NAPT) Operation

當 stub A 主機 10.0.0.10 向主機 138.76.29.7 發送 telnet 數據包時,它使用全域唯一地址 138.76.29.7 作為目標,並將數據包發送到它的主路由器。存根路由器具有子網 138.76.0.0/16 的靜態路由,因此數據包被轉發到 WAN 鏈路。但是,在轉發數據包之前,NAPT 會將 IP 和 TCP 標頭中的源地址 10.0.0.10 和源 TCP 埠 3017 的元組轉換為全域唯一的 138.76.28.4 和唯一分配的 TCP 埠,例如 1024。返迴路徑上的數據包通過目標 IP 地址和目標 TCP 埠的類似地址和 TCP 埠轉換。再次注意,這不需要更改主機或路由器。翻譯是完全透明的。

在此設置中,僅允許 TCP/UDP 會話並且必須源自本地網路。但是,有些服務(例如 DNS)需要入站訪問。可能存在組織希望允許入站會話訪問的其他服務。可以靜態配置一個眾所周知的 TU 埠服務

$$ RFC 1700 $$在存根路由器上被定向到專用網路中的特定節點。 除了 TCP/UDP 會話之外,ICMP 消息(REDIRECT 消息類型除外)也可能被 NAPT 路由器監控。ICMP查詢類型報文的翻譯與TCP/UDP報文類似,ICMP報文頭中的標識符欄位將唯一映射到註冊IP地址的查詢標識符。ICMP 查詢消息中的標識符欄位由查詢發送者設置,並在來自查詢響應者的響應消息中原封不動地返回。因此,(本地 IP 地址,本地 ICMP 查詢標識符)的元組被 NAPT 路由器映射到(註冊的 IP 地址,分配的 ICMP 查詢標識符)的元組,以唯一標識來自任何本地主機的所有類型的 ICMP 查詢。對 ICMP 錯誤消息的修改將在後面的部分中討論,

在 NAPT 設置中,註冊的 IP 地址與存根路由器 WAN 介面的 IP 地址相同,路由器必須確保區分源自自身的 TCP、UDP 或 ICMP 查詢會話與源自上節點的會話本地網路。假設所有入站會話(包括 TCP、UDP 和 ICMP 查詢會話)都定向到作為端節點的 NAT 路由器,除非目標服務埠靜態映射到本地網路中的不同節點。

TCP、UDP 和 ICMP 查詢類型以外的會話根本不允許來自本地節點,由 NAPT 路由器提供服務。

正確的方法是使用拆分 DNS 之類的東西,這樣您的內部流量就不會進入路由器,這樣您就不會浪費 LAN 介面頻寬(雙向),並且您不會將路由器 CPU 和 RAM 用於不應該永遠的流量離開你的網路。

引用自:https://serverfault.com/questions/990881