NAT迴流或者說域內NAT是什麼原理?
該問題表現出來的現象是,
路由器將伺服器映射至公網,客戶端也通過該公網映射連接互聯網,但客戶端不能通過映射出來的公網地址進行tcp訪問。還請各位大佬解釋一波。
這個問題可以表達為,為何內網的用戶無法訪問內網的伺服器,像外網用戶一樣,也通過公網IP訪問?
其實如果搞清NAT的來龍去脈,這些行為很好理解。
問題一:內網的用戶可以訪問內網伺服器嗎?
當然可以,因為在一個區域網,都是私有IP。
問題二:外網用戶可以訪問內網伺服器嗎?
不可以,所以我們才需要做靜態NAT,讓外部用戶可以用公網訪問伺服器。問題三:內網用戶可以訪問Internet嗎?
不可以,所以才需要做動態NAT,將內網用戶私有IP,轉換成公網IP。由於公網IP只有一個,而內網用戶IP很多,為了辨別內網用戶session,需要使用IP + 埠號組合的PAT方式。
問題四:內網用戶可以訪問公網IP的內網伺服器嗎?
不可以,在目前的NAT實現機制上,是無法訪問的。退一步說,內網的用戶不是可以訪問私有IP的內網伺服器的嗎?那為何要用公網IP訪問呢?
這裡的關鍵是內網要有一個DNS伺服器,當內網用戶解析伺服器IP時,返回值為私網IP。
當外網用戶域名解析時,返回也是私有IP,但經過NAT設備時,會NAT翻譯成公網IP。
這樣兩種不同方式的訪問,井水不犯河水,自得其樂。謝邀。前段時間在配 Linux 路由器的時候剛好遇到了這個問題。
給您兩種方法參考下吧。
方法 1:增加一條目的 NAT 規則
NAT 前:源地址為內網主機地址,目的地址為伺服器的公網 IP。
NAT 後:源地址為內網主機地址,目的地址為伺服器的內網 IP。
方法 2:在內網部署 DNS 伺服器,將伺服器的域名改為內網 IP,然後客戶端改用域名訪問伺服器。
華為這個案例和題主說的情況比較類似,寫得也比較詳細。
AR G3路由器做了NAT Server後內網用戶無法通過公網地址訪問內網伺服器support.huawei.com摘錄一部分:
根因:
在公網口GE3/0/0上配置了NAT Server,僅對從公網口接收到的數據包進行目的地址的轉換,而內網用戶對伺服器訪問的流量來自私網口,不會觸發目的地址轉換。
原因清楚了解決思路就清晰了,案例里提了四個解決方案,大致可以分為兩個思路:
- 可以通過域名訪問伺服器時,外網用戶解析到公網 IP ,內網用戶解析到私網 IP。
- 只能通過 IP 訪問時,在路由器上進行配置,將內網用戶訪問伺服器的流量正確引導到伺服器。
由於設備廠家不同,具體的方案也不盡相同,總的思路是還是上面兩個。
估計你是用inside和outside做的nat,其實你可以試下用NVI方法做nat看看,直接在介面配置
ip nat enable //不區分inside和outside
ip nat source xxxx //不加inside做映射
如果不可以再追加評論,我再看看具體什麼問題.
這個需要路由器或者防火牆做dnsmap,也就是把dns在內網的訪問映射為內網地址。而外網的訪問不受影響。snat在轉換前需要先找到出口路由。dnat是在路由後做轉換。
軟路由(iptables)是可以的,硬體路由器確實會有這個問題,我也不清楚硬體路由器的NAT和路由選擇具體過程。
華為路由器可以用dns-map來解決這個問題:
#啟用應用層網關
nat alg dns enable#添加dns-map,域名和對應的公網地址
nat dns-map http://www.example.com 112.113.114.115 80 tcp#添加內部伺服器地址,global後接公網地址,inside後接內網地址,www代表80埠
nat server protocol tcp global 112.113.114.115 www inside 10.11.12.13 www效果就是把http://www.example.com解析成10.11.12.13的內網地址,不用搭建內部DNS伺服器了。最簡單的解決方法就是不要把公網地址配置在路由器物理或者loopback介面上,寫下nat pool里就好了。這樣回來的流量就可以匹配到nat記錄轉換成內網地址,而不是認為已經到達該公網地址(如果公網地址在物理介面或者loopback介面)
伺服器那個叫反向映射,一般機器上internet是正向,原理不同
最好能有圖
推薦閱讀:
※低增速現實與高增速需要矛盾凸顯,國產廠商如何破局?
※華為做了哪些噁心的事?
※華為Nova2s用上高端晶元要與低配高價的OV拚命
※華為在技術上和思科相比還相差多大距離?