Есть ли проблема с использованием VMware в Windows для размещения виртуального Linux-бокса с iptables? У меня есть конфигурация, которая, кажется, работает на физическом оборудовании, но нестабильна под VMware.
Я использую VMware для запуска виртуальной машины linux 2.6.24 на хосте Windows 2003 Server. По сути, приложение linux является маршрутизатором NATting, который работает iptables
. Правила в таблице nat
включают:
Chain foo_pre
target prot opt in out source destination
LOG all -- * * 0.0.0.0/0 0.0.0.0/0 [options here]
LOG all -- * * 0.0.0.0/0 10.10.1.33 [options here]
DNAT all -- * * 0.0.0.0/0 10.10.1.33 tcp dpt:80 to:192.168.0.33:8080
Chain PREROUTING
target prot opt in out source destination
foo_pre all -- * * 0.0.0.0/0 0.0.0.0/0
Я вижу входящие пакеты на 10.10.1.33:80, используя tcpdump
, и первый LOG
генерирует сообщения, но ни DNAT
, ни второй LOG
не показывают пакеты, зарегистрированные на их счетчиках пакетов вторая LOG
не генерирует сообщений, а tcpdump
не показывает пакеты с 192.168.0.33.
Адаптер eth0
находится в сети 10.10.0.0/16 со шлюзом по умолчанию 10.10.1.1; у него есть дополнительный адрес 10.10.1.33/32. /proc/sys/net/ipv4/config/eth0/forwarding
установлено на 1.
Является ли VMware виновником или я что-то упустил? Спасибо!
Обновление: мы упростили среду тестирования. Нет никаких правил NAT, просто виртуальная машина Linux, работающая под хостом Win2k3 Server. Тестовые шаги:
ВМ подключена к сетевой карте хоста. Виртуальная машина и хост находятся в одной подсети с тем же шлюзом по умолчанию, что и выше.
ВМ взаимодействует с устройствами как в своей подсети, так и вне ее: ICMP, TCP, UDP. Связь является двунаправленной: не имеет значения, какое оборудование ее инициирует.
Инженер включил и снова включил шлюз по умолчанию, пока ковырялся в системе.
ВМ теперь связывается только с устройствами в своей подсети. Любая попытка установить связь через шлюз с тем же оборудованием , начиная с шага 2 , не позволяет помещать пакеты в провод. tcpdump на eth0 на ВМ показывает исходящие пакеты без ответа; WireShark на хосте показывает ничего на физическом NIC.
Остановка и перезапуск виртуальной машины не меняет ее поведение. Остановка виртуальной машины и замена ее на другую виртуальную машину с соответствующим IP-адресом, и т. Д. не меняет поведение.
Хост Win2k3 продолжает нормально взаимодействовать как в своей подсети, так и вне ее.
Из этого я могу только заключить, что «что-то происходит» между ВМ и хостом: в драйверах VMware или в сетевых стеках хоста. Я снова прочесываю паутину ... трудно представить, что мы первые это заметили.
Обновления по мере их поступления. Спасибо за ваши мысли и обсуждение.