У меня установлена Windows Server 2012 R2 с Hyper-V, RRAS и настройкой NAT.
У меня проблема с двумя моими виртуальными машинами и RRAS NAT:
По сути, эти две виртуальные машины не будут взаимодействовать за пределами локальной подсети. Они могут связываться со всем в локальной сети (другими виртуальными машинами, шлюзом), но ни с чем за ее пределами. Единственная разница между этими двумя виртуальными машинами и другими виртуальными машинами состоит в том, что они являются системами на базе Linux. Все остальные виртуальные машины - это системы на базе Windows Server 2012 R2.
Есть ли что-то специфическое для Linux, которое могло бы вызвать эту проблему? Один - это установка CentOS, а другой - установка Debian.
Если я назначу одному из Linux-боксов общедоступный интерфейс, то у них будет внешнее соединение. Очевидно, я не хочу этого делать, так как это тратит мое пространство IP-адресации.
Обратите внимание: сервер может нормально пинговать шлюз по умолчанию (10.0.0.1). Обычно время составляет около 0,450 мс.
На данный момент я просто хочу решить проблему с установкой debian, поэтому вот немного данных из нее:
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:15:5d:91:82:07
inet addr:10.0.4.0 Bcast:10.0.255.255 Mask:255.255.0.0
inet6 addr: fe80::215:5dff:fe91:8207/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1842 errors:0 dropped:0 overruns:0 frame:0
TX packets:7245 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:119697 (116.7 KiB) TX bytes:701216 (684.7KiB)
(Loopback не включен)
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
localness * 255.255.0.0 U 0 0 0 eth0
# ip route
default via 10.0.0.1 dev eth0
10.0.0.0/16 dev eth0 proto kernel scope link src 10.0.4.0
Файл / etc / network / interfaces
выглядит следующим образом:
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 10.0.4.0
netmask 255.255.0.0
network 10.0.0.0
broadcast 10.0.255.255
gateway 10.0.0.1
Дополнительная информация:
# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
# iptables -L
Chain INPUT (policy ACCEPT)
target port opt source destination
Chain INPUT (policy ACCEPT)
target port opt source destination
Chain OUTPUT (policy ACCEPT)
target port opt source destination
Сеть в основном настроена следующим образом: сервер Windows Hyper-V имеет один сетевой порт, который подключен к Интернету. . Затем на хосте установлены RRAS и NAT, и он использует все мое общедоступное IP-пространство для преобразования NAT для виртуальных машин. Каждая виртуальная машина получает отдельный блок IP-адресов / 24
из диапазона 10.0.0.0/16
, но сохраняет маску подсети / 16
. Например, виртуальная машина Debian - 10.0.4.0 - 10. 0.4.255
.
Итак, как выясняется, проблема связана с разгрузкой контрольной суммы.
По какой-то причине гостевые системы Linux не работают через NAT, когда активирована разгрузка контрольной суммы IPv4. (Они прекрасно работают без NAT, что странно.)
Итак, после отключения разгрузки контрольной суммы IPv4 на физическом и виртуальном интерфейсах и перезагрузки сервера все работает, как ожидалось.