Купив новый ноутбук, я с сожалением заметил, что моя любимая 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:
Объект:
Код скрипта для запуска приложения со скрытым окном (скрыта родная консоль, которая открывается при запуске приложений X11 из командной строки), погуглил в интернете:C:\Windows\System32\wscript.exe .
/runhidden.vbs bash -c "export DISPLAY=:0.0; export GDK_DPI_SCALE=1.2; cd ~; exec xfce4-terminal"
' 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
В итоге получилось так:
Мне приходится часто путешествовать, специально для поездок у меня был небольшой роутер TP-LINK WR703N, прошитый OpenWRT:
На роутере настроен VPN для работы машин и выхода в интернет. Если есть кабель, то он подключается к сети по кабелю, раздает ее по WiFi на ноутбук, телефоны и другие устройства; если только WiFi, то он подключается к ноуту через кабель.
Можно одновременно настроить WiFi-клиент и точку доступа, но качество сигнала падает, начинаются отключения и падение скорости.
В связи с этим возникла идея вообще избавиться от этого роутера (заодно увеличив пропускную способность соединения), клубка проводов и блока питания, заменив его виртуальным роутером.
Очевидно, что все виртуальные машины и Windows должны быть подключены к одной локальной сети.
Запустите диспетчер Hyper-V и выберите «Диспетчер виртуальных коммутаторов».
Мы создаем новый внутренний виртуальный коммутатор, который будет обслуживать нашу виртуальную локальную сеть.
Назовем это внутренней локальной сетью:
Доступ к Интернету мы получим через беспроводной адаптер и кабель Ethernet. Создаём два внешних виртуальных свитча, не забыв снять галочку с «Разрешить управляющей операционной системе разделять доступ к этому сетевому адаптеру» — прямой доступ Windows в Интернет не требуется.
Виртуальный коммутатор для Wi-Fi:
Виртуальный коммутатор для кабеля Ethernet:
В качестве операционной системы для виртуальной машины роутера я выбрал сервер Ubuntu 16.04. Почему 16.04? Потому что в 18.04 простые настройки сети в /etc/network/interfaces были заменены на netplan — не хочу! Создаем новую виртуальную машину и добавляем в нее наши виртуальные свитчи:
На вкладке «Безопасность» либо отключите безопасную загрузку, либо выберите Центр сертификации 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 и других виртуальных машин!
Настраиваем openvpn на роутере и радуемся жизни без дополнительного оборудования и кабелей.
Но позвольте спросить, а как насчет телефона и других гаджетов? Простое решение — использовать встроенную мобильную точку доступа в Windows 10! Но это не так просто.
Мобильная точка доступа не хочет активироваться на виртуальном интерфейсе нашей виртуальной локальной сети! Невезение.
Погуглив возникшую проблему, было найдено несколько альтернативных утилит для запуска мобильной точки доступа.
К сожалению, все они были оплачены.
Было решено написать собственное приложение с некоторыми вкусностями, бесплатное и с открытым исходным кодом.
После недельной борьбы было написано приложение (а заодно освоило неизведанного ранее зверя — Visual Studio):
Помимо активации точки доступа, приложение может запускаться при входе в систему, активировать точку при запуске и закрывать приложение после активации.
Исходный код доступен по адресу github .
Для тех, кто не может или лень компилировать из исходников, приложение (бесплатное, без СМС и всякой рекламы) доступно в Магазине Windows. Нет Wi-Fi .
Таким образом, задача была решена, старый роутер окончательно списан, а в рюкзаке освободилось место! На этом у меня все, спасибо всем за внимание и терпение при чтении такого нудного материала! Теги: #linux #Разработка для Windows #Виртуализация #Сделай сам или сделай сам #Windows #открытый исходный код #настройка Linux #Интернет #wifi #сеть #Hyper-V #точка доступа #точка доступа
-
Застой В Развитии: Формат Вывода Сообщений
19 Oct, 24 -
Сотовые Операторы Запускают Социальные Сети
19 Oct, 24 -
Чтение Xml-Файла С Помощью App Inventor
19 Oct, 24 -
Флирт В Интернете: Web 2.0 Для Женщин
19 Oct, 24