LINUX.ORG.RU
ФорумAdmin

Доступ к виртуальному локальному серверу

 , , , ,


0

1

Я детишкам преподаю основы программирования. Хочу дать каждому по vps для баловства на время учебы. Планирую свой домашний сервер нарезать с ESXi, но вопрос не в этом. Как можно пробросить им доступ? В идеале все порты, но хотя бы 22, 80 и условный 3333. Тунели? Пробовал Yggdrasil но не завелось. 1 статичный ip есть. Заранее спасибо. Сам вообще не админ


Ответ на: комментарий от CrazyAlex25

Это придется в ручную назначать порты? И каждому 22 не дашь. К тому же в идеале что бы можно было просто из интернета достучаться (их сайтики везде открывались)

Zpon
() автор топика
Ответ на: комментарий от Zpon

Нет, в конфиге openvpn задаётся пул ip-адресов. При подключении openvpn-клиента из этого пула ему динамически выдается ip. Так же при подключении клиент может получать с сервера список маршрутов и настроек днс. Это позволяет обустроить дело так чтобы после подключения к vpn у клиента появлялся доступ к локальной сети за vpn. В том числе 22 порт. Т.е. нарезаешь каждому студенту виртуалку, назначаешь им ip из внутреннего диапазона. Поднимаешь внутренний dns, в котором описываешь имена виртуалок и соответствующие им ip адреса чтобы студенты ходили в свои виртуалки не по ip, а по имени.

Для доступности вебчика без vpn придется прокси ставить. Т.е. допустим купил ты домен mydomain.net. тогда в настройках этой внешней зоны нужно сделать чтобы *.mydomain.net смотрел на ваш шлюз. На шлюзе сделать проброс 443 и 80 портов на виртуалку с nginx. В конфиге nginx описать все студенческие хосты и для каждого указать ip:port в качестве бэкенда

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от cobold

Опять же не будет доступа из вне. Тогда я мог бы свой основной ip пробрасывать на их порты: 1 машина 1022->22, 1080->80 etc.. Хочется что бы все порты робили, и без таких танцев с бубном. Может я могу как-то получить пул ipv6 и дать их? Может по 1 проводу идти ipv4 и ipv6 одновременно?

Zpon
() автор топика
Ответ на: комментарий от Zpon

Может я могу как-то получить пул ipv6 и дать их?

Если ipv4 статический, то весьма легко. С динамическим скриптами обмазываться придется.
Основную проблему в отсутствии v6 у детишек вижу я.

Может по 1 проводу идти ipv4 и ipv6 одновременно?

facepalm.jpg Вы точно что-то там детишкам преподаете? А не наоборот ли случайно? :)

anc ★★★★★
()
Ответ на: комментарий от Anoxemian

Выдай детям доступ по ssh

В chroot их каталога для вэба.

а внешку организуй по принципу shared hosting вида http://ip/vasya_9b

Имхо логичнее http://vasya_9b.tld

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)

Что дети будут делать с этими впсами, которые ты им дашь? Арч устанавливать или Генту компилять? И какое отношение это имеет к программированию?
Если хочешь дать ssh доступ, то просто понасоздавай пользователей на одной машине.

rupert ★★★★★
()
Ответ на: комментарий от Anoxemian

Спасибо, а то мне в начале показалось что я не на linux.org.ru, а на каком то френдли форуме. Там всё немного сложнее, они будут писать не php скрипты которые можно куда-то положить, оно будет собственным приложением требующим свой порт. А заставлять их использовать какую-то самописную обертку что бы это работало, ну хз

Zpon
() автор топика
Ответ на: комментарий от Zpon

если просто работать извне, то проброс порта на роутере до сервера на qemu, в этом случае нужен внешний ip

  • тут можно чтобы все сидели на одном vps под разными логинами

  • можно зарегать домен и каждому дать поддомен для работы, соотв тогда каждому дать права только на конфиг файл апача для поддомена, соотв нужно будет еще пробросить 80 и 443 порты — это самый простой вариант и я бы на нем остановился

  • можно на одном vps дать каждому по отдельному апачу, тогда vps’у стоит дать много ip (локальных) и сделать свой dns который будет говорить какой поддомен к какому ip относится

  1. если нужно каждому создать свой сервер с доступом, то тогда лучше сделать vpn, но для удобной работы это потребует настройки vpn на компах пользователей — сложно!
soomrack ★★★★★
()
Ответ на: комментарий от Zpon

Препод, а сформулировать задачу не может.

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

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)

Поднять openvn сервер + bind с локальной зоной, например, class.

При подклдчении пушить на клиенты свой nameserver и search class.

Виртуалкам раздать фиксированные внутренние адреса, прописать из в зону class.

Таким образом, после подключения у тебя будет куча доменов 2 уровня типа $NAME.class, каждый со своим ip и, соответственно, 22 портом.

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от t184256

Если надо, чтобы по одному IP и порту откуда угодно из сети интернет безо всякой допнастройки было доступно не просто 20 сервисов, а ещё и из них один тот самый нужный, то задача нерешаема.

Зависит от того, что за сервисы. Может и решаемая, надо рассматривать конкретные примеры. Я намекаю на вариант когда демон слушает конкретный порт и в зависимости от того что прислал клиент стартует соответствующий серверный процесс. Типа клиент: «хачу апач», стартуем апач и тд.

anc ★★★★★
()

Если все порты, то тока vpn (openvpn, wireguard)если только ssh и 80 и детишек не много, то можно nat-ом на сервере, а-ля префикс для каждого и номер порта. Например, пусть Иванов будет 100й, тогда для него будут порты 10022 и 10080 будут перенаправляться на 22 и 80 для виртуалке иванова.

pihter ★★★★★
()

Решил подобную задачу, предоставив доступ к виртуальным машинам через Cockpit. Оно, не совсем для учебных целей, но получить доступ к рабочему столу в браузере через vnc можно. Для начального этапа большего и не надо, имхо

Jurik_Phys ★★★★★
()
Ответ на: комментарий от pihter

Я об этом думал. Дома роутер не на OpenWRT, придется городить костыли, что бы руками это не прописывать и смириться что у ребёнка будет сильно ограниченное количество портов. Но наверное самый реалистичный вариант

Zpon
() автор топика
Ответ на: комментарий от Zpon

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

Ребёнку нужно будет только поставить клиент (скачал, запустил, далее, далее, далее, готово) и скормить ему (в случае винды, дважды кликнуть) подготовленный тобой конфиг. И вот у него виртуальная сетевушка соединенная с его машиной.

Это забесплатно, ставится на любой комп с линуксом, надо только белый айпи, но у тебя есть как я понял.

Настройка там не такая сложная как кажется, мы тут - поможем

Тебя устроит, если у них будет общая сеть на всех, просто у каждой виртуалке свой айпи? Если так, то там вообще на 20 минут делов, готов помочь, вплоть до написания конфигов.

Наверное, с wireguard в наш век даже проще, но просто с openvpn я дела имел и знаю че там куда, так что точно помочь могу

pihter ★★★★★
()
Ответ на: комментарий от Zpon

Тогда пусть учатся и разворачивать свои вирт. машины у себя на домашнем компе.

Основы программирования это не вот эта вот фигня, а структуры данных и алгоритмы.

futurama ★★★★★
()
Ответ на: комментарий от pihter

Звучит как вариант. Из минусов они будут легко использовать моё соединение и гонять трафик через меня, но без этого никак. Доступ будет не откуда угодно. В целом с похожим результатом можно сервер развернуть не у меня дома, а в организации, эффект будет тот же. Спасибо, помощь с OpenVPN не нужна, уже баловался с ним. В этот учебный год организация закупит пол сотни VPS для этих целей, а потом буду смотреть по возможности разворачивать сам. Мы бюджетники, такая простая вещь как закупить у провайдера подсеть - не такая быстрая. Буду копать в этом направлении, всё же хочу что бы у них были прям полноценный VPS у каждого.

Всем спасибо за советы. Топик закрывать пока не буду, вдруг появится гениальное решение (Хотя очень вряд-ли)

Zpon
() автор топика
Ответ на: комментарий от Zpon

Из минусов они будут легко использовать моё соединение и гонять трафик через меня, но без этого никак

Да с чего это? Можно создать сеть, которая соединены тока с впс-ами и с клиентами, а с интернетом не соединены, тогда трафик через тебя не погоняешь

Они конечно смогут поднять свой проксик или даже свой впн на впсках твоих (на них-то интернет есть) но если так - то можно уже и не учить дальше :)

pihter ★★★★★
()
Ответ на: комментарий от pihter

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

pihter ★★★★★
()
Ответ на: комментарий от Zpon

Не надо мучаться, вот идеальное решение: netbird. Развернуть можно и у себя, раз есть статика, но я бы арендовал vps, трафик из виртуалок для учеиков я бы завернул какой-нибудь прокси, хоть тот же hola-proxy standalone. Виртуалки в отдельную сеть, внутри этой сети один routing peer, либо в каждую виртуалку по клиенту запихнуть.

Для учеников можно сделать безлимитный setup-key, ежели их много.

anonymous
()
Ответ на: комментарий от anonymous

Если планируется закупить 50 vps - закупаете 51, на 51 разваричивается netbird, в остальных через cloud-init, terraform или иным образом ставиться клиент, там достаточно один простой .sh скрипт выполить один раз для установеи клиента и настройки подключения.

Как вариант: арендовать железный сервер, туда proxmox. Имхо, лучше чем 50 vps покупать на год, выгоднее.

anonymous
()
Ответ на: комментарий от anonymous

Как вариант: арендовать железный сервер, туда proxmox. Имхо, лучше чем 50 vps покупать на год, выгоднее.

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

anc ★★★★★
()
Ответ на: комментарий от anc

Но есть нюанс, если навернется, то навернется сразу всё.

Верно, но:

  1. Бэкапы
  2. Это под VPS, для обучения и экспериментов, падение на час или день, полагаю, не страшны.
  3. Если очень нужно, можно сделать HA.
anonymous
()
Ответ на: комментарий от anonymous

Бэкапы

Бэкапы в любом случае.

Это под VPS, для обучения и экспериментов, падение на час или день, полагаю, не страшны.

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

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от Zpon

Нужен VPS что бы разворачивать свои сервисы.

Тогда нужно каждому дать по отдельному ip, либо посадить всех на один и рулить всем через reverse-proxy.

В случае с одним ip и обратным proxy можно поднять nginx proxy manager (это gui к nginx), в нем можно создать отдельных пользователей и раздать доступы ученикам.

Еще можно домены 3-го уровня сделать, user1.scool.ru, user2.scool.ru и т.д.

anonymous
()
Ответ на: комментарий от anc

Совсем-совсем никто не раздает?

Айпишники уже давно ресурс который стоит денег. Вероятность того, что у прова 20 айпишек, за которые он скорее всего платит вышестоящему прову и которые он готов просто отдать - около нуля. А на всяких aws если ты захочешь 20 айпишек на один впс, то через интерфейс тупо нельзя даже платно, только через поддержку.

goingUp ★★★★★
()
Ответ на: комментарий от anc

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

VPS крутятся на таком же железе, серьезный HA под обычные vps строить не целесообразно, тем более в РФ.

Верю, что amazon, google и т.д. могут такое делать, причем по доступной цене, но в РФ такого нет и не появится, т.к. сугубо внутрений рынок. Использовать же не местных хостеров сейчас тоже рисковано, просто риски иные.

anonymous
()
Ответ на: комментарий от anonymous

VPS крутятся на таком же железе,

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

Использовать же не местных хостеров сейчас тоже рисковано

И такое не только про эту страну.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)

Нужен сервер в Интернете, с публичным IP. Проще всего самый дешевый VPS арендовать.

На этом сервере надо установить wireguard и caddy.

На нарезанных виртуалках тоже установить wireguard. Назначить всем частные IP-адреса.

На сервере настроить caddy на реверс-проксирование. sashenka.zpon.ru -> 10.2.3.45. Купить один домен и поддомен каждому выдать. caddy сделает https. Будет все по-взрослому.

Кроме этого прокинуть каждому по порту. 0.0.0.0:50100 -> 10.2.3.45:22. Это для ssh. Ну если кому еще порты нужны будут, еще прокинуть. Публичный IP при этом будет один.

Как-то так.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 1)