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

RRAS NAT не перенаправляет для определенных виртуальных машин Hyper-V

У меня установлена ​​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)

(Петля не входит в комплект)

# 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

Сеть в основном настроена следующим образом: Hyper-V Windows Server имеет один сетевой порт, который подключен к Интернету. Затем на хосте установлены RRAS и NAT, и он использует все мое общедоступное IP-пространство для преобразования NAT для виртуальных машин. Каждая виртуальная машина отличается /24 блок IP-адресов из 10.0.0.0/16 диапазон, но они сохраняют /16 маска подсети. Например, виртуальная машина Debian 10.0.4.0 - 10.0.4.255.

Итак, как выясняется, проблема связана с разгрузкой контрольной суммы.

По какой-то причине гостевые системы Linux не работают через NAT, когда активирована разгрузка контрольной суммы IPv4. (Они прекрасно работают без NAT, что странно.)

Итак, после отключения разгрузки контрольной суммы IPv4 как на физическом, так и на виртуальном интерфейсе и перезагрузки сервера все работает должным образом.