Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows 10 ve Windows 11 Hyper-V, sanal ağ için yerel ağ adresi çevirisine (NAT) izin verir.
Bu kılavuz, nasıl yapılır konusunda size yol gösterir:
- NAT ağı oluşturma
- Mevcut bir sanal makineyi yeni ağınıza bağlama
- Sanal makinenin doğru bağlandığını onaylayın
Gereksinimler:
- Windows 10 Yıldönümü Güncelleştirmesi veya üzeri
- Hyper-V etkindir. Hyper-V'yi Etkinleştirme yönergelerini izleyin
Uyarı
Şu anda konak başına bir NAT ağıyla sınırlısınız. Windows NAT (WinNAT) uygulaması, özellikleri ve sınırlamaları hakkında ek ayrıntılar için WinNAT özellikleri ve sınırlamaları blogunu inceleyin
NAT'a Genel Bakış
NAT, konak bilgisayarın IP adresini ve bir iç Hyper-V Sanal Anahtarı aracılığıyla bağlantı noktasını kullanarak sanal makineye ağ kaynaklarına erişim verir.
Ağ Adresi Çevirisi (NAT), bir dış IP adresi ve bağlantı noktasını çok daha büyük bir iç IP adresleri kümesine eşleyerek IP adreslerini korumak için tasarlanmış bir ağ modudur. Temel olarak NAT, bir dış (konak) IP Adresinden ve bağlantı noktası numarasından gelen trafiği ağdaki bir uç noktayla ilişkili doğru iç IP adresine (sanal makine, bilgisayar, kapsayıcı vb.) yönlendirmek için bir akış tablosu kullanır.
Ayrıca NAT, birden çok sanal makinenin bunları benzersiz dış bağlantı noktalarıyla eşleyerek aynı (iç) iletişim bağlantı noktaları gerektiren uygulamaları barındırmasına izin verir.
Tüm bu nedenlerden dolayı, NAT ağı kapsayıcı teknolojisinde çok yaygındır (bkz . Kapsayıcı Ağı).
NAT sanal ağı oluşturma
Şimdi yeni bir NAT ağı ayarlama adımlarını inceleyelim.
PowerShell konsolunu Yönetici olarak açın.
bir iç anahtar oluşturun.
New-VMSwitch -SwitchName "SwitchName" -SwitchType InternalYeni oluşturduğunuz sanal anahtarın arabirim dizinini bulun.
PS C:\> Get-NetAdapter Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- vEthernet (intSwitch) Hyper-V Virtual Ethernet Adapter 24 Up 00-15-5D-00-6A-01 10 Gbps Wi-Fi Marvell AVASTAR Wireless-AC Net... 18 Up 98-5F-D3-34-0C-D3 300 Mbps Bluetooth Network ... Bluetooth Device ... 21 Disconnected 98-5F-D3-34-0C-D4 3 Mbpsİç anahtar, gibi
vEthernet (SwitchName)bir ada ve arabirim açıklamasınaHyper-V Virtual Ethernet Adaptersahiptir. Sonraki adımda kullanmak üzere notifIndexalın.New-NetIPAddress kullanarak NAT ağ geçidini yapılandırın.
Genel komut aşağıdadır:
New-NetIPAddress -IPAddress <NAT Gateway IP> -PrefixLength <NAT Subnet Prefix Length> -InterfaceIndex <ifIndex>Ağ geçidini yapılandırmak için ağınız hakkında biraz bilgi gerekir:
- IPAddress -- NAT Ağ Geçidi IP'si, NAT ağ geçidi IP'si olarak kullanılacak IPv4 veya IPv6 adresini belirtir.
Genel form a.b.c.1 'dir (örneğin, 172.16.0.1). Son konumun .1 olması gerekmez, ancak genellikle (ön ek uzunluğuna göre) olur. Bu IP adresi, konuk sanal makineler tarafından kullanılan adres aralığındadır. Örneğin, konuk VM'ler 172.16.0.0 IP aralığını kullanıyorsa NAT Ağ Geçidi olarak 172.16.0.100 IP adresini kullanabilirsiniz. Yaygın ağ geçidi IP'leri 192.168.0.1'dir
PrefixLength -- NAT Alt Ağ Ön Ek Uzunluğu NAT yerel alt ağ boyutunu (alt ağ maskesi) tanımlar. Alt ağ ön ek uzunluğu 0 ile 32 arasında bir tamsayı değeridir.
0 tüm interneti eşler, 32 ise yalnızca bir eşlenmiş IP'ye izin verir. Ortak değerler, NAT'ye eklenmesi gereken IP'lere bağlı olarak 24 ile 12 arasında değişir.
Yaygın bir PrefixLength 24'tür; bu 255.255.255.0 alt ağ maskesidir
InterfaceIndex -- ifIndex, önceki adımda saptadığınız sanal anahtarın arabirim dizinidir.
NAT Ağ Geçidini oluşturmak için aşağıdakileri çalıştırın:
New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceIndex 24New-NetNat kullanarak NAT ağını yapılandırın.
Genel komut aşağıdadır:
New-NetNat -Name <NATOutsideName> -InternalIPInterfaceAddressPrefix <NAT subnet prefix>Ağ geçidini yapılandırmak için ağ ve NAT Ağ Geçidi hakkında bilgi sağlamanız gerekir:
Name -- NATOutsideName, NAT ağının adını açıklar. Nat ağını kaldırmak için bunu kullanacaksınız.
InternalIPInterfaceAddressPrefix -- NAT alt ağ ön eki hem NAT Ağ Geçidi IP ön ekini hem de NAT Alt Ağ Ön Ek Uzunluğu'nu açıklar.
Genel form a.b.c.0/NAT Alt Ağ Ön Ek Uzunluğudur
Bu örnekte 192.168.0.0/24 kullanacağız
NAT ağını ayarlamak için aşağıdakileri çalıştırın:
New-NetNat -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 192.168.0.0/24
Tebrikler! Artık bir sanal NAT ağınız var!
Sanal makine bağlama
Bir sanal makineyi yeni NAT ağınıza bağlamak için, bu makalenin ilk adımında oluşturduğunuz iç anahtarı VM Ayarları menüsünü kullanarak sanal makinenize bağlayın.
WinNAT tek başına bir uç noktaya (örn. VM) IP adresleri ayırmadığından ve atamadığından, bunu VM'nin içinden el ile yapmanız gerekir; örneğin NAT iç ön eki aralığında IP adresi ayarlamanız, varsayılan ağ geçidi IP adresini ayarlamanız, DNS sunucusu bilgilerini ayarlamanız gerekir. Bu konudaki tek uyarı, uç noktanın bir kapsayıcıya bağlı olmasıdır. Bu durumda, Konak Ağ Hizmeti (HNS), IP adresini, ağ geçidi IP'sini ve DNS bilgilerini doğrudan kapsayıcıya atamak için Konak İşlem Hizmeti'ni (HCS) ayırır ve kullanır.
Yapılandırma Örneği: VM'leri ve Kapsayıcıları NAT ağına ekleme
Tek bir NAT'ye birden çok VM ve kapsayıcı eklemeniz gerekiyorsa, NAT iç alt ağ ön ekinin farklı uygulamalar veya hizmetler tarafından atanan IP aralıklarını kapsayacak kadar büyük olduğundan emin olmanız gerekir (örneğin, Windows ve Windows Kapsayıcısı için Docker – HNS). Bunun için IP'lerin uygulama düzeyinde atanması ve ağ yapılandırması veya bir yönetici tarafından yapılması gereken ve aynı konakta mevcut IP atamalarının yeniden kullanılmaması garanti edilen el ile yapılandırma gerekir.
Windows için Docker (Linux VM) ve Windows Kapsayıcıları
Windows için Docker, (Linux kapsayıcıları çalıştıran Linux VM) ve Windows Kapsayıcılarının ayrı iç vSwitches kullanarak aynı WinNAT örneğini paylaşmasına izin vermek için bu bölümdeki adımları izleyin. Hem Linux hem de Windows kapsayıcıları arasındaki bağlantı çalışır.
Kullanıcı VM'leri "VMNAT" adlı bir iç vSwitch aracılığıyla nat ağına bağladı ve şimdi docker altyapısı ile Windows Kapsayıcısı özelliğini yüklemek istiyor:
PS C:\> Get-NetNat “VMNAT”| Remove-NetNat (this removes the NAT but keep the internal vSwitch).
Install Windows Container Feature
DO NOT START Docker Service (daemon)
Edit the arguments passed to the docker daemon (dockerd) by adding –fixed-cidr=<container prefix> parameter. This tells docker to create a default nat network with the IP subnet <container prefix> (e.g. 192.168.1.0/24) so that HNS can allocate IPs from this prefix.
PS C:\> Start-Service Docker; Stop-Service Docker
PS C:\> Get-NetNat | Remove-NetNAT (again, this removes the NAT but keep the internal vSwitch)
PS C:\> New-NetNat -Name SharedNAT -InternalIPInterfaceAddressPrefix <shared prefix>
PS C:\> Start-Service docker
Docker/HNS, Windows kapsayıcılarına IP atar ve Yönetici, ikisinin fark kümesinden VM'lere IP atar.
Kullanıcı docker altyapısının çalıştığı Windows Kapsayıcısı özelliğini yükledi ve şimdi VM'leri NAT ağına bağlamak istiyor:
PS C:\> Stop-Service docker
PS C:\> Get-ContainerNetwork | Remove-ContainerNetwork -force
PS C:\> Get-NetNat | Remove-NetNat (this will remove the NAT but keep the internal vSwitch)
Edit the arguments passed to the docker daemon (dockerd) by adding -b “none” option to the end of docker daemon (dockerd) command to tell docker not to create a default NAT network.
PS C:\> New-ContainerNetwork –name nat –Mode NAT –subnetprefix <container prefix> (create a new NAT and internal vSwitch – HNS will allocate IPs to container endpoints attached to this network from the <container prefix>)
PS C:\> Get-Netnat | Remove-NetNAT (again, this will remove the NAT but keep the internal vSwitch)
PS C:\> New-NetNat -Name SharedNAT -InternalIPInterfaceAddressPrefix <shared prefix>
PS C:\> New-VirtualSwitch -Type internal (attach VMs to this new vSwitch)
PS C:\> Start-Service docker
Docker/HNS, Windows kapsayıcılarına IP atar ve Yönetici, ikisinin fark kümesinden VM'lere IP atar.
Sonunda, iki iç VM anahtarınız ve bunlar arasında paylaşılan bir NetNat'nız olacak.
Aynı NAT'yi kullanan birden çok uygulama
Bazı senaryolarda aynı NAT'yi kullanmak için birden çok uygulama veya hizmet gerekir. Bu durumda, birden çok uygulamanın/hizmetin daha büyük bir NAT iç alt ağ ön eki kullanabilmesi için aşağıdaki iş akışının izlenmesi gerekir
Örnek olarak aynı konakta Windows Kapsayıcısı özelliğiyle birlikte bulunan Docker 4 Windows - Docker Beta - Linux VM'sini ayrıntılı olarak anlatacağız. Bu iş akışı değiştirilebilir
-
net stop docker -
Stop Docker4Windows MobyLinux VM -
Get-ContainerNetwork | Remove-ContainerNetwork -force Daha önce var olan kapsayıcı ağlarını kaldırın (örn. vSwitch'i siler, NetNat'ı siler, temizler).
Get-NetNat | Remove-NetNatNAT adlı bir iç vSwitch ve IP ön eki 10.0.76.0/24 olan bir NAT ağı oluşturun.
New-ContainerNetwork -Name nat -Mode NAT –subnetprefix 10.0.76.0/24Hem DockerNAT hem de nat NAT ağlarını kaldırın (iç vSwitch'leri korur).
Remove-NetNATHem D4W hem de kapsayıcıların paylaşacağı 10.0.0.0/17 ön ekine sahip DockerNAT adlı bir NAT ağı oluşturun.
New-NetNat -Name DockerNAT -InternalIPInterfaceAddressPrefix 10.0.0.0/17Docker4Windows ' u çalıştırma (MobyLinux.ps1)
Windows kapsayıcılarını bağlamak için varsayılan olarak kullanıcı tanımlı NAT ağını kullanın.
Net start docker
Sonunda biri DockerNAT , diğeri nat adlı olmak üzere iki iç vSwitche sahip olursunuz. Get-NetNat çalıştırılarak onaylanan yalnızca bir NAT ağınız (10.0.0.0/17) var. Windows kapsayıcıları için IP adresleri, Windows Ana Bilgisayar Ağ Hizmeti (HNS) tarafından 10.0.76.0/24 alt ağından atanır. Mevcut MobyLinux.ps1 betiğine bağlı olarak Docker 4 Windows IP adresleri 10.0.75.0/24 alt ağından atanır.
Sorun giderme
Birden çok NAT ağı desteklenmiyor
Bu kılavuz, konakta başka YT olmadığını varsayar. Ancak, uygulamalar veya hizmetler NAT kullanılmasını gerektirir ve kurulumun bir parçası olarak bir nat oluşturabilir. Windows (WinNAT) yalnızca bir iç NAT alt ağ ön ekini desteklediğinden, birden çok NAT oluşturmaya çalışmak sistemi bilinmeyen bir duruma yerleştirir.
Sorunun bu olup olmadığını görmek için yalnızca bir NAT'niz olduğundan emin olun:
Get-NetNat
Bir NAT zaten varsa silin:
Get-NetNat | Remove-NetNat
Uygulama veya özellik (örneğin, Windows kapsayıcıları) için yalnızca bir "iç" vmSwitch'iniz olduğundan emin olun. vSwitch'in adını kaydedin:
Get-VMSwitch
Özel IP adresleri olup olmadığını denetleyin (örn. NAT varsayılan Ağ Geçidi IP Adresi – genellikle x).y.z.1) eski NAT hala bir bağdaştırıcıya atanmış:
Get-NetIPAddress -InterfaceAlias "vEthernet (<name of vSwitch>)"
Eski bir özel IP adresi kullanılıyorsa lütfen silin:
Remove-NetIPAddress -InterfaceAlias "vEthernet (<name of vSwitch>)" -IPAddress <IPAddress>
Birden çok YT'yi kaldırma Yanlışlıkla oluşturulan birden çok NAT ağının raporlarını gördük. Birden çok NAT ağı görürseniz, docker network ls veya Get-ContainerNetwork çalıştırdıktan sonra, yükseltilmiş bir PowerShell'den aşağıdakileri gerçekleştirin:
$keys = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services\vmsmp\parameters\SwitchList"
foreach($key in $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 -Name nat | Remove-VmSwitch # failure is expected
Stop-Service docker
Set-Service docker -StartupType Disabled
Sonraki komutları yürütmeden önce işletim sistemini yeniden başlatın (Restart-Computer)
Get-NetNat | Remove-NetNat
Set-Service docker -StartupType Automatic
Start-Service docker