как поднять сервер на линукс
Основы Linux Server для начинающих
Данный материал посвящен основам операционной системе Linux сервер. Из данного материала Вы узнаете, почему стоит в качестве сервера использовать Linux, а также получите необходимые первоначальные знания, которые пригодятся Вам для начала работы с серверами на базе данной ОС.
Сначала поговорим, почему стоит использовать Linux в качестве серверной операционной системы. Многие так привыкли к Windows, что даже слышать про Linux не хотят, я имею в виду даже пользовательские варианты Linux с красивыми и удобными рабочими столами. И на вопрос, почему Вы не хотите использовать Linux? Все отвечают: «да он какой-то корявый!», «Программы, которые я использую в Windows не устанавливаются на Linux» и так далее. Но на самом деле всем пользователям, которые так категоричны к Linux, я хочу сказать, что Linux очень дружелюбная операционная система, и стоит всего лишь немного разобраться в ней и Вам все станет понятно.
Теперь я хочу перечислить некоторые преимущества Linux перед Windows, а также развеять некоторые мифы:
Я не хочу популяризировать ОС Linux и каким-то образом принижать Windows, но в некоторых случаях лучшего варианта как использование операционной системы Linux не найти. До некоторого времени я тоже думал, что Linux это как-то по не нашему, а когда столкнулся с этой ОС, я был просто приятно удивлен.
Теперь перейдем непосредственно к основам Linux Server. Для примера мы будем использовать дистрибутив Linux Ubuntu Server 10.10.
Основные настройки Linux Server
Описывать процесс установки Ubuntu Server 10.10. я не буду, так как он не сложней, а может даже проще чем установка Windows, единственное, что попрошу сделать в процессе установки, это при «Выборе устанавливаемого программного обеспечения» отметить установку «OpenSSH Server». Это для того, чтобы Вы в дальнейшем могли подключаться к этому компьютеру удаленно с помощью ssh клиента (например, PuTTY). И при этом Вы будете иметь полный доступ к операционной системе с любого компьютера Вашей сети, так как к серверу обычно монитор не цепляют и сам сервер располагается в специально выделенной комнате для серверов (серверной).
В окне «Настройка учетных записей пользователей и паролей» введите свой логин и задайте ему пароль.
После установки Вы впервые загружаетесь, и перед Вашими глазами появляется консоль управления ОС. Для начала введите логин нажмите ввод, а потом пароль, для того чтобы войти в саму ОС. Вы войдете в систему под только что созданным пользователем, который не имеет права суперпользователя root.
Настройка пользователей в Linux
ROOT – стандартный суперпользователь ОС Linux, который имеет максимальные права. Кстати в отличие от Windows, в которой права администратора не самые высокие (есть еще системные), а вот права root самые высокие и если Вы работаете под root-ом и выполняете какие-либо действия, Вас никто не будет спрашивать «Вы действительно хотите сделать это?» как в Windows например, а сразу скажем, убьете систему, без всяких там вопросов. Но, так или иначе, нам сначала необходимо активировать этого пользователя, потому что в дальнейшем нам будут необходимы права суперпользователя (Совет: всегда работайте под обычным пользователем, пока не потребуется перейти в режим root-а), по умолчанию root отключен. Активация учетной записи root делается следующим образом, просто задаем пароль для root.
Система попросит вести пароль пользователя, под которым Вы работаете, а только потом Вы введете новый пароль для будущего root и повторите его.
Раз мы заговорили о пользователях, то давайте научимся создавать их. Делается это так.
Теперь задаем пароль для нового пользователя.
Настройка сети в Linux
Теперь, когда мы немного разобрались с пользователями, нам необходимо настроить сеть, вполне возможно, что это уже сделал DHCP сервер, но быть может, Вы хотите задать статические ip адреса, адреса шлюзов и DNS (что в принципе для сервера естественно).
Для этого редактируем следующий файл.
Открыв этот файл, Вы увидите примерно следующее, точнее он будет выглядеть так в конечном итоге, если Вам нужна статическая IP адресация на этом компе.
Здесь eth0 — это Ваше сетевое подключение, их может быть много в зависимости от того, сколько у Вас сетевых карт, Static говорит о том, что это статический ip адрес, если бы это был динамический, то вместо static было указанно DHCP. Ну а остальное, наверное, все понятно.
Сохраните файл путем нажатия сочетания клавиш ctrl+o и затем выходите из редактора ctrl+x.
Теперь необходимо присвоить DNS сервер, это делается путем редактирования следующего файла.
Впишите или измените следующее.
Где, 192.168.1.100 и 192.168.1.200 адреса наших DNS серверов, если у Вас только один dns сервер, то указывайте только одну строку.
Когда мы все настроили, требуется перезапустить наши сетевые интерфейсы, делается это следующим образом.
Установка программ в Linux Server
В Linux программы устанавливаются совсем по-другому, чем в Windows, поэтому те знания, которые Вы имели при работе с Windows, Вам здесь не помощники. В Linux все программное обеспечение хранится в Репозитариях – это своего рода хранилище пакетов программ специальных для Linux, которое располагается в Интернете, и находится в свободном онлайн распространении, или на компакт дисках. Для того чтобы обновить свои репозитарии (уже в установленной ОС Linux), Вам необходимо выполнить следующую команду (при условии, что у Вас подключен Интернет).
Теперь, когда мы обновили стандартные репозитарии можно что-нибудь установить, предлагаю установить файловый менеджер, один из самых распространенных в Linux это — Midnight Commander (MC). Есть небольшое сходство с FAR-ом, который используется в Windows. Программы в серверных Linux устанавливаются следующим образом.
Где, mc и есть наша программа, которую мы хотим установить, т.е. наш файловый менеджер Midnight Commander.
После установки можете испробовать данную программу, запускаются она просто, введите в консоли название программы, т.е. mc и нажмите ввод.
Я думаю для основы этого достаточно, в следующих статьях (Основные команды терминала Linux Ubuntu Server) будем уже разговаривать более конкретно про настройки каких-либо сервисов (демонов). А пока на этом все.
VPS на Linux с графическим интерфейсом: запускаем сервер RDP на Ubuntu 18.04
В предыдущей статье мы разобрали запуск сервера VNC на виртуальной машине любого типа. У этого варианта масса недостатков, основным из которых являются высокие требования к пропускной способности каналов передачи данных. Сегодня мы попробуем подключиться к графическому рабочему столу на Linux по RDP (Remote Desktop Protocol). Система VNC основана на передаче массивов пикселей по протоколу RFB (Remote Framebuffer), а RDP позволяет отправлять более сложные графические примитивы и высокоуровневые команды. Обычно он используется для организации служб удаленных рабочих столов в Windows, но серверы для Linux также доступны.
Оглавление:
Установка графического окружения
Мы возьмем виртуальную машину с Ubuntu Server 18.04 LTS с двумя вычислительными ядрами, четырьмя гигабайтами оперативной памяти и жестким диском (HDD) на двадцать гигабайт. Более слабая конфигурация плохо подходит для графического десктопа, хотя это зависит от решаемых задач. Не забывайте использовать промокод Habrahabr10 для получения скидки в 10% при заказе.
Установка окружения рабочего стола со всеми зависимостями выполняется следующей командой:
Как и в предыдущем случае, мы выбрали XFCE из-за относительно невысоких требований к вычислительным ресурсам.
Русификация сервера и установка ПО
Часто виртуальные машины разворачиваются только с английской локализацией. На десктопе может потребоваться русская, настроить которую несложно. Сначала установим переводы для системных программ:
Того же эффекта можно достичь, отредактировав вручную файл /etc/default/locale.
Для локализации GNOME и KDE в репозитории есть пакеты language-pack-gnome-ru и language-pack-kde-ru — они понадобятся, если вы будете использовать программы из этих сред рабочего стола. В XFCE переводы устанавливаются вместе с приложениями. Дальше можно инсталлировать словари:
Кроме того, инсталляция переводов может потребоваться для некоторых прикладных программ:
На этом подготовка окружения рабочего стола завершена, осталось настроить сервер RDP.
Установка и настройка сервера RDP
В репозиториях Ubuntu есть распространяемый свободно сервер Xrdp, которым мы и воспользуемся:
Если все прошло нормально, сервер должен запуститься автоматически:
Сервер Xrdp запускается с правами пользователя xrdp и по умолчанию берет cертификат /etc/ssl/private/ssl-cert-snakeoil.key, который можно заменить собственным. Для доступа на чтение файла нужно добавить пользователя в группу ssl-cert:
Настройки по умолчанию можно найти в файле /etc/default/xrdp, а все прочие конфигурационные файлы сервера лежат в каталоге /etc/xrdp. Основные параметры находятся в файле xrdp.ini, который можно не менять. Конфиг хорошо документирован, к тому же в комплекте имеется соответствующие manpages:
Осталось только отредактировать скрипт /etc/xrdp/startwm.sh, который исполняется при инициализации пользовательской сессии. Предварительно сделаем резервную копию скрипта из дистрибутива:
Чтобы запустить окружение рабочего стола XFCE, потребуется сценарий примерно такого содержания:
Обратите внимание: в скриптах лучше прописывать полный путь к исполняемым файлам — это хорошая привычка. Сделаем скрипт исполняемым и на этом настройку сервера Xrdp можно считать законченной:
Настройка межсетевого экрана
По умолчанию Xrdp слушает TCP-порт 3389 на всех интерфейсах. В зависимости от конфигурации виртуального сервера может потребоваться настройка межсетевого экрана Netfilter. В Linux это обычно делается с помощью утилиты iptables, но в Ubuntu лучше использовать ufw. Если IP-адрес клиента известен, настройка осуществляется следующей командой:
Разрешить соединения с любого IP можно так:
Протокол RDP поддерживает шифрование, но открывать доступ к серверу Xrdp из сетей общего пользования — плохая идея. Если у клиента нет фиксированного IP, для повышения уровня безопасности сервер должен слушать только localhost. Доступ к нему лучше настроить через туннель SSH, который безопасно перенаправит трафик с клиентского компьютера. Аналогичный подход мы использовали в предыдущей статье для сервера VNC.
Подключение к серверу RDP
Для работы с окружением рабочего стола лучше создать отдельного непривилегированного пользователя:
Добавим пользователя в группу sudo, чтобы он мог решать связанные с администрированием задачи. Если такой потребности нет, этот шаг можно пропустить:
Подключиться к серверу можно с помощью любого клиента RDP, включая встроенный клиент службы удаленных рабочих столов Windows. Если Xrdp слушает внешний интерфейс, никаких дополнительных телодвижений не понадобится. Достаточно указать в настройках соединения IP-адрес VPS, имя пользователя и пароль. После подключения мы увидим примерно такую картину:
После первичной настройки окружения рабочего стола мы получим полноценный десктоп. Как видите, он потребляет не так много ресурсов, хотя дальше все будет зависеть от используемых приложений.
Если сервер Xrdp слушает только localhost, на клиентском компьютере трафик придется упаковать в туннель SSH (на VPS должен быть запущен sshd). Под Windows можно использовать графический клиент SSH (например, PuTTY), а в UNIX-системах нужна утилита ssh:
После инициализации туннеля клиент RDP будет подключаться уже не к удаленному серверу, а к локальному хосту.
С мобильными устройствами сложнее: способные поднять туннель клиенты SSH придется покупать, к тому же в iOS и iPadOS фоновая работа сторонних приложений затруднена из-за слишком хорошей оптимизации энергопотребления. На iPhone и iPad поднять туннель в отдельном приложении не получится — потребуется приложение-комбайн, которое само умеет устанавливать соединение RDP через SSH. Такое, например, как Remoter Pro.
Менеджер сессий и сеансы пользователей
Возможность многопользовательской работы реализована непосредственно в сервере Xrdp и не требует дополнительной настройки. После запуска сервиса через systemd один процесс работает в режиме демона, слушает порт 3389 и взаимодействует через localhost с менеджером сессий.
Менеджер сеансов пользователям обычно не виден, потому что заданные в настройках клиента логин и пароль передаются ему автоматически. Если этого не произошло или при аутентификации возникла ошибка, вместо рабочего стола появится интерактивное окно для входа в систему.
Автоматический запуск менеджера сессий прописан в файле /etc/default/xrdp, а конфигурация хранится в /etc/xrdp/sesman.ini. По умолчанию выглядит она примерно так:
Здесь можно ничего не менять, стоит только запретить вход с правами root (AllowRootLogin=false). Для каждого авторизовавшегося в системе пользователя запускается отдельный процесс xrdp: если отсоединиться не завершив сеанс, пользовательские процессы по умолчанию продолжат работать, а к сеансу можно будет подключиться заново. Настройки можно изменить в файле /etc/xrdp/sesman.ini (секция [Sessions]).
Переключение раскладок клавиатуры
С двухсторонним буфером обмена проблем обычно не возникает, а вот с русской раскладкой клавиатуры придется немного пошаманить (русская локаль должна быть уже установлена). Отредактируем клавиатурные настройки сервера Xrdp:
В конец конфигурационного файла нужно добавить следующие строки:
Остается сохранить файл и перезапустить Xrdp:
Как видите, поднять сервер RDP на линуксовом VPS несложно, а в предыдущей статье мы уже разобрали настройку VNC. Помимо этих технологий, есть еще один интересный вариант: использующая модифицированный протокол NX 3 система X2Go. С ней мы разберемся в следующей публикации.
Debian Server для новичка
Как-то обеспокоился наличием собственного FTP-сервака. Тем более под это дело «на помойку» был отдан комп этак десятилетней давности. Так как я человек хоть и виндовый, но начинал с чистого ДОСа (про книжки тов. Фигурнова кто помнит?), то я решил сделать все на линуксе. В линуксе я был ноль полный. Еще и усложнил задачу — только консоль, никаких исков (как же — это ж линукс). Дистрибутивом был выбран Debian. Так получилось, что надобность в 2Тб личном хранилице отпала через год и комп был отдан в хорошие руки, а хард пристроен в нужное место. Но был накоплен неплохой опыт стопроцентного новичка. Какие только глупые ошибки я не совершал поначалу! И хабр читал, между прочим, пока разбирался с проблемами. Поэтому эту свою дебютную (первую) статью на хабре я посвящаю тем, кто хочет заняться линуксом с нуля и эта статья призвана для плавного ввода «в тему», являясь, по сути, фильтрацией и систематизацией всего того, что я нашел на просторах интернета. Ранее я этот материал уже публиковал, но, думаю, на хабре он тоже будет полезен.
Что и как хотим получить в результате:
— консольная установка ОС с флешки;
— навыки консольного управление;
— создание собственного репозитория;
— обеспечение удаленного доступа по протоколу FTP/SFTP;
— обеспечение удаленного управления по протоколу SSH;
— дистанционное включение сервера, находящегося за маршрутизатором;
— создание условий работы веб-сервера (в идеале связка nginx+apache).
В инете куча всяких пошаговых инструкций. Порой там бывают досадные ошибки, а если еще линуксоид и сопливый еще покамест, то можно пару часов потратить только на то, что бы понять, что не нужна лишняя палочка или точечка — в линуксе важно все! Нижеизложенное делается для практических целей поставленных задач — не надо воспринимать все как серьезную инструкцию для создания серьезного сервера. Тем более в процессе «восстановления опыта» могут и ошибки тоже быть и у меня…
Итак, имеется пустой комп с подключенной периферией. Для начала нужно установить саму ОС. Имеется так же образы всех дисков Debian 6.0.0 stable. От лазерных носителей я давно отказался, т.е. для установки нужно изготовить загрузочную флешку. Флешка нашлась на 2Gb. После поисков оказалось, что изготовить можно, но из самой линуксовой среды. Пришлось установить с образа первого диска дебиан на виртуальную машину (подключаем образ к виртуалке в качестве виртуального CD-ROM и установка выполняется «честно» как бы с лазерного диска). Устанавливал «оптом» — т.е. и GUI тоже (в 6 версии был только GNOME). Тем не менее, после того, как все сделалось, грузим деабиан, подключаем флешку к виртуалке и открываем консоль.
Видим что-то типа этого:
Это значит, что флешка определилась в системе.
Скачиваем файл boot.img.gz (debian.org) для нужной архитектуры (в моем случае i386) и копируем его в какую-нибудь директори. Далее выполняем команду из этой директории:
# zcat boot.img.gz > /dev/sdc
Теперь надо вытащить и воткнуть обратно USB флешку, чтобы новая структура/таблица разделов распозналась. Это обновит таблицу разделов, хранимую udev. Для проверки выполняем следующие команды:
# mkdir /mnt
# mount /dev/sdс /mnt/
# ls /mnt
и видим инсталляционные файлы, такие как syslinux.cfg, setup.exe, и так далее. Значит все нормально — флешку примонтировали.
Далее скачиваем ISO образ netinstall (debian.org) размером 150-180MB для соответствующей архитектуры (в моем случае i386). Netinstall устанвливает базовую систему, сеть не нужна. Копируем этот образ в какую-нибудь директорию и из этой директории выполняем и отмонтируем флешку:
# cp debian-6.0.1a-i386-netinst /mnt
# umount /dev/sdс
Уф. Теперь при себе есть всегда флешка для установки.
Теперь втыкаем флешку в наш импровизированный сервак, через BIOS выбираем загрузку с флешки и штатно устанавливаем Debian. При установке ничего особого я не обнаружил: выбираем установку с графическим интерфейсом и далее диалоговый режим. Разметить файловую систему можно автоматом — на первый раз сойдет. После установки и перезагрузки, а так же входа в систему мы будем радостно лицезреть черный экран с приглашением командной строки — базовая установка выполнена!
Далее необходимо настоить доступ и управление по протоколу SSH. Так же, что бы особо не париться с консолью нужно бы установить mc (Midnight Commander) — аналог nc (Norton Commander) в DOS или tc (TotalCommander) в Windows. Но для установки нужно скопировать из сети пакет и установить его. Сети же нет. В то же время практически весь хоть сколько-то нужный софт есть на дисках Debian 6.0.0 stable (дисков, кажется, 6). Но я отказался от работы с дисками. Можно настроить сеть и воспользоваться официальным сетевым репозиторием — способ проще некуда. Однако это решение не для нас — нужна широкая автономность на первом этапе. Да и с каких пор мы идем по легкому пути — знакомство носит все же больше исследовательский характер. Значит нужно сделать свой локальный репозиторий.
Придется опять еще раз вернуться в виртульную машину. Входим в консоль под root’ом (на сервере мы в будущем настроим sudo, что бы по каждой ерунде не светить root’а). Создаем директории:
# mkdir debian/pool
# mkdir debian/pool/contrib
# mkdir debian/pool/main
В эти директории копируем содержимое одноименных директорий со всех дисков. Получится одна папочка объемом этак с 30Гб. После того, как содержимое всех дисков скопировано, создаём директории для хранения информации об находящихся в репозитарии пакетах:
Далее все команды выполняются исходя из текущего каталога debian — за его пределы никуда не выходим! Собираем списки пакетов:
# apt-ftparchive packages pool/main/ > dists/stable/main/binary-i386/Packages
# apt-ftparchive packages pool/contrib/ > dists/stable/contrib/binary-i386/Packages
Создаём файлы Release:
# apt-ftparchive release pool/contrib/ > dists/stable/contrib/binary-i386/Release
# apt-ftparchive release pool/main/ > dists/stable/main/binary-i386/Release
# cd /debian/pool/dists/stable
# apt-ftparchive release. > Release
Теперь папку /debian можно скопировать на жесткий диск и при желании подключать и организовывать локальные репозитории в других системах. Что и делаем — копируем папку на съемных USB-хард.
2) подключение… заходим на сервер под root’ом
Подключаем USB-хард к серверу. Далее соображаем как определился хард:
Правим файл /etc/apt/sources.list — комментим все репозитории и прописываем наш:
deb file:/debian/ stable contrib main
Тут надо сделать краткое отступление. Как поправить файл, если одна консоль? Для этого есть редактор vi:
# cd /etc/apt
# sudo vi sources.list
Далее делаем что нужно: передвигаем курсор в нужную позицию и жмем «i». Это режим ввода. Делаем что нужно. Сделали и жмем ESC для возврата в командный режим. Далее — все по новой. После того как все завершено жмем последовательность «ESC: w! Enter» — это команда возврата с сохранением изменений. Страшно? После установки mc жизнь упростится…
# apt-get update
# apt-cache gencaches
Готово наше локальное хранилище!
Теперь наконец-то добрались до SSH вплотную почти.
1) не всю же жизнь под root’ом работать…
Но сначала немного облегчим себе жизнь — настроим sudo. Sudo — система позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы. Проще говоря user сможет выполнять действия, которые изначально предполагалось выполнять только от root’а.
Заходим на сервер под root’ом и открываем файл /etc/sudoers. Используем опять же редактор vi:
# cd /etc
# vi sudoers
И под ней дописываем:
Выходим с сохранением. Готово! Теперь можно заходить под user’ом, но при выполнении критических команд просто перед командой добавлять «sudo». В первый раз система запросит текущий пароль для идентификации. Выходим из системы и заходим под user’ом. Пароль от root’а можно отныне записать на бумажке — пользоваться будем сильно редко, можно и забыть)
2) замучила консоль и vi…
# sudo apt-get install mc
После установки введя команду
Теперь можно радоваться и забыть про команды mkdir, cp, ls, cd, а так же консольное управление в vi. Править файлы теперь можно по F4. Ностальгия по 2000ым — тогда я на 386ом только нортом и пользовался…
# sudo apt-get install ssh
После успешной установки нужно добавить в конец файла /etc/ssh/sshd_config строку для ограничения доступа:
AllowUsers root, user
Далее идем по указанному пути и правим файл. После правки проблем с сохранением не будет — mc запущен под root’ом же. После правки нужно обновить сервис ssh — выходим в консоль и выполняем рестарт сервиса:
# sudo /etc/init.d/ssh restart
— Четыре
Для последнего штриха перед переходом на удаленное управление нужно только настроить сеть. У меня ситуация простая: комп подключен к маршрутизатору проводом. Так как на маршрутизаторе включен DHCP, то интернет получим от него автоматом.
Настройки сетевых интерфейсов хранятся в файле: /etc/network/interfaces
Вот пример рабочего содержимого файла:
Запускаем mc через sudo и правим этот файл в соответствии с теми сетевыми настройками, которые справедливы для вашей сети.
Настройка имени сервера и хостов находятся: /etc/hostname, /etc/hosts
Если наш сервер называется «debian», то проверяем:
В hostname значится только:
А в host первые строчки:
127.0.0.1 localhost debian
10.0.0.10 debian.localhost debian
После всего этого гасим компьютер:
2) удаленное управление…
Отключаем все кабели, тянем наш сервер в самый дальний угол и подключаем его в розетку и к сети. При этом надо заранее позаботится что бы на этапе загрузки BIOS не ждал нажатия кнопки с названием «any» после того как он с удивлением обнаружит, что клавиатура и мышь не обнаруживаются. Нажимаем кнопку питания и возвращаемся к рабочему компьютеру. На этом компе у меня винда. Как же теперь подключиться к серверу?
Есть такая программа putty. Добыть ее можно в интернете. После ее запуска во вкладке «Session» прописываем IP адрес нашего сервера, в качестве порта оставляем значение 22 (это стандартный порт для Shell). Проверяем, что во вкладке «Translation» выставлено UTF-8, что бы неогрести крякозяблев при отображении кириллицы. Возвращаемся в «Session» и открываем канал: «Open». После соединения нас попросят подтвердить создание ключей соединения с нами — подтверждаем. Вводит логин: user. Далее вводим пароль — пароль при вводе не отображается, т.е. это нормально. После соединения видим приглашение сервера и родную консоль, только не на всем мониторе, а в маленьком окошке, которое можно и подрястянуть мышкой. Это значит «Ура, товарищи!».
В принципе, для доступа к файловой системе можно использовать WinSCP. Это даст возможность копировать файлы между машинами. Но это будет не очень правильно, т.к. после авторизации SSH будет открыт доступ ко всей системе. В идеале хотелось бы просто сделать одну сетевую папку на сервере и открыть доступ к ней. И решение для этого есть.
# sudo apt-get install samba
Теперь редактируем файл /etc/samba/smb.conf. Вот пример рабочего содержимого:
В качестве комментария можно заметить следующее:
— необходимо указать рабочую группу, в которой работают виндовые машины;
— параметр security должен быть установлен в share;
— в секции «user» нужно указать реальный путь и разрешить гостевой доступ — собственно именно эту секцию мы в файл и добавляем.
После всего этого дела создаем указанные каталоги:
# mkdir /ftp
# mkdir /ftp/pub
И разбираемся с правами на эти папки:
В таком случае доступ будет осуществлен к папке ftp, но в ней изменить ничего нельзя будет. А вот в папке pub — делаем что угодно. Естественно, можно все упростить выкинув папочку pub и поправив права для ftp…
Ну и напоследок перезагружаем сервис, что бы все настройки заработали:
# sudo /etc/init.d/samba restart
— Шесть
Теперь пора выпустить нашего малыша в сеть )))
Для начала неплохо было бы сделать сетевой файловый доступ и управление из любой точки сети. Но что мы имеем по топологии?
У нас должен быть выход в интернет с статичным реальный IP-адресом. Т.е. доступ из вне должен осуществляться напрямую, а не через коммутацию сетей провайдера. Например, пользователи сети Рамнет все сидят за большим NAT’ом, т.к. выходят в сеть через несколько пулов. Это значит, что IP выданный при регистрации вовсе и не совпадает с тем IP, который «отпечатывается», например, при посещении сайтов. Реальный IP — это однозначно тот IP, который прописан в сетевых настройках драйвера сетевой платы. Узнать реальный IP или нет можно воспользовавшись каким-нибудь сетевым сервисом в интернете, который показывает ваш IP-адрес. Допустим у нас имеется реальный IP.
Далее, если сетевой провод напрямую заведен на сервер, то проблем особых уже и нет — сервер уже в сети. А если стоит какое-то маршрутизирующее устройство (маршрутизатор, или промежуточный разветвитель-коммутатор на базе того же линукса)? В таком случае мы оказываемся уже за своим NAT’ом, который нужно немного настроить: осуществить проброс портов. Для каждой сетевой службы на машине имеется свой порт: SSH — 22, FTP — 21. Т.е., маршрутизатор нужно настроить так, что бы при обращении к порту по нашему реальному IP осуществлялось обращение именно к серверу по этому порту. Если наш сервер имеет адрес 10.0.0.10, а провайдером выдан реальный IP 172.122.34.89, то в маршрутизаторе необходимо выполнить проброс портов (Port Forwarding) 21 и 22 из вне (172.122.34.89) на сервер (10.0.0.10). Просто настраивается пара строчек в админке маршрутизатора или правится таблица маршуртизации промежуточного линукса-коммутатора. Допустим это тоже все сделали.
В таком случае для досутпа по SSH через putty необходимо просто будет указать реальный IP-адрес, порт 22 (см. выше, где описана небольшая настройка клиента putty). Осуществляем вход и получаем доступ к консоли сервера.
А файловый доступ? Тут чуть сложнее. Можно использовать WinSCP, но как уже упоминалось, это не наш метод. Samba работает только в локалке. Придется настроить FTP доступ…
Для FTP используем сервис proftpd. Ставим пакет:
# sudo apt-get install proftpd
Файл конфигурации находится здесь: /etc/proftpd/proftpd.conf. Вот пример рабочего файла:
Это дело вставляется в proftpd.conf и доступ осуществляется через порт 2220. Но при этом mod_sftp должен быть установлен вместе с proftpd. В штатном репозитории proftpd собран без mod_sftp. Его придется «дособирать» самостоятельно. «Впатчивал» я по какой-то английской инструкции — уже не помню. Процесс это не менее творческий, чем сборка своего репозитория, а результат все равно не порадовал, поэтому это все описывать не буду.
Итак, мы настроили FTP. Теперь хотелось бы уметь включать сервер когда надо. Например, нужно что-то взять из сетевой папки.
Тут есть одна тонкость. К нашему серверу подключено только электропитание и сеть. Но сетевые карты давно научились «будить» компьютер: достаточно только включить такую поддержку в BIOS компьютера и послать не него «магический» пакет (Magic packet). Читаем в wikipedia:
Magic packet — это специальная последовательность байтов, которую для нормального прохождения по локальным сетям можно вставить в пакеты UDP или IPX. Обычно для WOL пакеты протоколов верхнего уровня рассылают широковещательно, так как в случае динамического присвоения адресов неизвестно, какой, скажем, IP-адрес соответствует какому MAC-адресу. Однако, для корректного прохождения через маршрутизатор, запрещающий широковещательные пакеты, можно послать пакет по какому-то определённому адресу.
Состав magic packet
Вначале идет так называемая «цепочка синхронизации»: 6 байт, равных 0xFF. Затем — MAC-адрес сетевой платы, повторённый 16 раз. То есть, если бы адрес платы выглядел как 01:02:03:04:05:06, то магический пакет оказался бы таким:
Есть куча программ, половина из которых работает, а другая нет, которые формируют и отсылают такие пакеты по указанному IP. Но это справедливо только в локальной сети. Но ведь у нас реальный IP — значит можно попробовать просто отослать пакет на него, а маршрутизатор настроить на ретрансляцию этого пакета серверу. Пакеты на «побудку» рассылаются обычно по портам 7 или 9. Прокидываем их через маршрутизатор на IP сервера. Далее проще всего воспользоваться сетевым ресурсом wakeonlan.ru: забиваем свой реальный адрес IP и MAC адрес сетевой платы сервера. Жмем кнопочку «Включить компьютер!». После пары отправок система вполне может и написать о неудаче включения — сервер-то все же за NAT’ом, а отклик на пингование маршрутизатора разумнее выключить в настройках маршрутизатора. Такой способ включения удобен, правда придется выучить наизусть IP и MAC. Но у нас же память хорошая — мы же задаем и помним правильные пароли составом не менее 32 символов?) Зато теперь сервер можно включить с сотового телефона (при наличии в нем браузера и GPRS доступа).
Интересная так же штука вышла с маршрутизатором. Дело в том, что, пока сервер включен, маршрутизатор точно знает к какому порту этот сервер подключен. Но как только сервер выключается, маршрутизатор, через некоторое время, начисто забывает этот факт. У меня не получилось заставить маршрутизатор делать широковещательную рассылку «магического» пакета по всем портам. Пришлось на разбирательство потратить приличное время. В результате на маршрутизатор установил прошивку DD-WRT. Прошивка по сравнению с штатными просто блещет функционалом. Он явно избыточен) Однако и она забывала порт, хотя широковещательно пакеты рассылать уже могла (только комп почему-то не включался). Если был бы вместо маршрутизатора коммутатор-комп на линукс, то можно было бы просто подредактировать таблицу маршрутизации и делов-то… Аналогично и тут — нужно внести изменения в таблицу ARP маршрутизатора. В данной прошивке есть некая консоль и можно при загрузке маршрутизатора добавить скрипт запуска. Что и делаем, скрип таков:
ip neigh change 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0
ip neigh add 10.0.0.10 lladdr 00:10:20:1F:C4:57 nud permanent dev br0
Подразумевается, что на физическом аппаратном уровне порты маршрутизатора и платы друг друга «узнают» по своим MAC-адресам (они же с собой постоянно общаются при наличии питания) и маршрутизатор «догадается» что вышеуказанный IPшник будет принадлежать именно этому адресату (пока комп не включен это знание маршрутизатору недосутпно ибо еще нет никакого интерфейса сетевого уровня — однако эта знание мы и заложили при загрузке в ARP) после включения.
Ну вот — на этом и закончивается мое первое знакомство с линуксом. Если кому-то это помогло — всегда пожалуйста.