четверг, 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.

пятница, 2 декабря 2016 г.

Windows 10 или как я переехал на windows

Примерно 5 лет я пользовался Debian, потом Ubuntu, потом Mint, потом меня достали эти мучения с системой, я купил мак мини, потом макбук, потом аймак, на MacOS конечно всё интересно - сразу и железо работает и консолька есть и кронтаб и еще из homebrew можно установить недостающее, можно самому скомпилировать PHP и протестировать, есть rsync и ssh. Пару лет назад я купил профессиональную восьмерку, потом обновил ее до десятки, недавно продал свой аймак и насобирал обычный комп. Долго думал что же на него установить винду или линукс, но решил всё же установить Windows, хотелось поиграться с эмулятором bash и hyper-v.

В общем я уже лет 9 не сидел на Windows и тут решил, а теперь расскажу обо всё по порядку.

Сама установка на SSD заняла по времени ну около 7 минут.

 Первым делом устанавливаем Hyper-v и bash, но hyper-v лучше не ставить, если вы будете использовать vmware или virtualbox, они конфликтуют, но если вы хотите использовать родной для windows виртуализатор, который работает как служба, который запускает автоматически машины без входа пользователя в систему, а еще на нем linux устанавливается и работает без проблем очень даже быстро, в свежих ядрах линукса есть поддержка hyper-v, работа с жестким диском идет без потерь, скорость записи равняется скорости в самой windows, единственная проблема - нельзя пробросить usb-порт в виртуалку, хотя я обошелся и без этого.

1. Нажимаем win+x, там выбираем панель управления.
2. Заходим в "программы и компоненты", там слева выбираем "Включение или отключение компонентов Windows".
3.  Отмечаем галочками "Подсистема Windows для Linux" и "Hyper-v"


 

4. Потом OK, перезагружаемся.

5. Дальше заходим в Настройки->Обновление и безопасность->для разработчиков


Тут включаем режим разработчика.

6. Заходим в параметры - персонализация - панель задач, тут отмечаем галочкой, чтобы заменить терминал на power shell









PowerShell это более годный терминал, в нем есть ls, man и кое что еще, а чтобы запустить bash, то вводим его в терминал и запускаем.



Чуть позже напишу про другие проблемы с этой системой и с компом и про сам свой комп, сейчас иду спать.