Bash Days | Linux | DevOps
22.9K subscribers
114 photos
21 videos
555 links
Авторский канал от действующего девопса

Самобытно про разработку, devops, linux, скрипты, тестирование, сисадминство, техдирство, пиэмство и за айтишную жизу.

Автор: Роман Шубин
Реклама: @maxgrue

Курс: @tormozilla_bot

РКН: https://two.su/bashdays
Download Telegram
Привет, всех с Новым Годом! Праздники праздниками, но пора уже входить в рабочий поток и разгрести локальный техдолг. На этот раз решаем задачку с тремя известными: Windows + WSL + VirtualBox.

Суть такая. Понадобилось мне вхреначить на локальную машину VirtualBox с убунтой, для тестирования фичи, которую писал в этом посте. Фича не хотела заводиться на виртуальных серверах Селектела, хотя и должна была. Потребовалось убедиться, что дело не в моих кривых руках. Ладно, лирика…

Короче цепануться к убунте из wsl по ssh к VirtualBox из коробки не получилось. Да и понятно, подсети разные. Пришлось временно воспользоваться powershell и через ssh проверить гипотезу с cgroup. Винда видит подсеть виртуалки и с этим проблем нет. Проверил, забыл.

Но вопрос остался открытым: как блять/дь малой кровью из WSL (с ubuntu 22.04) подключиться напрямую к виртуалке c ubuntu 22.04 по ssh? И не задрачиваться с таблицами роутинга? Рассказываю!

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

В общем, пиздуем в настройки VirtualBox: Сеть, Адаптер1. В нем по умолчанию включен NAT. Открываем пункт - Дополнительно, видим кнопку: Проброс портов. Заходим и начинаем заниматься очередной хуитой магией.

Сначала роутим на виндовую машину:

Имя: ssh_win
Протокол: tcp
Адрес хоста: 127.0.0.1
Порт хоста: 2222
Адрес гостя: пусто
Порт гостя: 22


Так, теперь в powershell я могу цепануться к виртуалке так:

ssh -p2222 user@127.0.0.1


Оно и ежу понятно, теперь усложняем задачу:

Имя: ssh_win_host
Протокол: tcp
Адрес хоста: 192.168.31.100
Порт хоста: 22
Адрес гостя: пусто
Порт гостя: 22


Этой хернёй разрешаем подключение из powershell по такому принципу:

ssh user@192.168.31.100


Ага, айпишник 192.168.31.100 это адрес, который выдал роутер моей виндовой машине. Как видим уже используется 22 порт. Посмотреть айпишник можно командой ipconfig в терминале powershell. Да простят меня адепты линукса.

Ну и теперь финальный штрих, прикручиваем WSL:

Имя: ssh_wsl
Протокол: tcp
Адрес хоста: 172.21.20.123
Порт хоста: 2222
Адрес гостя: пусто
Порт гостя: 22


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

ssh user@192.168.31.100


То есть цепляемся в виндовой/хостовой машине на 22 порт, который уже проброшен. Закидываем public ключи, делаем алиасы для быстрого коннекта. Всё! Дело в шляпе! Мы подключились из WSL (ubuntu) по ssh к виртуальной машине в VirtualBox.

Есть нюанс, у меня дополнительно поднят VPN через wireguard, там еще один фактор с подсетью. Поэтому я добавил еще мусора:

Имя: ssh_vpn
Протокол: tcp
Адрес хоста: 10.66.64.55
Порт хоста: 22
Адрес гостя: пусто
Порт гостя: 22


Теперь при активации VPN, подключение к VirtualBox через WSL будет выглядеть так:

ssh user@10.66.64.55


Логично, адрес виндовой/хостовой машины меняется с 192.168.31.100 на 10.66.64.55. Но это детали. Еще есть тема, что при включении/выключении VPN вся это тягомотина с пробросом портов подхватывается не сразу. Имей это ввиду.

Я себе сделал 2 алиаса в wsl ~/.zshrc:

alias box1="ssh user@192.168.31.100"
alias box2="ssh user@10.66.64.55"


Алиасы подключения без ВПН и с ВПН. Ну ты и так про это знаешь. Картинки с настройками залил сюда (открываются нативно в телеграфе), заскриншотил свои поделки. Визуальнее всегда понятнее. Но у меня там дэцл хосты и айпишники по другому обзываются. Не обессудь.

Если знаешь более красивое решение этой задачи с пробросом, сердечно ждем в комментариях.

Ладно, самое время включить режим «День-Тюлень». Еще раз всех с НГ. Увидимся!

tags: #linux #wsl #windows #network

💩 @bashdays
Please open Telegram to view this post
VIEW IN TELEGRAM