У меня есть сеть:

Компьютер A (MacOS) (192.168.0.10) <- (Wi-Fi) -> Компьютер B (Ubuntu) (192.168.0.15).

Компьютер A имеет виртуальную машину (Kali) с подключением интерфейса NAT (172.16.219.128).

Я хочу пинг 172.16.219.128 (А ВМ) от 192.168.0.15 (В).

Я добавил маршрут в 192.168.0.15 (B):

# route add -net 172.16.219.0 netmask 255.255.255.0 gw 192.168.0.10
# route
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    600    0        0 wlp7s0
link-local      *               255.255.0.0     U     1000   0        0 wlp7s0
172.16.219.0    192.168.0.10    255.255.255.0   UG    0      0        0 wlp7s0
192.168.0.0     *               255.255.255.0   U     600    0        0 wlp7s0

# traceroute 172.16.219.128
traceroute to 172.16.219.128 (172.16.219.128), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * *^C

Конечно, ping также не принимает пакеты. Я думаю, что компьютер B даже отправляет пакеты через шлюз ... почему?

Если я выполняю команду « ping 172.16.219.128 » с компьютера A, она работает очень хорошо.

PS: Когда я изменяю интерфейс виртуальной машины на адаптер моста, компьютер B может пропинговать его (конечно, с новым IP 192.168.0.20) без добавления маршрута.

1 ответ1

1

A, работающий OSX является маршрутизатором между VM и B, и он выполняет NAT для VM: это означает, что IP-адрес виртуальной машины никогда не должен быть виден в проводнике (меньше) между A и B. Так что с этой настройкой B не должен иметь любое знание 172.16.219.128 вообще.

Или:

  • добавить правила переадресации портов nat на A (с конкретными командами NAT для MacOS, если A работал под управлением Linux, в большинстве случаев это были бы правила DNAT с iptables), чтобы все или часть соединений от B к A передавались через порт на виртуальную машину и забывали о при использовании IP-адреса виртуальной машины на B. B просто подключится к A (или даже к другому IP-адресу, выделенному для VM, все зависит от настроек NAT A). Вот страница, рассказывающая о переадресации портов в MacOS: https://www.cyberciti.biz/faq/howto-configure-macosx-as-nat-router/ . Я не проверял это, поскольку у меня нет MacOS. Также кажется, что инструменты, переключенные в последней версии (больше не natd): https://apple.stackexchange.com/questions/192089/how-can-i-setup-my-mac-os-x-yosemite-as-an-internet -gateway

  • или измените настройку виртуальной машины, чтобы вообще не использовать NAT, а базовую маршрутизацию: маршрутизатор A знает маршруты к виртуальной машине и к B, и вы явно указали B маршрут к виртуальной машине. Поэтому, если речь идет только об этих трех системах (а не обо всем Интернете), для доступа B к виртуальной машине не требуется NAT. Я не знаю, если настройки Wi-Fi (вместо реальных Ethernet) на А даст проблемы.

На самом деле сочетание обоих было бы наилучшим: некоторые правила (все еще на A) добавляли исключения к NAT, чтобы не использовать NAT только между VM и B, потому что я предполагаю, что VM все еще нуждается в Интернете. Вы должны выяснить это. Я бы сказал, что, используя приведенный выше пример из apple.stackexchange, вы заменили бы "любому" на «! 192.168.0.15 "в файле под названием" nat-rules "

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .