На самом деле, есть множество веских причин использовать NAT с виртуальными машинами, а не мостовой интерфейс. (Это старый вопрос, но он возник как первый результат, когда я искал, как это сделать, переходя с VirtualBox, где я это делаю. это все время, поэтому я подумал, что стоит добавить)
Просто несколько причин использовать NAT:
- Это легко и портативно
- если вы находитесь в локальной сети клиента, которой для получения IP-адреса требуется известный MAC-адрес (в противном случае вам придется попытаться угадать неиспользуемые и рискнуть конфликтом, и вообще привлечь к себе плохое внимание :)),
- такие вещи, как разрешение вашим виртуальным машинам использовать один прокси-сервер на вашем хосте (например, если вы не управляете сетью, в которой вы находитесь), или возможность брандмауэра / фильтрации своего широковещательного (оконного и т. д.) трафика на выходе в одном удобное место.
- возможность назначить им фиксированный или зарезервированный IP-адрес, чтобы вы могли ссылаться на них по имени / IP-адресу извне хоста (опять же, если вы не можете получить резервирование в сети с мостовым интерфейсом)
- но, прежде всего, он позволяет вам прятаться за единственной конфигурацией брандмауэра на вашем хосте и делиться вещами между вами / ними более защищенным способом, вместо того, чтобы подвергать каждую виртуальную машину «дикому» и необходимости защищать их всех индивидуально и т. д. .. Так же, как вы делаете с интернет-модемом / маршрутизатором
В любом случае, для моего случая (VMWare Workstation 10, хост Linux, OS X Guest) и всех, кто сталкивается с этим, это обзор того, что сработало для меня. Помимо вафли и что-если, на самом деле есть только 3 основных шага.
- Итак, сначала вам нужно решить, что вы хотите разрешить вашей ВМ / гостю «снаружи» вашего хоста (обратите внимание, как показано ниже, вы сможете легко добраться до него с самого хоста). Безопасной ставкой было бы просто выставить / разрешить только SSH (порт 22) для машин в вашей подсети. Вы также можете разрешить порт 80/443, если у вас есть веб-сервер на виртуальной машине и т. Д., И вы также можете использовать «туннель» для доступа к другим службам с использованием SSH (приведу пример ниже), а также использовать FUSE / SSHFS для указания вашего хоста. доступ к файловой системе .. (или средство общих папок на VMWare, но я еще не использовал его).
Так что идея примерно такая: «Разрешить вещам в локальной сети моего хоста (например, 10.1.1.0/24 или 192.168.1.0/24) подключиться к порту 22222 на хосте, который мы перенаправим вдоль порта 22 конкретный гость ". Конечно, это должен быть конкретный гость (это делает настройку ваших IP-адресов еще более полезной, и вы можете менять их все в одном месте, не открывая каждую виртуальную машину), так же, как это делается через интернет-маршрутизатор, чтобы позволить игровым вещам и т. д.
Итак, как только это будет сделано, вы можете быть на своем ноутбуке или другом компьютере в локальной сети, подключившись по ssh к своей рабочей станции (хосту vmware) по номеру 22222, и вы будете направлены к гостю, которому сказали, чтобы он направил вас. Как упомянуто выше, если вы также сказали, что хотите иметь возможность подключиться к серверу postgres на гостевой (или vnc-сервере, который часто не зашифрован), вы можете туннелировать в той же команде (вместо того, чтобы добавить ее также в conf dhcp). Например,
console ~> ssh root@hostip -p 22222 -L 54320:localhost:5432
и вы будете ssh'ed к гостю через ip forward в vmware, и сможете указать свой инструмент pgadmin3 на localhost: 54320 (непривилегированный) на вашем ноутбуке, и ваш трафик в сети будет зашифрован. (Обратите внимание, что localhost там уже переадресован гостю)
Примечания
- Есть разные способы сделать это. Во-первых, вы можете просто туннелировать хост и указать ip гостя в -L, и он «вырвется» и укажет вам, но опция nat.conf хороша и удобно, и вам не нужно вводить его каждый раз. Есть и другие способы переадресации портов
- Я видел ссылку на пару потоков виртуального сетевого интерфейса, чтобы сделать это (как в virtualbox), но я не смог найти его в этой версии
- Я не использую Windows, поэтому, хотя я предполагаю, что это будет очень похоже на настройку в качестве хоста, я не уверен. Хотя настройки NAT должны работать для любого гостя VMware (хотя я не использовал другие версии VMWare)
VMware устанавливает маршрут так, чтобы хост мог напрямую связываться с гостем NAT, IE с консоли хоста, я могу пинговать / ssh и т. Д. С гостем NAT 192.168.198.10 (определено выше) напрямую
console ~> route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
<snip>
192.168.198.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.233.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
- Из примечания о Linux есть некоторые проблемы с vmware с systemd init для автоматического запуска, и наряду с этим я обнаружил, что не могу просто перезапустить vmware (vmci не загружается снова), и мне нужно перезапустить моя машина, чтобы заставить вещи NAT / DHCP выше придерживаться, но у Вас, возможно, нет проблемы. Хотя есть некоторые темы с решениями systemd