Как сделать свой комп доступным из интернета

  • Автор темы Автор темы k0ttee
  • Дата начала Дата начала
Регистрация
9 Июл 2024
Сообщения
1061
Реакции
611
Баллы
113
CFC
146450
USDT
33.9
Зачем это может понадобится...
Размещать дома любые тяжёлые узлы, не раскошеливаясь на аренду сервера сопоставимого с домашним компом. Снимать сервер с 64 оперативки это не дёшево, добавить в свой комп оперативки - затея беспроигрышная.

В чём отстой...
Диванный дата-центр, а может быть даже "сервер от слова серить" (по тому что в туалете), не даст гарантий работы и доступности 24 на 7. Может отвалиться интернет и вырубиться электричество.

Можно преодолеть отстой...
Современные компы и ноуты можно настроить включаться при подаче питания. Ноутбук может выключаться скриптом при разряде аккумулятора.

Как сделать свой комп доступным из интернета...​

Есть несколько путей с разной сложностью и ценой.
  1. доплачивать провайдеру за выделенный IP адрес и открытые порты
  2. проложить путь через сервисы DDNS
  3. использовать такую функцию роутера
  4. арендовать самый дешёвый VDS и соединить его с домашним компом
С первым вариантом всё просто и понятно, единственный недостаток - нельзя вставить заглушку на случай отвала сети/электричества. Второй вариант это бесплатно или за деньги (бесплатно будет тормозить и иногда отваливаться). Третий вариант как второй, но только бесплатный. Ну и четвёртый вариант исправляет недостаток первого (можно сделать на сервере заглушку на случаи отвалов дома).

Наглядно о втором варианте (всё делается мышкой по инструкциям от DDNS сервисов)...


 2025-02-21 в 17.10.19.png


Наглядно о третьем...
Как видите, я не делаю доступным из интернета сам роутер, только серверный компик (Mac Mini на серванте).

 2025-02-21 в 17.11.01.png



Общая рекомендация будет пожалуй в том, чтобы отключить раздачу случайных адресов в домашней сети. Или выключить DHCP или оставить, но задавать IP устройствам вручную.

Дешёвый VDS связанный с домашним компом​

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

Как работает связка... Домашний комп соединяется с сервером по SSH обратным туннелем, сервер проксирует запросы к тяжёлому узлу на комп.

Это может показаться жутко сложным... Но... Это одна маленькая команда в терминале.😝
Bash:
ssh name@server -i ~/.ssh/key -p 22 -v -R hostname:666:localhost:8080

Туннель это как вход по SSH для управления сервером...

name - имя пользователя (под которым "заходите" на сервер)
server - IP сервера
~/.ssh/key - путь до файла ключа (вместо пароля)
22 - стандартный порт SSH соединения (если переназначали - замените своим)

Вся магия прокладки туннеля это дописать к команде входа немного буковок с циферками.

666 - принимающий запросы порт сервера (направляйте в этот порт запросы от сервера к дому)
8080 - порт дома (дом принимает запросы этим портом)

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

hostname - хост сервера (альтернатива 0.0.0.0)
localhost - хост дома (альтернатива 127.0.0.1)

Я бы написал для облегчения понятности длинными флагами (--port вместо -p), но длинных флагов у команды ssh нету... Только короткие... Это грустненько.

SSH.png


Кроме команды ещё нужно обратить внимание на парочку настроек SSH в файле /etc/ssh/sshd_config (разрешить туннели, разрешить форвардинг, ограничить максимум сессий до достаточного вам количества).
Код:
PermitTunnel yes
AllowTcpForwarding yes
MaxSessions 10
После настроек на забудьте перезапустить демона sshd.

Соединять можно что угодно, хоть клиент на сервере с базой данных дома. В простой пример приведу серверный NGINX проксирующий запросы в туннель к сайту дома. Обойтись можно единственной proxy_pass директивой.
NGINX:
location ~ / {
        proxy_pass http://127.0.0.1:666;
}

Чтобы не было такого "все пользователи с одинакового айпишника заходят" 😆 настройте NGINX на VDS передавать реальные айпишники. Это вообще не обязательно, это если вы хотите правильную статистику.
NGINX:
location ~ / {
        proxy_pass http://127.0.0.1:666;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
}
 

Создайте учетную запись или войдите

Вы должны быть зарегистрированы, чтобы отвечать в темах

Создать учетную запись

Зарегистрируйтесь на нашем Форуме. Это быстро и очень просто!

Войти

Уже есть аккаунт? Тогда войдите!

801Темы
4907Сообщения
325Пользователи
tashanikoНовый пользователь
Назад
Сверху