設定NAT 網路
文章推薦指數: 80 %
NAT 概觀; 建立NAT 虛擬網路; 連接虛擬機器; 設定範例︰將VM 和容器連結到NAT 網路 ... Windows 10 Hyper-V 可促成虛擬網路的原生網路位址轉譯(NAT)。
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
其他資訊
目錄
結束焦點模式
閱讀英文
儲存
共用
Twitter
LinkedIn
Facebook
電子郵件
WeChat
目錄
閱讀英文
儲存
目錄
閱讀英文
儲存
Twitter
LinkedIn
Facebook
電子郵件
WeChat
目錄
設定NAT網路
發行項
03/19/2022
9位參與者
此頁面有所助益嗎?
Yes
No
還有其他意見反應嗎?
系統會將意見反應傳送給Microsoft:按下[提交]按鈕,您的意見反應將用來改善Microsoft產品和服務。
隱私權原則。
送出
謝謝。
本文內容
Windows10Hyper-V可促成虛擬網路的原生網路位址轉譯(NAT)。
本指南將逐步引導您完成:
建立NAT網路
將現有的虛擬機器連接到新網路
確認虛擬機器已正確連接
需求:
Windows10年度更新版或較新版本
已啟用Hyper-V(指示在這裡)
注意:目前,每個主機只能有一個NAT網路。
如需WindowsNAT(WinNAT)實作、功能及限制的其他詳細資料,請參閱WinNAT功能與限制部落格
NAT概觀
NAT讓虛擬機器透過內部的Hyper-V虛擬交換器,使用主機電腦的IP位址和連接埠存取網路資源。
網路位址轉譯(NAT)是設計來節省IP位址的網路模式,它會將外部IP位址和連接埠對應至較大集合的內部IP位址。
基本上,NAT使用流程表將來自外部(主機)IP位址和連接埠號碼的流量,路由傳送到已與網路上的端點(虛擬機器、電腦、容器等)建立關聯的正確內部IP位址。
此外,NAT還可藉由將通訊連接埠與唯一外部連接埠對應,以讓多部虛擬機器裝載需要相同(內部)通訊連接埠的應用程式。
由於所有這些理由,NAT網路是非常普遍的容器技術(請參閱容器的網路功能)。
建立NAT虛擬網路
讓我們逐步解說如何設定新的NAT網路。
以系統管理員身分開啟PowerShell主控台。
建立內部交換器。
New-VMSwitch-SwitchName"SwitchName"-SwitchTypeInternal
尋找您剛才建立之虛擬交換器的介面索引。
您可以藉由執行來尋找介面索引Get-NetAdapter
您的輸出看起來應該像這樣︰
PSC:\>Get-NetAdapter
NameInterfaceDescriptionifIndexStatusMacAddressLinkSpeed
--------------------------------------------------------
vEthernet(intSwitch)Hyper-VVirtualEthernetAdapter24Up00-15-5D-00-6A-0110Gbps
Wi-FiMarvellAVASTARWireless-ACNet...18Up98-5F-D3-34-0C-D3300Mbps
BluetoothNetwork...BluetoothDevice(PersonalArea...21Disconnected98-5F-D3-34-0C-D43Mbps
內部交換器會有類似vEthernet(SwitchName)的名稱,和介面描述Hyper-VVirtualEthernetAdapter。
記下其ifIndex以用於下一個步驟。
使用New-NetIPAddress設定NAT閘道。
下面是一般的命令︰
New-NetIPAddress-IPAddress
一般格式為a.b.c.1(例如172.16.0.1)。
最後一個位置不一定要是.1,不過通常是如此(根據首碼長度)
常見的閘道IP是192.168.0.1
PrefixLength--Nat子網前置長度會定義(子網路遮罩)的nat本地子網大小。
子網路首碼長度將是一個介於0到32之間的整數值。
0會對應整個網際網路,32則只允許一個對應的IP。
常見的值範圍從24到12,視必須附加至NAT的IP數量而定。
常見的PrefixLength是24-這是子網路遮罩255.255.255.0
InterfaceIndex--ifIndex是虛擬交換器的介面索引(您已在上一步中判斷出)。
請執行下列命令,以建立NAT閘道:
New-NetIPAddress-IPAddress192.168.0.1-PrefixLength24-InterfaceIndex24
使用New-NetNat設定NAT網路。
下面是一般的命令︰
New-NetNat-Name
您將使用它來移除NAT網路。
InternalIPInterfaceAddressPrefix-NAT子網路首碼說明上述的NAT閘道IP首碼,以及上述的NAT子網路首碼長度。
一般格式將為a.b.c.0/NAT子網路首碼長度
從上述說明,在本例中,我們將使用192.168.0.0/24
針對我們的範例,執行下列命令以設定NAT網路︰
New-NetNat-NameMyNATnetwork-InternalIPInterfaceAddressPrefix192.168.0.0/24
恭喜!您現在有了虛擬NAT網路了!若要新增虛擬機器至NAT網路,請遵循這些指示。
連接虛擬機器
若要將虛擬機器連接到新的NAT網路,請使用[VM設定]功能表將您在NAT網路設定一節的第一個步驟中建立的內部交換器,連接到您的虛擬機器。
因為WinNAT本身不會將IP位址配置和指派到端點(例如VM),所以您必須從VM內手動執行此操作,也就是在NAT內部首碼的範圍內設定IP位址、設定預設閘道IP位址,以及設定DNS伺服器資訊。
唯一要注意的是端點連結到容器的時機。
在本例中,主機網路服務(HNS)會配置並使用主機計算服務(HCS)直接將IP位址、閘道IP和DNS資訊指派給容器。
設定範例︰將VM和容器連結到NAT網路
如果要將多個VM和容器連結到單一NAT,您必須確定NAT內部子網路首碼夠大,足以納入不同應用程式或服務(例如DockerforWindows和WindowsContainers–HNS)所指派的IP範圍。
這需要應用程式層級的IP指派和網路設定,或是必須由管理員手動設定,並保證不會在相同的主機上重複使用現有的IP指派。
DockerforWindows(LinuxVM)和WindowsContainers
下方的解決方案會讓DockerforWindows(執行Linux容器的LinuxVM)和WindowsContainers使用不同的內部vSwitch,共用同一個WinNAT執行個體。
Linux和Windows容器間的連線都會正常運作。
使用者已透過名為“VMNAT”的內部vSwitch將VM連線到NAT網路,現在想要安裝具有docker引擎的WindowsContainer功能
PSC:\>Get-NetNat“VMNAT”|Remove-NetNat(thiswillremovetheNATbutkeeptheinternalvSwitch).
InstallWindowsContainerFeature
DONOTSTARTDockerService(daemon)
Edittheargumentspassedtothedockerdaemon(dockerd)byadding–fixed-cidr=
使用者已安裝執行docker引擎的WindowsContainer功能,現在想要將VM連線到NAT網路
PSC:\>Stop-Servicedocker
PSC:\>Get-ContainerNetwork|Remove-ContainerNetwork-force
PSC:\>Get-NetNat|Remove-NetNat(thiswillremovetheNATbutkeeptheinternalvSwitch)
Edittheargumentspassedtothedockerdaemon(dockerd)byadding-b“none”optiontotheendofdockerdaemon(dockerd)commandtotelldockernottocreateadefaultNATnetwork.
PSC:\>New-ContainerNetwork–namenat–ModeNAT–subnetprefix
最後,您應該要有兩個內部VM交換器,而且兩者共用一個NetNat。
多個應用程式使用相同的NAT
某些情況下需要多個應用程式或服務使用相同的NAT。
在此情況下,必須遵循下列工作流程,以便多個應用程式/服務可以使用較大的NAT內部子網路首碼
我們將詳細說明docker4Windows-dockerBeta-LinuxVM與相同主機上的Windows容器功能,例如範例。
此工作流程可能會變更
C:>netstopdocker
停止Docker4WindowsMobyLinuxVM
PSC:>Get-ContainerNetwork|Remove-ContainerNetwork-force
PSC:>Get-NetNat|Remove-NetNat
移除任何先前已存在的容器網路(亦即刪除vSwitch、刪除NetNat、清除)
New-ContainerNetwork-Namenat-ModeNAT–subnetprefix10.0.76.0/24(此子網路將用於Windows容器功能)建立名為nat的內部vSwitch
建立名為“nat”且IP首碼為10.0.76.0/24的NAT網路
Remove-NetNAT
移除DockerNAT和natNAT網路(保留內部vSwitch)
New-NetNat-NameDockerNAT-InternalIPInterfaceAddressPrefix10.0.0.0/17(這會建立一個較大的NAT網路讓D4W和容器共用)
建立名為DockerNAT且具有較大首碼10.0.0.0/17的NAT網路
執行Docker4Windows(MobyLinux.ps1)
建立內部vSwitchDockerNAT
建立名為“DockerNAT”且IP首碼為10.0.75.0/24的NAT網路
Netstartdocker
Docker將以使用者定義的NAT網路作為預設值來連接Windows容器
最後,您應該有兩個內部vSwitch–一個名為DockerNAT,另一個名為nat。
您只能只會有一個透過執行Get-NetNat確認的NAT網路(10.0.0.0/17)。
Windows主機網路服務(HNS)會從10.0.76.0/24子網路指派Windows容器的IP位址。
根據現有的MobyLinux.ps1指令碼,將會從10.0.75.0/24子網路指派Docker4Windows的IP位址。
疑難排解
不支援多個NAT網路
本指南假設主機上沒有其他NAT。
不過,應用程式或服務將會需要使用NAT,而且可能會在安裝程序中建立。
由於Windows(WinNAT)只支援一個內部NAT子網路首碼,嘗試建立多個NAT會讓系統進入不明的狀態。
若要看看這是否是問題,請確定您只有一個NAT:
Get-NetNat
如果NAT已經存在,請刪除它
Get-NetNat|Remove-NetNat
請確定您只有一個「內部」vmSwitch供應用程式或功能使用(例如Windows容器)。
記錄vSwitch的名稱
Get-VMSwitch
查看是否有私人IP位址(例如NAT預設閘道IP位址-通常是x。
y。
仍指派給介面卡的舊NAT中的z.1)
Get-NetIPAddress-InterfaceAlias"vEthernet(
這是近期組建的Bug所造成(包括WindowsServer2016TechnicalPreview5和Windows10InsiderPreview組建)。
如果您在執行docker網路ls或Get-ContainerNetwork之後,看到多個NAT網路,請從提高權限的PowerShell執行下列作業︰
$keys=Get-ChildItem"HKLM:\SYSTEM\CurrentControlSet\Services\vmsmp\parameters\SwitchList"
foreach($keyin$keys)
{
if($key.GetValue("FriendlyName")-eq'nat')
{
$newKeyPath=$KeyPath+"\"+$key.PSChildName
Remove-Item-Path$newKeyPath-Recurse
}
}
Remove-NetNat-Confirm:$false
Get-ContainerNetwork|Remove-ContainerNetwork
Get-VmSwitch-Namenat|Remove-VmSwitch#failureisexpected
Stop-Servicedocker
Set-Servicedocker-StartupTypeDisabled
先將作業系統重新開機,再執行後續的命令(Restart-Computer)
Get-NetNat|Remove-NetNat
Set-Servicedocker-StartupTypeAutomatic
Start-Servicedocker
請參閱使用相同NAT的多個應用程式設定指南,視需要重建NAT環境。
參考資料
深入了解NAT網路
本文內容
延伸文章資訊
- 1「win10 nat設定」懶人包資訊整理 (1) | 蘋果健康咬一口
win10 nat設定資訊懶人包(1),不管你是Win7還是Win10,也不管你怎麼點到區域網路,總之進入網路設定之類的...但如果做了設定後,對你來說有真的解決NAT偵測問題的話., ...
- 2讓Windows 10 筆電在透過Wi-Fi 與DHCP 上網時也可以正常 ...
接下來這個步驟很重要,就是調整你的網路介面卡的設定,請執行ncpa.cpl ... 網路介面將會自動取得一個內部IP 地址,並透過NAT 自動連線到外部網路。
- 3win10 nat設定在PTT/Dcard完整相關資訊 - 輕鬆健身去
提供win10 nat設定相關PTT/Dcard文章,想要了解更多windows server 2019 nat設定、Win10 NAT、Windows NAT 架設有關運動與健身文章或書籍,歡...
- 4Windows 上的NAT 類型顯示「Teredo 無法取得資格」 - Xbox ...
若您無法在Windows 10 上連線至Xbox 多人遊戲,請移至[設定] > [遊戲] > [Xbox 網路]。若您在Windows 11 上遇到類似問題,請開啟[Xbox 主機小幫手] 應用...
- 5【心得】NAT類型設定解決網路斷線(PC) - 巴哈姆特
如果玩遊戲時常斷線,原因可能是NAT Type的關係,這篇心得可以參考一下。 一、請先檢查NAT Type (一)進入Windows 10 設定頁按下鍵盤上WIN鍵, ...