Tag Archives: linux

Коллектор sFlow на Logstash

В данном посте будет описана процедура установки коллектора sFlow на базе ELK на CentOS 7 для сбора трафика со свитча Juniper.

Компоненты:

  • Logstash — система принимающая данные, фильтрующая их и передающая их в Elasticsearch.
  • Elasticsearch — база данных, которая хранит информацию и осуществляет по ней поиск.
  • Kibana — служит для визуального представления данных, хранящихся в Elasticsearch.

Взаимодействие компонентов выглядит так:

10.10.10.10 — адрес сервера CentOS, где установлен ELK

Читать далее

Реклама

VPN сервер на основе StrongSwan на CentOS

В последних версиях мобильной и настольной ОС компании Apple появилась полноценная поддержка VPN подключений по IKEv2. В системах компании Microsoft она была реализована еще с Windows 7. Таким образом можно предположить, что IKEv2 станет мультиплатформенным стандартом для виртуальных сетей, заменив устаревший и небезопасный PPTP.

В данной статье будет описана настройка StrongSwan как сервера IKEv2 VPN, а также проверено подключение к нему с Windows и MacOS.

VPN сервер и клиенты IKEv2 могут аутентифицировать себя как по ключам, так и по сертификатам. Причем для каждой стороны можно задать свой выбор. Для уменьшения требований, предъявляемых к клиентам, было выбрано чтобы сервер StrongSwan аутентифицировал клиентов по логину и паролю, а VPN клиенты аутентифицировали сервер по сертификату, выданному доверенным центром сертификации.

Последовательность действий:

  1. Получение сертификата для сервера StrongSwan
  2. Установка и настройка сервера StrongSwan
  3. Проверка подключения к серверу с Windows и MacOS

Читать далее

Установка Redmine на CentOS 6.5 с PostgreSQL 9.3

В данном посте рассказывается как поставить систему управления проектами Redmine на CentOS с сохранением БД в PostgreSQL. В качестве фронденда будет использоваться nginx в связке с Phusion Passenger. Поскольку установка тестовая, все будет располагаться на одной машине. Версии ПО по возможности используются последние на момент написания, поэтому применяется сборка из исходных кодов.

Последовательность установки:

  1. Ruby — интерпретируемый язык
  2. Node.js — JavaScript сервер
  3. Ruby on Rails — веб-фрэймворк на базе Ruby
  4. ImageMagick — библиотека для экспорта диаграмм Ганта в PNG
  5. Phusion Passenger — сервер приложений для Ruby on Rails
  6. nginx — веб-сервер
  7. PostgreSQL — сервер баз данных
  8. Redmine — система управления проектами

Читать далее

Загрузка ОС / Booting OS

Первоначальная загрузка ОС происходит в сл. последовательности: POST->BIOS -> загрузчик(и)->загрузчик ОС–> ОС.

После нажатия кнопки питания запускается POST для первичной проверки устройств, затем загружается BIOS, которая последовательно проходит по списку загрузочных устройств в поисках первого загрузочного (у которого два последних байта первого сектора 0xAA55). Найдя загрузочное устройство, BIOS загружает загрузочный сектор в память (по адресу 0x7C00) и передает управление загрузочному коду, в случае, если устройство HDD, то этот код, вероятнее всего, Master Boot Record (MBR).

Ограничение на размер первоначального загрузчика не позволяют его сделать богатым по функционалу. Этот первоначальный раздел, называемый главной загрузочной записью (MBR), ограничен 512 байтами и находится в самом начале диска, а непосредственно сам загрузчик занимает 446 байт, т.к. помимо него в MBR также присутствует Partition table – таблица разделов (партиций) диска. MBR проверяет список разделов диска в поисках раздела, обозначенного как загрузочный, т.е. того, у которого установлен флаг «активный».

Особенности разметки диска в MBR: диск может иметь максимум 63 партиции из них только 4 могут быть primary (первичными). Только одну из primary можно разделить на logical партиции, т.е. сделать из нее extended партицию (таким образом, получится 3 primary патриции + возможность создать до 59 logical патриций внутри одной extended). Максимальный размер одного HDD около 2 Тб.

Восстановление MBR на Windows XP – fixmbr из Recovery Console, Windows Vista и 7 – bootrec/FixMbr из Recovery Eviroment.

На Linux – grub-install записывает GRUB в MBR.

Найдя загрузочный раздел, MBR загружает загрузочный сектор из него (chain loading). Этот загрузочный сектор содержит либо ОС-независимый загрузчик, либо загрузчик самой ОС, для которого главная задача – загрузить ядро ОС, которое уже продолжит загрузку самой ОС.

Загрузчик может быть как один, так и несколько, которые последовательно загружают один другого по цепочке (chain loading) полностью передавая управление новому. Применительно к загрузчику GRUB, необходимость загрузки по цепочке возникает для ОС, не поддерживающихся GRUB.

Загрузчики могут быть разными: GNU GRUB (Linux), BOOTMGR (Vista и новее), NTLDR (XP и ранее). В них присутствуют настройки, позволяющие загружать разные ОС, либо различные режимы одной ОС. Либо передавать цепочку управления загрузкой следующему загрузчику (GRUB -> BOOTMGR).

Читать далее

Device-mapper и DM-multipath

В статье про настройку iSCSI LUN на NetApp была затронута тема многоканальности (multipathing). Напомню, что это побочное явления использования нескольких физических каналов между целевым сетевым хранилищем данных (СХД) и сервером-инициатором, свойственное всем блочным протоколам. При наличии нескольких путей до инициатора, презентованный ему LUN (Logical Unit Number) будет виден столько раз, сколько существует путей. Поэтому прибегают к помощи вспомогательных средств для группирования всех этих «фантомных» LUN в единственный. В Windows это делается средствами MPIO, в Linux – демоном multipathd, который является компонентом device-mapper, именно о последних двух и пойдет речь в данной статье.

Device-Mapper

Device-mapper является частью ядра Linux, и основным его назначением является трансляция (mapping) одного блочного устройства в другое. На основе device-mapper строятся такие системы как LVM2, софтовый RAID и др. Device-mapper представляет некое «виртуальное» блочное устройство, и все данные, которые проходят через него, он посылает на другое, уже «реальное» блочное устройство.

Это виртуальное блочное устройство представляет собой таблицу, в которой описывается проброс каждого логического блока этого устройства на реальные физические блочные устройства.

При ссылке на «реальное» блочное устройство DM может использовать как его имя, отображаемое в файловой системе (/dev/sda), так и старший (major) и младший (minor) номера устройства в формате major:minor.

Читать далее

SFTP и SSHFS

Продолжаем тему FTP и рассмотрим протокол SFTP.

SFTP расшифровывается как SSH File Transfer Protocol — SSH-протокол для передачи файлов. Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Как правило, в качестве базового протокола, обеспечивающего соединение, и используется протокол SSH2, но это необязательно.

В сравнении с другим протоколом, тоже предназначенным для копирования файлов поверх SSH — протоколом SCP, который позволяет только копировать файлы, SFTP даёт возможность выполнять намного больше операций с ними: например, докачивать файл после разрыва соединения или удалять файл на сервере и многие другие операции.

Существует заблуждение, что SFTP это просто обычный FTP, работающий поверх SSH. В действительности SFTP — это новый протокол, разработанный с нуля. Ещё его иногда путают с Simple File Transfer Protocol. SFTP расшифровывается как SSH File Transfer Protocol и ничего общего с Simple File Transfer Protocol не имеет.

Сам по себе протокол SFTP не обеспечивает безопасность работы; это делает нижележащий протокол. Как правило, SFTP используется в сочетании с протоколом SSH2 (он даже был разработан той же рабочей группой). Можно использовать SFTP и с другими протоколами, например SSH1, но это сопряжено с дополнительными трудностями.

Сервер SFTP

SFTP-сервер встроен в OpenSSH. Он реализуется с помощью программы sftp-server. Для того чтобы включить sftp-server в sshd, необходимо указать его в конфигурационном файле sshd_config в качестве подсистемы:

Subsystem sftp /usr/lib/openssh/sftp-server

Как правило, эта строка уже указана в конфигурационном файле sshd по умолчанию, так что SFTP работает сразу и не требует никаких дополнительных действий для включения.

Клиент SFTP

SFTP-клиент sftp встроен в пакет OpenSSH. Пример команд использования клиента SFTP:

sftp user@host:файл1

sftp скачивает файл1 с сервера и записывает его в текущий каталог с под именем файл1

sftp user@host:dir

переводит sftp в интерактивный режим и работа на удалённом сервере начинается с определённого каталога.

В интерактивном режиме команды SFTP клиента похожи на команды FTP: get, cd, ls, mkdir, put, pwd, rm и пр.

Программа sftp использует в качестве транспорта ssh, и аутентификация на удалённом сервере выполняется средствами ssh.

В качестве SFTP-клиента для Windows может использоваться WinSCP, PSFTP из пакета PuTTY или кроссплатформенный ftp-клиент Filezilla.

Клиент SSHFS

Использование SFTP можно не только родным клиентом, но и SSHFS, дающим возможность монтировать файловую систему удаленной машины, на которой включен SFTP.

Пример команды монтирования через SSHFS:

sshfs user@host:dir local_mount_point ssh_options

Пример демонтирования:

fusermount -u local_mount_point

Также если вы часто монтируете одну и ту же директорию по SSHFS, ее можно внести в fstab для автоматического монтирования при включении машины, внеся следующую строку в /etc/fstab:

user@host:dir local_mount_point fuse.sshfs  defaults  0  0

Однако придется каждый раз при попытке монтирования вводить логин и пароль, и чтобы избежать этого, можно настроить авторизацию SSH на основе ключей, которая была описана ранее.

Стоит понимать, что в отличие от NFS/SMB в SSHFS не предустановлено никаких механизмов для контроля доступа к одному файлу нескольких пользователей.

Источник 1
Источник 2
Источник 3
Источник 4
Источник 5
Источник 6

Базовая настройка сетевых интерфейсов в RedHat и Ubuntu

Базовая настройка сетевых интерфейсов в RedHat и Ubuntu.

В семье операционных систем Linux существует несколько подходов к настройке сетевых интерфейсов. Здесь будет рассмотрен способ ручной правки конфигурационных файлов в двух популярных дистрибутивах Red Hat/CentOS и Debian/Ubuntu.

В рассматриваемых системах файлы ответственные за сетевую конфигурацию располагаются в разных местах и имеют разный синтаксис.

В Red Hat/CentOS

Файл Назначение
/etc/sysconfig/network-scripts/ifcfg-<интерфейс> IP-адрес, тип, маска
/etc/sysconfig/network Имя машины, домен, шлюз

В Debian/Ubuntu

Файл Назначение
/etc/network/interfaces Интерфейс, IP-адрес, тип, маска, шлюз
/etc/hostname Имя машины

Настройка DNS-клиента у рассматриваемых систем одинакова

Файл Назначение
/etc/resolv.conf Домен и DNS-суффикс

Пример сетевой конфигурации Red Hat/CentOS
Файл /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
HWADDR=00:30:48:56:A6:2E
IPADDR=10.10.29.66
NETMASK=255.255.255.192
ONBOOT=yes

Файл /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=fileserver
DOMAINNAME=domain.com
GATEWAY=10.10.29.65

Пример сетевой конфигурации для Debian/Ubuntu
Файл /etc/network/interfaces

iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254

Файл /etc/hostname содержит одну строку с именем машины

Примет DNS-конфигурации — файл /etc/resolv.conf

search domain.com
nameserver 10.0.80.11
nameserver 10.0.80.12
nameserver 202.67.222.222

Опция search указывает домен, используемый для разрешения неполных имен, т.е. вместо fileserver будет вестись поиск fileserver.domain.com.

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

Команда Операция
ifconfig Информация об интерфейсах
route –n Информация о маршрутах
netstat –tulpan Информация об открытых портах и соединениях
ethtool <имя_интерфейса> Информация о физических параметрах интерфейса

Примеры команд по управлению сетевыми настройками. Данные настройки сбрасываются при перезагрузке

  • Для интерфейсов
    Назначение ip-адреса интерфейсу

    ifconfig <eth*> <ip_адрес> netmask <маска_подсети> up

    Например, ifconfig eth0 192.168.99.14 netmask 255.255.255.0 up

  • Для маршрутов
    Назначение маршрута(шлюза) по-умолчанию

    route add default gw <ip_адрес_шлюза>

    Например, route add default gw 192.168.99.254

    Добавление маршрута

    route add [-net|-host] <IP/Net> netmask <маска_подсети> gw <ip_адрес_шлюза> dev <eth*>