來源網路位址轉換 (SNAT) 與 Azure NAT 閘道
來源網路位址轉換 (SNAT) 允許來自私人虛擬網路的流量連線到因特網,同時保持完全私人。 SNAT 會將原始封包的來源IP和埠重寫為公用IP和埠組合。 埠會作為唯一標識符來區分彼此的不同連線。 因特網會使用五個 Tuple 哈希(通訊協定、來源 IP/埠、目的地 IP/埠)來提供這項區別。
SNAT 也允許虛擬網路內的多個私人實例使用相同的單一公用IP位址或一組IP位址(前置詞)來連線到因特網。
NAT 閘道可啟用多對一 SNAT 功能。 子網中的許多私人實例都可以將 SNAT SNAT 連線至連接至 NAT 閘道的公用 IP 位址,以連線到因特網。 當 NAT 閘道對相同的目的地端點進行多個連線時,每個新連線都會使用不同的 SNAT 埠,以便彼此區別連線。
來源連接埠用盡可用的 SNAT 連接埠以區分新的連線時,會發生 SNAT 連接埠耗盡。 發生 SNAT 埠耗盡時,聯機會失敗。
調整 NAT 閘道的 SNAT
調整 NAT 閘道主要是一項管理共用、可用 SNAT 連接埠庫存的功能。
SNAT 連接埠清查是由公用IP位址、公用IP前綴或同時連結至NAT閘道所提供。 SNAT 埠清查會隨選提供給連結至 NAT 閘道之子網內的所有實例。 隨著子網私人實例的工作負載調整,NAT 閘道會視需要配置 SNAT 埠。
當虛擬網路內的多個子網連結至相同的 NAT 閘道資源時,NAT 閘道所提供的 SNAT 埠清查會跨所有子網共用。
單一 NAT 閘道最多可擴大至 16 個 IP 位址。 每個 NAT 閘道公用 IP 位址提供 64,512 個 SANT 連接埠以建立輸出連線。 NAT 閘道可以擴大至超過 1 百萬個 SNAT 連接埠。 TCP 和 UDP 是不同的 SNAT 連接埠庫存,且與 NAT 閘道無關。
NAT 閘道會動態配置 SNAT 連接埠
NAT 閘道會在子網的私人資源之間動態配置 SNAT 埠,例如虛擬機。 所有可用的 SNAT 埠都會隨選使用 NAT 閘道所設定子網中的任何虛擬機。
圖:SNAT 埠配置
其他 SNAT 方法需要將 SNAT 埠預先配置至每個虛擬機。 此 SNAT 埠預先配置可能會導致某些虛擬機上的 SNAT 埠耗盡,而其他虛擬機仍有可用的 SNAT 埠來連線輸出。
使用 NAT 閘道時,不需要預先配置 SNAT 埠,這表示虛擬機不需要預先配置 SNAT 埠。
發行 SNAT 埠之後,即可供設定為 NAT 閘道之子網內的任何虛擬機使用。 隨選配置允許子網路上的動態和分歧工作負載視需要使用 SNAT 連接埠。 只要 SNAT 埠可供使用,SNAT 流程就會成功。
圖:SNAT 埠耗盡
NAT 閘道 SNAT 連接埠選取和重複使用
NAT 閘道會隨機從可用的埠清查中選取 SNAT 埠,以建立新的輸出連線。 如果 NAT 閘道找不到任何可用的 SNAT 連接埠,則會重複使用 SNAT 連接埠。 相同的 SNAT 埠可用來同時連線到多個不同的目的地。
SNAT 連接埠可以重複使用以連線到相同的目的地端點。 在重複使用埠之前,NAT 閘道會在連線關閉之後,將 SNAT 埠重複使用定時器放在埠上冷卻。
SNAT 埠重複使用定時器有助於防止選取埠太快,無法連線到相同的目的地。 當目的地端點已設定防火牆或其他服務,以將冷卻定時器放在來源埠上時,此程式會很有説明。 SNAT 埠重複使用定時器會根據連線流程關閉的方式而有所不同。 若要深入了解,請參閱連接埠重複使用計時器。
圖:SNAT 埠重複使用
NAT 閘道的範例 SNAT 流程
使用 NAT 閘道對一個 SNAT
NAT 閘道提供多個對一個組態,其中已設定NAT閘道子網內的多個私人實例可以使用相同的公用IP位址來連線輸出。
在下表中,兩個不同的虛擬機 (10.0.0.1 和 10.2.0.1) 會連線到 https://microsoft.com 目的地 IP 23.53.254.142。 使用公用 IP 位址 65.52.1.1 設定 NAT 閘道時,每個虛擬機器來源 IP 會轉譯為 NAT 閘道公用 IP 位址和 SNAT 連接埠:
Flow | 來源元組 | SNAT 之後的來源元組 | 目的地元組 |
---|---|---|---|
1 | 10.0.0.1:4283 | 65.52.1.1:1234 | 23.53.254.142:80 |
2 | 10.0.0.1:4284 | 65.52.1.1:1235 | 23.53.254.142:80 |
3 | 10.2.0.1:5768 | 65.52.1.1:1236 | 23.53.254.142:80 |
IP 偽裝 或 埠偽 裝是在連線到因特網之前,將私人IP和埠取代為公用IP和埠的行為。 多個私人資源可以偽裝在 NAT 閘道的相同公用 IP 後方。
NAT 閘道會重複使用 SNAT 埠以連線到新的目的地
如先前所述,NAT 閘道可以重複使用相同的 SNAT 埠,同時連線到新的目的地端點。 在下表中,NAT 閘道會將流程 4 轉譯為已用於其他目的地的 SNAT 埠(請參閱上表的流程 1)。
Flow | 來源元組 | SNAT 之後的來源元組 | 目的地元組 |
---|---|---|---|
4 | 10.0.0.1:4285 | 65.52.1.1:1234 | 26.108.254.155:80 |
NAT 閘道 SNAT 埠冷卻以重複使用至相同的目的地
在 NAT 閘道重複使用 SNAT 埠以建立與相同目的地連接點的新連線的情況下,SNAT 埠會先放在 SNAT 埠重複使用階段,以便冷卻。 SNAT 埠重複使用期間有助於確保連線到相同目的地時,SNAT 埠不會太快重複使用。 在目的地端點具有具有其來源埠定時器的防火牆,以便就地冷卻的情況下,此 SNAT 埠重複使用在 NAT 閘道上進行冷卻會很有説明。
為了示範此 SNAT 埠重複使用冷卻行為,讓我們進一步瞭解上表的流程 4。 Flow 4 已連線到防火牆前端的目的地端點,並具有 20 秒的來源埠冷卻定時器。
Flow | 來源元組 | SNAT 之後的來源元組 | 目的地元組 | 封包類型連線已關閉, | 來源埠的冷卻目的地防火牆定時器 |
---|---|---|---|---|---|
4 | 10.0.0.1:4285 | 65.52.1.1:1234 | 26.108.254.155:80 | TCP FIN | 20 秒 |
連線 流量 4 會使用 TCP FIN 封包關閉。 由於連線已使用 TCP FIN 封包關閉,NAT 閘道會將 SNAT 連接埠 1234 置於冷卻狀態 65 秒後,才能重複使用。 由於埠 1234 的冷卻時間超過防火牆來源埠冷卻定時器持續時間 20 秒,因此連線流程 5 會繼續重複使用 SNAT 埠 1234 而沒有問題。
Flow | 來源元組 | SNAT 之後的來源元組 | 目的地元組 |
---|---|---|---|
5 | 10.2.0.1:5769 | 65.52.1.1:1234 | 26.108.254.155:80 |
請記住,NAT 閘道會根據先前連線關閉的方式,將 SNAT 埠放在不同的 SNAT 埠下重複使用冷卻定時器。 如需 SNAT 埠重複使用定時器的詳細資訊,請參閱 埠重複使用定時器。
請勿依存於上述範例中指派來源埠的特定方式。 上述只是基本概念的圖例。