четверг, 15 декабря 2016 г.

Windows 10, Hyper-v и wi-fi - проблемы с доступом к сети, потери пингов, перебои связи.

В общем с целью тестирования мне потребовалось иметь сервер, т.к. рабочее окружение на линуксе, то лучше и тестировать всё на нем, для этих целей лучше когда виртуальные машины сами запускаются и работают в фоне, а на windows лучшим решением является hyper-v.

Virtualbox даже с гостевыми дополнениями и фиксированным размером диска давал менее производительную дисковую подсистему и задержки пингов по сети значительно больше, vmware player аналогично, к тому же эти решения из коробки не позволяют запускать в фоне виртуальные машины, поэтому самым лучшим решением является Hyper-v. Я даже пытался поставить Ubuntu 16.04, но там fglrx выпилили, а amdgpu-pro не поддерживает мою видеокарту, а свободный драйвер radeon криво работал, к тому же лицензия на 10ку есть и в ней можно сразу играть в игры и есть bash встроенный с полезными утилитами консольными.

В общем ситуация с Hyper-v такая, захожу на сайтик свой, а он не работает, через минуту снова работает, потом снова не работает, сама хост-машина идеально пингует роутер, пинги по 1мс и потерь 0, связь хост-машины с виртуалкой тоже была идеальной. Виртуальный коммутатор был в режиме моста, вот в этом и была проблема.

Дело в том, что при использовании внешнего коммутатора в Hyper-v, виртуальные машины прокидываются в сеть и видны там под разными mac-адресами, в сети сама сетевая карта начинает представляться разными MAC, по проводному соединению это работает хорошо, а вот в беспроводной сети такое не работает, Microsoft запилила какие то костыли для эмуляции проводного соединения по wifi, но это работает не всегда, если такое не работает, то используйте NAT.

Для этого создаем виртуальный коммутатор с типом "внутренняя сеть"


Теперь виртуальному адаптеру присваиваем ту же самую подсеть, что и виртуальным компам, но отличную от нашей реальной сети, там указываем ip и маску. Если у нас внешний адаптер (wifi) имеет адрес 192.168.100.10, то для виртуального прописываем например 192.168.137.1, а виртуальной машине прописываем 192.168.137.100 и шлюз 192.168.137.1



Стандартный способ расшаривания сети через "доступ" во внешнем сетевом адаптере тут не подходит, т.к. виртуальный адаптер запускается позже, чем инициализируется физическая сетевая карта и NAT не запускается, открываем PowerShell от имени администратора и пишем

New-NetNat -Name nat1 -InternalIPInterfaceAddressPrefix 192.168.137.0/24


А потом нужно будет пробросить порт 80 на нашу виртуалку

netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.137.100 connectport=80 protocol=tcp

Т.е. при обращении по 8080 порту к нашему компу - будет переадресация на виртуалку на 80 порт. А дальше на роутере можно прокинуть 80 на 8080.


Вот так, ну а если у вас всё в продакшне, а не ради баловства и тестирования, то конечно и сетевушку лучше качественную ставить и по проводу подключать, а то что у меня, это просто кинуть ссылку, чтобы люди потыкали и протестировали сайтик.

Сперва я писал про линукс, потом перелез на мак, а теперь вот и до Windows очередь дошла, пока я лет 8 не сидел на Windows - уже 7, 8 и 10 виндовс вышла и много всего интересного появилось, следующую статью напишу про альтернативную консоль и работу в bash на Win10.

Комментариев нет:

Отправить комментарий