Переход С Ubuntu На Windows 10, Hyper-V И Избавление От Железного Роутера

Купив новый ноутбук, я с сожалением заметил, что моя любимая Ubuntu больше не поддерживает датчики и вентиляторы постоянно гудят, что делает работу некомфортной.

При этом, если загрузить с оригинального жесткого диска предустановленную Windows 10 Pro, то возникает приятная для слуха тишина.

Пока на улице (и дома) было прохладно, было терпимо.

Но с наступлением жары терпению пришел конец.

Было принято решение перейти на Windows. В своей работе я использую множество виртуальных машин для создания, тестирования и отладки разрабатываемого мной программного обеспечения.

Windows 10 Pro включает виртуализацию Hyper-V — как только вы заплатите деньги, вы должны ее использовать! В Ubuntu я использовал libvirt и виртуальные машины, объединенные в одну внутреннюю виртуальную сеть.

Перенеся Windows с оригинального диска на SSD и преобразовав образы виртуальных машин в формат Hyper-V, я с болью в сердце принялся осваивать новую операционную систему.

Оказывается, не все так уж и страшно! Виртуальные рабочие столы были заменены рабочими столами Windows (к сожалению, только горизонтальными), консоль заменила консоль WSL (Windows Subsystem for Linux), VcXsrv был установлен и добавлен в автозапуск для приложений X11, виртуальные машины начали работать в Hyper-V и даже успели запустите OS X. Родной терминал оказался не очень удобным и без вкладок, поэтому его нещадно заменили на терминал xfce4, который запускается через ярлык со скрытым окном консоли Linux:

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

Объект:

  
  
  
  
  
   

C:\Windows\System32\wscript.exe .

/runhidden.vbs bash -c "export DISPLAY=:0.0; export GDK_DPI_SCALE=1.2; cd ~; exec xfce4-terminal"

Код скрипта для запуска приложения со скрытым окном (скрыта родная консоль, которая открывается при запуске приложений X11 из командной строки), погуглил в интернете:

' Simple command-line help. select case WScript.Arguments(0) case "-?", "/?", "-h", "--help" WScript.echo "Usage: runHidden executable [.

]" & vbNewLine & vbNewLine & "Runs the specified command hidden (without a visible window).

" WScript.Quit(0) end select ' Separate the arguments into the executable name ' and a single string containing all arguments. exe = WScript.Arguments(0) sep = "" for i = 1 to WScript.Arguments.Count -1 ' Enclose arguments in ".

" to preserve their original partitioning. args = args & sep & """" & WScript.Arguments(i) & """" sep = " " next ' Execute the command with its window *hidden* (0) WScript.CreateObject("Shell.Application").

ShellExecute exe, args, "", "open", 0

В итоге получилось так:

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

Мне приходится часто путешествовать, специально для поездок у меня был небольшой роутер TP-LINK WR703N, прошитый OpenWRT:

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

На роутере настроен VPN для работы машин и выхода в интернет. Если есть кабель, то он подключается к сети по кабелю, раздает ее по WiFi на ноутбук, телефоны и другие устройства; если только WiFi, то он подключается к ноуту через кабель.

Можно одновременно настроить WiFi-клиент и точку доступа, но качество сигнала падает, начинаются отключения и падение скорости.

В связи с этим возникла идея вообще избавиться от этого роутера (заодно увеличив пропускную способность соединения), клубка проводов и блока питания, заменив его виртуальным роутером.

Очевидно, что все виртуальные машины и Windows должны быть подключены к одной локальной сети.

Запустите диспетчер Hyper-V и выберите «Диспетчер виртуальных коммутаторов».

Мы создаем новый внутренний виртуальный коммутатор, который будет обслуживать нашу виртуальную локальную сеть.

Назовем это внутренней локальной сетью:

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

Доступ к Интернету мы получим через беспроводной адаптер и кабель Ethernet. Создаём два внешних виртуальных свитча, не забыв снять галочку с «Разрешить управляющей операционной системе разделять доступ к этому сетевому адаптеру» — прямой доступ Windows в Интернет не требуется.

Виртуальный коммутатор для Wi-Fi:

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

Виртуальный коммутатор для кабеля Ethernet:

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

В качестве операционной системы для виртуальной машины роутера я выбрал сервер Ubuntu 16.04. Почему 16.04? Потому что в 18.04 простые настройки сети в /etc/network/interfaces были заменены на netplan — не хочу! Создаем новую виртуальную машину и добавляем в нее наши виртуальные свитчи:

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

На вкладке «Безопасность» либо отключите безопасную загрузку, либо выберите Центр сертификации Microsoft UEFI и установите операционную систему как обычно.

После установки зайдите во вновь установленную систему и проверьте сетевые интерфейсы с помощью команды ifconfig. Внешние соединения через кабель и Wi-Fi могут получать IP-адреса, если они подключены и активны.

Если адреса не получены, воспользуйтесь утилитой получения адресов:

dhclient eth0 eth1 eth2

Внутренний не будет иметь адреса, так как в нашей локальной сети еще не работает DHCP-сервер.

В моем случае eth0 — внешний Ethernet, eth1 — локальная сеть, eth2 — внешнее беспроводное соединение (в порядке добавления сетевых карт).

Наша локальная сеть будет 192.168.3.0. Отредактируем сетевые настройки в /etc/network/interfaces, используя, например, редактор nano:

source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp # Internal LAN auto eth1 iface eth1 inet static address 192.168.3.1 netmask 255.255.255.0 network 192.168.3.0 broadcast 192.168.3.255 # The primary network interface allow-hotplug eth2 iface eth2 inet dhcp

Перезагрузите роутер и снова войдите в него.

Теперь все сетевые интерфейсы должны иметь адреса (внешние, если у них есть соединение).

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

Устанавливаем нужные нам приложения: sudo apt install dnsmasq iptables-persistent netfilter-persistent openvpn Разрешаем пересылку IP-пакетов:

cat > /etc/sysctl.d/10-forwarding.conf net.ipv4.ip_forward=1

Настройка брандмауэра:

cat > /etc/iptables/rules.v4 # Generated by iptables-save v1.6.0 on Fri Jun 22 11:13:10 2018 *nat :PREROUTING ACCEPT [2901:568651] :INPUT ACCEPT [707:80315] :OUTPUT ACCEPT [445:30025] :POSTROUTING ACCEPT [14:1200] -A POSTROUTING -o eth0 -j MASQUERADE -A POSTROUTING -o eth2 -j MASQUERADE -A POSTROUTING -o tun+ -j MASQUERADE COMMIT # Completed on Fri Jun 22 11:13:10 2018 # Generated by iptables-save v1.6.0 on Fri Jun 22 11:13:10 2018 *filter :INPUT ACCEPT [57264:68964200] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [44820:7558046] -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth1 -o tun+ -j ACCEPT COMMIT # Completed on Fri Jun 22 11:13:10 2018

Настройка DHCP-сервера и сервера имен:

cat > /etc/dnsmasq.d/router.conf dhcp-authoritative domain-needed localise-queries read-ethers bogus-priv expand-hosts local-service domain=lan server=/lan/ dhcp-leasefile=/tmp/dhcp.leases interface=eth1 dhcp-range=lan,192.168.3.100,192.168.3.249,255.255.255.0,12h

Перезагружаемся и получаем рабочий роутер для Windows и других виртуальных машин!

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

Настраиваем openvpn на роутере и радуемся жизни без дополнительного оборудования и кабелей.

Но позвольте спросить, а как насчет телефона и других гаджетов? Простое решение — использовать встроенную мобильную точку доступа в Windows 10! Но это не так просто.

Мобильная точка доступа не хочет активироваться на виртуальном интерфейсе нашей виртуальной локальной сети! Невезение.



Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

Погуглив возникшую проблему, было найдено несколько альтернативных утилит для запуска мобильной точки доступа.

К сожалению, все они были оплачены.

Было решено написать собственное приложение с некоторыми вкусностями, бесплатное и с открытым исходным кодом.

После недельной борьбы было написано приложение (а заодно освоило неизведанного ранее зверя — Visual Studio):

Переход с Ubuntu на Windows 10, Hyper-V и избавление от железного роутера

Помимо активации точки доступа, приложение может запускаться при входе в систему, активировать точку при запуске и закрывать приложение после активации.

Исходный код доступен по адресу github .

Для тех, кто не может или лень компилировать из исходников, приложение (бесплатное, без СМС и всякой рекламы) доступно в Магазине Windows. Нет Wi-Fi .

Таким образом, задача была решена, старый роутер окончательно списан, а в рюкзаке освободилось место! На этом у меня все, спасибо всем за внимание и терпение при чтении такого нудного материала! Теги: #linux #Разработка для Windows #Виртуализация #Сделай сам или сделай сам #Windows #открытый исходный код #настройка Linux #Интернет #wifi #сеть #Hyper-V #точка доступа #точка доступа

Вместе с данным постом часто просматривают: