Назад | Перейти на главную страницу

Проверка связи виртуального коммутатора Hyper-V IPv4

Мне нужна была служба IPv4, работающая на узле Hyper-V, к которому только виртуальные машины могут получить доступ через виртуальный коммутатор.

Hyper-V Server 2016 (удален общедоступный префикс IPv6)

Ethernet adapter vEthernet (Public Switch):

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter
   Physical Address. . . . . . . . . : 00-25-90-2E-11-AC
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv6 Address. . . . . . . . . . . : <removed>:3826:3af6(Preferred)
   Link-local IPv6 Address . . . . . : fe80::ad2c:f032:3826:3af6%3(Preferred)
   Autoconfiguration IPv4 Address. . : 169.254.58.246(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.0.0
   Default Gateway . . . . . . . . . : fe80::29c:2ff:fea9:fdd0%3
   DHCPv6 IAID . . . . . . . . . . . : 352331152
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-1F-C4-64-14-00-25-90-2E-11-AE
   DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   NetBIOS over Tcpip. . . . . . . . : Enabled

PS C:\users\Administrator> get-netfirewallrule FPS-ICMP4-ERQ-In  | select *


Name                    : FPS-ICMP4-ERQ-In
ID                      : FPS-ICMP4-ERQ-In
DisplayName             : File and Printer Sharing (Echo Request - ICMPv4-In)
Group                   : @FirewallAPI.dll,-28502
Enabled                 : True
Profile                 : Domain, Private, Public
Platform                : {}
Direction               : Inbound
Action                  : Allow
EdgeTraversalPolicy     : Block
LSM                     : False
PrimaryStatus           : OK
Status                  : The rule was parsed successfully from the store. (65536)
EnforcementStatus       : NotApplicable
PolicyStoreSourceType   : Local
Caption                 :
Description             : Echo Request messages are sent as ping requests to other nodes.
ElementName             : File and Printer Sharing (Echo Request - ICMPv4-In)
InstanceID              : FPS-ICMP4-ERQ-In
CommonName              :
PolicyKeywords          :
PolicyDecisionStrategy  : 2
PolicyRoles             :
ConditionListType       : 3
CreationClassName       : MSFT|FW|FirewallRule|FPS-ICMP4-ERQ-In
ExecutionStrategy       : 2
Mandatory               :
PolicyRuleName          :
Priority                :
RuleUsage               :
SequencedActions        : 3
SystemCreationClassName :
SystemName              :
DisplayGroup            : File and Printer Sharing
LocalOnlyMapping        : False
LooseSourceMapping      : False
Owner                   :
Platforms               : {}
PolicyStoreSource       : PersistentStore
Profiles                : 7
RuleGroup               : @FirewallAPI.dll,-28502
StatusCode              : 65536
PSComputerName          :
CimClass                : root/standardcimv2:MSFT_NetFirewallRule
CimInstanceProperties   : {Caption, Description, ElementName, InstanceID...}
CimSystemProperties     : Microsoft.Management.Infrastructure.CimSystemProperties

VM Centos 7

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:00:e2:0a brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.249/22 brd 172.16.3.255 scope global noprefixroute dynamic eth0
       valid_lft 13592sec preferred_lft 13592sec
    inet6 <removed>:4120:3820/64 scope global noprefixroute dynamic 
       valid_lft 86314sec preferred_lft 14314sec
    inet6 fe80::b73a:6e98:36ff:d902/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

# ping6 fe80::ad2c:f032:3826:3af6%eth0
PING fe80::ad2c:f032:3826:3af6%eth0(fe80::ad2c:f032:3826:3af6%eth0) 56 data bytes
64 bytes from fe80::ad2c:f032:3826:3af6%eth0: icmp_seq=1 ttl=64 time=0.725 ms

# ping6 <removed>:3826:3af6
PING <removed>:3826:3af6(<removed>:3826:3af6) 56 data bytes
64 bytes from <removed>:3826:3af6: icmp_seq=1 ttl=64 time=0.755 ms

# ping 169.254.58.246
PING 169.254.58.246 (169.254.58.246) 56(84) bytes of data.
^C
--- 169.254.58.246 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.3.254    0.0.0.0         UG    100    0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
172.16.0.0      0.0.0.0         255.255.252.0   U     100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.255.0   U     0      0        0 docker0

# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.16.1.118             ether   00:15:5d:00:e2:0e   C                     eth0
172.16.3.254             ether   00:9c:02:a9:fd:d0   C                     eth0
172.16.0.226             ether   00:25:90:2e:11:ae   C                     eth0
169.254.58.246           ether   00:25:90:2e:11:ac   C                     eth0

# ping 172.16.0.226
PING 172.16.0.226 (172.16.0.226) 56(84) bytes of data.
64 bytes from 172.16.0.226: icmp_seq=1 ttl=128 time=1.23 ms
64 bytes from 172.16.0.226: icmp_seq=2 ttl=128 time=0.708 ms

172.16.0.226 - сетевой адаптер хоста Hyper-V

Я сделал захват пакета на хосте Hyper-V и увидел, что поступает запрос ping. Выше вы можете видеть, что в таблице таблицы указан правильный MAC. В Hyper-V есть правило, разрешающее пинг ICMPv4

Итак, чтобы подвести итог:

Оказывается, я устанавливал IP-адрес не на тот интерфейс. Вместо установки IP на коммутаторе, IP должен быть установлен на адаптере, с которым связан коммутатор.

New-NetIPAddress -IPAddress 172.16.1.116 -PrefixLength 22 -DefaultGateway 172.16.3.254 -InterfaceAlias Ethernet -SkipAsSource $false
Set-DnsClientServerAddress -interfaceindex 11 -serveraddresses 172.16.3.254,fe80::29c:2ff:fea9:fdd0
New-NetIPAddress -IPAddress 169.254.169.254 -PrefixLength 16 -InterfaceAlias Ethernet -SkipAsSource $true