Найти тему
Чебурек В Танке

Содание публичного сервера на сером IP из домашнего ПК/Ноутбука

Оглавление

Возможно, среди начинающих WEB-разработчиков есть такие энтузиасты, которые не хотят арендовывать сервер, но у них есть старый ПК который они бы хотели использовать в него и роутер с проводным интернетом. Многие начинают искать различные инструкции и у кого-то это получается, а у кого-то и нет. В данной статье, мы разберём:

  • Как установить и настроить пустой образ Debian Netinst
  • Подготовка и настройка сетевых адаптеров (включая Wi-Fi)
  • Установка SSH
  • Открытие портов на роутере

Ну что же, приступим...

Как установить и настроить пустой образ Debian Netinst

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

Приступим к подготовке ПК/Ноутбука. Необходимо отключить сетевой кабель и Wi-Fi Адаптер, дабы не установить чего лишнего. И приступаем к установке. Полностью комментировать её я не буду, но прикоснусь к одному важному моменту: когда вы дойдете до этапа установки репозиториев, выберите один из репозиториев, после кнопку "Вернуться" в окне с ошибкой установки зеркал и пропускаете. Также необходимо установить "Стандартные инструменты", так что галочку с них не снимайте. Далее всё по стандарту.

После того как система установится и запросит вход, входите не под пользователем которого вы создали, а под root, поскольку команда sudo даже не будет работать.

Первым делом установим репозитории. Для этого откройте файл, командой:

nano /etc/apt/sources.list

Удалите всё содержимое, и вставьте следующие репозитории:

deb http://security.debian.org/debian-security stable-security main contrib non-free
deb-src http://security.debian.org/debian-security stable-security main contrib non-free
deb https://deb.debian.org/debian/ stable main contrib non-free
deb-src https://deb.debian.org/debian/ stable main contrib non-free
deb https://mirror.yandex.ru/debian/ stable main contrib non-free
deb-src https://mirror.yandex.ru/debian/ stable main contrib non-free

После приступим к настройке. В начале необходимо включить интернет. Подключаем сетевой кабель и перезагружаем сервер. Или же если у вас подключение с роутером идёт через Wi-Fi, то подключаем интернет через "USB-модем" вашего смартфона или настоящий USB-модем, поддерживающий работу без драйверов и работающий как Wi-Fi. Если интернет вы решили подключить через ваш смартфон, то вам необходимо подключить его по USB к выключенному серверу и открыть настройки режима модема. И как только включаете сервер, включить и режим модема, а после перезагрузки прописать команду dhclient.

ВНИМАНИЕ!!! Вы подключаете интернет по телефону только для того чтобы установить необходимые пакеты для работы с Wi-Fi адаптером, благодаря которому вы и будете соединяться с роутером, и установки основных пакетов. Другие устройства раздачи интернета кроме роутера, не принимаются, поскольку вам позже необходимо будет открыть порты. Если у вас кабельное соединение устанавливать пакеты для работы с Wi-Fi адаптером не нужно. Я вас предупредил.

Обновляем репозитории и обновляем пакеты командой:

apt update && apt upgrade -y

И устанавливаем следующие пакеты:

apt install sudo ufw net-tools

Если вы будете обеспечивать подключение Сервера и Роутера через Wi-Fi, то нужно также установить следующие пакеты:

apt install wireless-tools wpasupplicant

Теперь настраиваем sudo. Открываем следующий конфиг:

nano /etc/sudoers

И ищем строчку со следующим содержанием:

root ALL=(ALL:ALL) ALL

И ниже переписываем эту строчку, только вместо root, пишете ваше имя пользователя. Затем сохраняем, и перезагружаем ваш сервер. Следующую авторизацию, вы можете совершить от имени вашего пользователя, с использованием команды sudo.

P.S.: Если у вас в качестве интернета работает телефон, то можете его уже отключать. Все необходимые пакеты, в том числе для Wi-Fi, мы уже установили.

Подготовка и настройка сетевых адаптеров (включая Wi-Fi)

Вот мы и приступили к одному из необходимых пунктов. Здесь мы будем настраивать сетевые адаптеры.

Прописываем следующую команду:

ip a

Благодаря этой команде мы узнаем название сетевого адаптера, будь то это LAN (по проводу) или WLAN (Wi-Fi). Запомним это название, позже оно нам понадобится.

Сейчас, мы будем прописывать локальный IP сетевого адаптера, дабы зафиксировать за ним порт, а также прописывать данные от Wi-Fi сети роутера, если вы будете использовать этот тип связи. Прописываем следующие команды, чтобы получить разрешение на редактирование файла, а также открыть его.

sudo chmod 0600 /etc/network/interfaces
sudo nano /etc/network/interfaces

В данном файле видим следующую структуру:

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback

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

Для LAN

auto <название адаптера>
iface <название адаптера> inet static
address <локальный IP>
gateway <IP шлюза - роутера>
netmask
255.255.255.0 (маска подсети, уточняйте в настройках)

Для WLAN

auto <название адаптера>
iface <название адаптера> inet static
address <локальный IP>
gateway <IP шлюза - роутера>
netmask
255.255.255.0 (маска подсети, уточняйте в настройках)
wpa-ssid "Имя сети"
wpa-psk "пароль"

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

P.S. если у вас по какой-то причине отваливается сетевой адаптер при старте ОС, со словами:

[FAILED] Failed to start networking services - Raise network interfaces.

То необходимо перейти в папку:

cd /etc/udev/rules.d/

и создать файл с названием: 10-rename-network.rules

в который вставляем следующее содержимое:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC-адрес вашего сетевого адаптера из ifconfig", NAME="название вашего сетевого адаптера из ifconfig"

Если команда cd говорит вам что путь не найден, переходите по ступенькам, с командой ls.

cd /etc/
ls
cd udev
ls
cd rules.d
ls

и создавайте файл описанный выше.

Установка SSH

Следом, установим и запустим openssh, а также сделаем исключение для файервола. Прописываем следующие команды:

sudo apt install openssh-server ssh
sudo systemctl start sshd
sudo ufw allow ssh

Теперь сделаем основные настройки SSH. Переходим в его конфиг:

/etc/ssh/sshd_config

Раскомментируем строчку и заменим его с 22 на другой для безопасности. Также найдем строчку с параметром PermitRootLogin, раскомментируем его и установим значение на no, благодаря чему запретим авторизацию root аккаунта. Все эти действия необходимы для безопасности удалённого пользователя Linux, т.к. боты интернета сканируют все IP и порты интернета. Рано или поздно они найдут ваш сервер, и будут пытаться подобрать пароль. В основном они подбирают пароль для root и user. Это не означает что в сеть не стоит давать удалённый доступ для ПК. Просто необходимо продумывать методы защиты от таких действий. Например сделать авторизацию по ключу и т.д.

После настройки конфига SSH, перезагрузим его командой:

sudo systemctl restart sshd

Открытие портов на роутере

Теперь приступим последней части нашей статьи. Открытие портов. Объяснять я буду на пример роутера TP-Link.

Входим в настройки роутера и переходим к пункту DHCP -> Резервирование IP адресов. Добавляем в него новый пункт и вводим в него MAC Адрес сервера, IP который закрепляли на уровне устройства и переводим в положение: Включено.

Затем, заходим в Переадресация -> Виртуальный сервер. Добавляем новый пункт и вводим порт какой мы хотим открыть, IP и на какой локальный порт хотим перенаправить (можно оставить пустым, тогда порт на который будет перенаправляться соединение будет такой же какой мы открыли). После мы перезагружаем роутер, узнаём его IP (его зона будет изменена). Готово. Теперь мы можем из любой точки мира подключиться к нашему серверу.

P.S.: Не забудьте! При каждом перезапуске роутера будет изменяться и IP. Не забывайте после каждой перезагрузки смотреть какой у него новый IP.

Как открыть несколько портов на сервер.

Открыть несколько портов на один локальный IP в роутере можно, если это поддерживает сам роутер. В противном случае такое не запустится. Но! можно сделать обход этой системы! Для этого, необходимо снять резервацию IP в роутере, если выше вы её поставили и увеличить разброс локальных IP в настройках DHCP, дабы исключить случайный конфликт.

P.S.: Этот способ не работает с WLAN (Wi-Fi)

Затем изменяем сетевой конфиг на подобие такого:

auto <название адаптера>
iface <название адаптера> inet static
address <локальный IP>
gateway <IP шлюза - роутера>
netmask
255.255.255.0 (маска подсети, уточняйте в настройках)
auto <название адаптера>:<порядковый номер, начинайте с нуля>
iface <название адаптера>:<порядковый номер, начинайте с нуля>
address <локальный IP>
gateway <IP шлюза - роутера>
netmask
255.255.255.0 (маска подсети, уточняйте в настройках)

Иными словами переписывайте тот же самый сетевой адаптер, с изменениями в названии и локальном IP:

  • eth0
  • eth0:0
  • eth0:1

После открываете порты на данные IP адреса. Также не забудьте после этих манипуляций для приложений требующий определённый порт также указывать и локальный IP привязанный к этому порту.

Спасибо за внимание на этом всё, надеюсь что кому-то помог.