本文為博主原創,轉載請註明出處:
SNAT(Source Network Address Translation,源網路地址轉換)和DNAT(Destination Network Address Translation,目標網路地址轉換)是網路地址轉換(NAT)中的兩種重要技術,它們在實現內部網路與外部網路之間的通訊中發揮著關鍵作用。以下是對這兩種技術的詳細解釋和它們的主要用途:
一、SNAT(源網路地址轉換)
定義: SNAT是一種在IP資料包從內部網路傳送到外部網路時,將源IP地址替換為公共IP地址的技術。這種轉換允許內部網路中的多臺裝置透過共享一個或多個公共IP地址來訪問外部網路。
工作原理: 當內部網路中的裝置傳送資料包到外部網路時,資料包經過NAT裝置(如路由器或防火牆),NAT裝置會自動將資料包的源IP地址替換為配置的公共IP地址。這樣,外部網路中的裝置看到的所有來自內部網路的資料包都似乎來自同一個公共IP地址。
主要用途:
- 地址共享:允許多個內部裝置共享一個或多個公網IP地址訪問網際網路,從而節省公網IP資源。
- 負載均衡:在負載均衡場景中,SNAT可以將內部伺服器的源IP地址替換為負載均衡器的IP地址,以實現流量分發和負載均衡。
- 安全性:透過隱藏內部網路的實際IP地址,SNAT可以增強內部網路的安全性,防止外部直接攻擊內部裝置。
- 簡化網路配置:使用SNAT可以在規劃地址時有更大的靈活性,簡化內部網路的設計和配置。
二、DNAT(目標網路地址轉換)
定義: DNAT是一種在IP資料包從外部網路傳送到內部網路時,將目標IP地址替換為內部網路中的IP地址的技術。這種轉換允許外部網路中的裝置透過公共IP地址訪問內部網路中的特定裝置或服務。
工作原理: 當外部網路中的資料包到達NAT裝置時,NAT裝置會檢查資料包的目標IP地址和埠號,並根據配置的DNAT規則將其替換為內部網路中的相應IP地址和埠號。然後,資料包被轉發到內部網路中的指定裝置。
主要用途:
- 埠對映:將外部網路中的公共IP地址和埠號對映到內部網路中的私有IP地址和埠號,實現遠端訪問、網站託管等功能。
- 負載均衡:在將外部流量分發到內部多個伺服器時,DNAT可以根據負載均衡策略將流量轉發到不同的伺服器。
- 安全性:透過隱藏內部網路的實際IP地址和埠號,DNAT可以在一定程度上增強內部網路的安全性。
三、場景示例
場景假設
- 內部網路:192.168.1.0/24
- 外部網路:網際網路,假設透過ISP獲得的公網IP為1.2.3.4
- 內部伺服器IP:192.168.1.100,希望對外提供服務(例如Web服務)
- NAT伺服器/防火牆IP:內網為192.168.1.1,外網為1.2.3.4
3.1 新增SNAT規則
允許外部訪問內部伺服器,首先,我們需要將到達NAT伺服器的公網IP(1.2.3.4)上的特定埠(例如HTTP的80埠)的資料包轉發到內部伺服器的相應埠。
# 新增SNAT規則
# 將源地址是192.168.1.0/24的資料包的源地址改為1.2.3.4
# 假設出站介面為eth0(連線到外部網路的介面),需要根據實際情況替換
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 1.2.3.4
3.2 新增DNAT規則
允許外部訪問內部伺服器,需要將到達NAT伺服器的公網IP(1.2.3.4)上的特定埠(例如HTTP的80埠)的資料包轉發到內部伺服器的相應埠。
# 新增DNAT規則
# 將目的地址為1.2.3.4且目的埠為80的資料包的目標地址改為192.168.1.100
iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
-t nat
:指定要操作的表為NAT表。NAT表用於地址轉換,包括源地址轉換(SNAT)和目的地址轉換(DNAT)。-A PREROUTING
:向PREROUTING鏈新增一條規則。PREROUTING鏈用於處理進入本機的資料包,在路由決策之前進行。這意味著,對於進入本機的資料包,首先會經過PREROUTING鏈上的規則處理。-d 1.2.3.4
:指定目的IP地址為1.2.3.4的資料包會被這條規則匹配。這意味著,只有當資料包的目的地址是1.2.3.4時,這條規則才會生效。-p tcp
:指定協議型別為TCP。這意味著,只有TCP協議的資料包才會被這條規則匹配。--dport 80
:指定目的埠為80。這意味著,只有目的埠為80的TCP資料包才會被這條規則匹配。-j DNAT
:指定滿足條件的資料包應該執行的動作是DNAT(目的地址轉換)。DNAT用於將資料包的目的地址和/或埠號轉換為其他值。--to-destination 192.168.1.100:80
:指定轉換後的目的地址和埠。這意味著,滿足上述條件的資料包的目的地址將被轉換為192.168.1.100,目的埠將被轉換為80。
本部落格參考楚門加速器p。轉載請註明出處!