ServerAdmin.ru
31.6K subscribers
842 photos
57 videos
23 files
2.99K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Ресурс включён в перечень Роскомнадзора
Download Telegram
В Windows 10 уже давно есть штука, под названием WSL (Windows Subsystem for Linux). Она позволяет запустить практически полноценную систему Linux непосредственно в сеансе пользователя без использования вспомогательных средств. Вы просто открываете консоль с Linux и начинаете в ней работать.

Я периодически пользуюсь этой штукой и нахожу ее удобной. Лично мне она нужна в основном для работы с git и ansible. Уже достаточно давно вышла вторая версия - WSL2, но только сейчас дошли руки обновиться. Для тех, кто это еще не сделал, вот ссылка.

Чтобы обновиться до WSL2, необходимо:

1️⃣ Обновить Винду до версии 1903 и выше.

2️⃣ Включить через powershell компоненту VirtualMachinePlatform.

3️⃣ Скачать и установить обновленный пакет ярда Linux (msi установщик).

4️⃣ Указать версию WLS2 как дефолтную.

5️⃣ Проапгрейдить установленный дистрибутив до WSL2 или поставить новый.

Если совсем не в курсе про WLS, почитать можно тут - https://docs.microsoft.com/ru-ru/windows/wsl/about.

#wsl
Сколько лет использую Windows, в том числе расшаривая интернет на ней, а только недавно узнал, что оказывается ещё со времён Windows XP система умеет пробрасывать TCP (и только их) порты. Причём как локальные, так и на удалённые системы, которые используют её в качестве шлюза. Информация как-то мимо меня прошла, хотя много раз были ситуации, когда мне бы не помешал подобный функционал. Приходилось выкручиваться без него.

Узнал об этом недавно, когда захотел прокинуть запросы внутрь Linux системы, запущенной в режиме WSL. Там уже и узнал, что эта возможность есть уже давно. Выглядит всё максимально просто и понятно. Проброс осуществляется следующим образом:

$ netsh interface portproxy add v4tov4 listenaddress=192.168.13.17 \
listenport=8080 connectaddress=172.23.53.217 connectport=80

Прокинули запросы на 8080-й порт локальной системы в WSL на её внутренний адрес и порт 80. Причём делается это очень просто и быстро. Работает без всяких подводных камней.

Важно, чтобы пробрасываемые порты на самой системе не были заняты. Проверять через netstat:
$ netstat -na | find "8080"

Список всех пробросов:
$ netsh interface portproxy show all

Удаление:
$ netsh interface portproxy delete v4tov4 listenport=8080 \
listenaddress=192.168.13.17

#windows #wsl
👍148👎3
​​Я практически с самого появления проекта WSL (Windows Subsystem for Linux) на Windows стал им пользоваться. Настроек у него особо никаких нет. Просто ставишь из магазина и всё сразу работает. Используется виртуальный сетевой интерфейс, виртуальный роутер и dhcp сервер. Настроек у всего этого хозяйства нет. IP адреса системы в WSL получают постоянно динамические.

У меня это особо не вызывало проблем, потому что как сервер WSL не использую, и с основной системы обращаться туда нет необходимости. Но в какой-то момент всё равно надоело это и захотелось получить статический IP. На деле это оказалось не так просто. Каких-то инструментов или настроек для этого не существует. По крайней мере я сходу не нашёл. Правда и не сильно искал.

Решил вопрос в лоб и давно уже его использую. Добавил дополнительный IP адрес к виртуальному сетевому интерфейсу в основную систему и в систему WSL. Выглядит это следующим образом для основной системы:

> netsh interface ip add address "vEthernet (WSL)" 192.168.99.1 255.255.255.0

и для WSL (Ubuntu):

# ip addr add 192.168.99.2/24 broadcast 192.168.99.255 dev eth0 label eth0:1

Причём вторую команду не обязательно запускать в WSL. Можно выполнить и с хоста:

> wsl.exe -u root ip addr add 192.168.99.2/24 broadcast 192.168.99.255 dev eth0 label eth0:1;

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

Я сделал такой батник. Добавил небольшую задержу при запуске, потому что без неё иногда команды не отрабатывали. Судя по всему ещё не успевают подняться какие-то службы, необходимые для изменения настроек.

@echo on
TIMEOUT /T 5
wsl.exe -u root ip addr add 192.168.99.2/24 broadcast 192.168.99.255 dev eth0 label eth0:1;
netsh interface ip add address "vEthernet (WSL)" 192.168.99.1 255.255.255.0

Если кто-то знает, как эту задачу решить более красиво и грамотно, поделитесь информацией. Я сделал как обычно в лоб. Решение заработало, поэтому на нём и остался. Основная машина и система в WSL видят друг друга по соответствующим адресам: 192.168.99.1 и 192.168.99.2.

#windows #wsl
👍90👎1
Я активно использую WSL на своём рабочем ноуте. Очень не хватало возможности запускать программы Linux с графикой. Работал только в консоли. Видел раньше какие-то инструкции на этот счёт, пробовал запускать иксы, но быстро не получалось, а разбираться было лень. Надо было как-то заморочиться с установкой X сервера в Windows.

На днях попал в репозиторий wslg. Там как-то буднично описано, что для запуска GUI приложений достаточно проверить, что WSL версии 2, установить свежий дистрибутив из магазина и установить внутри него необходимое приложение.

Я ничего специально у себя не делал. WSL у меня давно 2-й версии. Система - Windows 11, все обновления стоят. В качестве Linux системы давно уже установлена Ubuntu 22 из магазина. Внутри она обновления до 24-й версии.

Захожу в Ubuntu, устанавливаю gedit:

# apt install gedit

Иду в пуск рабочей системы Windows и вижу там в группе Ubuntu 22 установленное приложение gedit, которое без проблем запускается. Ничего настраивать не надо. Не знаю, в какой момент это стало работать именно так, но работает. Я ничего для этого не настраивал. Похоже с каким-то обновлением винды приехало.

Поставил для теста Edge под Linux:

# wget https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_129.0.2792.79-1_amd64.deb
# apt install ./microsoft-edge-stable_129.0.2792.79-1_amd64.deb

Судя по ярлыкам в пуске, приложения запускаются вот так:

"C:\Program Files\WSL\wslg.exe" -d Ubuntu-22.04 --cd "~" -- gedit

Очень удобно. Теперь приложения и Windows, и Linux работают нативно в одной системе, в распложенных рядом окнах. Пользуйтесь.

#windows #wsl
12👍158👎9
У меня уже пару лет живёт в WSL на рабочем ноутбуке алиас, которым я пользуюсь практически каждый день. В нём нет ничего особенного, но может кому-то в голову не приходило такое сделать, поэтому делюсь.

Алиас этот делает одну простую вещь - выдаёт информацию об IP адресе. Я не знаю, как у остальных админов и девопсов проходит рабочий процесс, но мне постоянно приходится проверять те или иные адреса для различных целей.

В .bashrc алиас с простой функцией:

function ipa {
  curl -s https://ifconfig.co/json?ip=$1 | jq 'del(.user_agent)'
  }

Работает это так:

# ipa 104.21.80.1
{
 "ip": "104.21.80.1",
 "ip_decimal": 1746227201,
 "country": "United States",
 "country_iso": "US",
 "country_eu": false,
 "asn": "AS13335",
 "asn_org": "CLOUDFLARENET"
}

В выводе обрезается информация об user_agent, так как мне она не нужна, только внимание отвлекает. Если не указывать IP, а просто ввести ipa, то выводится информация о моём внешнем IP адресе.

Сервис ifconfig.co полностью бесплатен, не нужны ни регистрация, ни что-либо ещё. Просто берёшь и пользуешься.

При поиске информации об IP адресах и домене обычно приходится оперировать следующими командами. Проверка DNS записей:

# dig +short example.com A

Потом можно сразу же проверить эти IP адреса:

# ipa 23.215.0.138

Часто приходится проверять PTR запись для адреса, чтобы понять его принадлежность или функциональность:

# host 23.215.0.138

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #wsl
👍270👎4
Я давно и активно использую виртуальные машины с Linux в подсистеме WSL в Windows. Точнее одну конкретную виртуальную машину с Ubuntu. Она у меня давно установлена ещё версии 22.04. В системе она так и отображается - Ubuntu-22.04.

Внутри она давно обновилась до Ubuntu 24.04 LTS и мне не нравится, что теперь версия в названии не соответствует действительности. Всё руки не доходили исправить это. А тут подвернулся случай, потому что решил поставить ещё одну систему с Debian и заодно навести в целом порядок с WSL.

Я решил, во-первых, переименовать Ubuntu. А во-вторых, перенести все WSL системы для удобства в одну директорию. По умолчанию Убунта живёт вот тут:

C:\Users\User\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx

Задумал перенести её и остальные виртуалки в C:\Users\User\Documents\WSL. Для переименования и одновременного переноса проще всего воспользоваться процедурой экспорт/импорт.

Смотрим список систем в терминале PowerShell:

> wsl -l -v
 NAME       STATE      VERSION
* Ubuntu-22.04  Running     2

У меня она пока одна. Останавливаем:

> wsl --shutdown

Делаем экспорт и потом сразу импорт:

> wsl --export Ubuntu-22.04 C:\Users\User\Documents\WSL\ubuntu24.tar
> wsl --import Ubuntu C:\Users\User\Documents\WSL\Ubuntu C:\Users\Zerox\Documents\WSL\ubuntu24.tar --version 2

Назвал систему просто Ubuntu, чтобы не менять постоянно версии. Она у меня только одна будет. Смотрю список систем:

> wsl -l -v
 NAME       STATE      VERSION
Ubuntu      Stopped     2
* Ubuntu-22.04  Stopped     2

Делаю новую системой по умолчанию:

> wsl --set-default Ubuntu

После этого зашёл в настройки стандартного Терминала Windows, убедился, что появился профиль для Ubuntu. На всякий случай проверил настройки, чтобы они совпадали с прошлым профилем. Я особо стандартный не менял, на вид там всё так же.

После этого зашёл в новый профиль и, соответственно, в перенесённую систему. Убедился, что с ней всё в порядке. Там единственный момент возник, что система почему-то сразу под пользователем root стартует, хотя в исходную я заходил всегда под обычным пользователем. Исправил это так. Создал файл /etc/wsl.conf и добавил туда:

[user]
default=zerox

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

> wsl --unregister Ubuntu-22.04

Образ старого диска автоматически удалился, а новый остался в C:\Users\Zerox\Documents\WSL\Ubuntu, куда я его импортировал.

Теперь пришло время поставить ещё одну систему. Смотрю список доступных из магазина:

> wsl -l -o

Вижу образ с Debian. Его и буду ставить. К сожалению, я не понял, как мне сразу указать директорию, куда я буду его устанавливать. Поэтому сначала просто установил:

> wsl --install -d Debian

А потом так же через экспорт/импрот перенёс в нужную директорию.

Для удобства я назначаю системе в WSL и основному хосту дополнительные статические IP адреса на виртуальном коммутаторе. Подробно об этом рассказывал отдельно. Задачу я решил костылём, а если хотите красиво и удобно, то лучше сделать вот так. Но лично мне такой режим не очень нравится. Мне больше подходит изолированная сеть у Linux, чтобы она не пересекалась с основной системой.

Ещё материалы по теме:
▪️Запуск графических приложений Linux в основной системе
▪️SSH туннели через WSL
▪️Проброс портов в WSL

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#windows #wsl
👍149👎3