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)

(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 .

1
задан 10 April 2016 в 20:12
1 ответ

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

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

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

1
ответ дан 3 December 2019 в 23:48

Теги

Похожие вопросы