Category Archives: Cтатьи

Написанное под волной отчаяния.

PXE Boot на Juniper SRX

Технология PXE boot используется для загрузки по сети установочного образа операционной системы с последующей его установкой. Она является альтернативой использованию установочного диска.

Для работы PXE используются такие протоколы как DHCP и TFTP.

Протокол DHCP предназначен для автоматического присвоения IP адресов клиентам в сети, а также дополнительных сетевых параметров (опций): адреса роутера, адреса DNS серверов и т.д.

Технология PXE использует в своей работе специальные DHCP опции, которые позволяют сетевым клиентам найти загрузочный сервер в сети и загрузить с него загрузочный файл.

Работа DHCP протокола состоит из обмена сообщениями между клиентом и сервером, по завершении которого, клиент присваивает себе определенный IP-адрес, выданный сервером. Эти сообщения: DHCP Discover, DHCP Offer, DHCP Request, DHCP Response.

Поскольку клиент на начальном этапе не имеет своего IP-адреса все сообщения передаются через широковещательную рассылку на адрес 255.255.255.255. Поскольку широковещательные пакеты не передается за пределы подсети, это означает, что DHCP сервер должен быть либо в одной подсети с клиентом, либо должна быть задействована технология Relay Agent, позволяющая передавать DHCP запросы за пределы подсети.

Читать далее

Почему Япония такая… другая?

Краткая история отделения от Китая, становления иной и превращения в современную Японию.

В марте 1885 года в японской газете Джиджи Шимпо вышла статья с заголовком «Покидая Азию». Автором статьи считается Юкичи Фукузава, гений 19-го века, стоявший за движением по модернизации страны, достигнувшим апогея в Реставрации Мэйдзи. В ней высказывалась мысль о том, что Японии больше нельзя ограничиваться «феодальными» Китаем и Кореей и необходимо «покинуть ряды азиатских народов и начать сближение с цивилизационными странами запада».

История разрыва отношений с Китаем, страной впоследствии оккупированной и униженной, остается актуальной до сих пор. Отношения между двумя странами остаются натянутыми и по сей день. Военные корабли и самолеты обеих государств постоянно маневрируют вокруг спорных островов в Восточно-Китайском море, эскалируя обстановку. Лидеры стран сравнивают текущее положение с 1914 или 1939 годами, когда мир стоял на грани войны.

Причиной вражды является вторжение Японии на территорию Китая в 1930-х и 1940-х годах, в результате данной неудачной попытки колонизировать Китай погибли миллионы. Корни вражды могут также крыться и в 1895 году, когда Япония, в результате войны с Китаем, присоединила к себе китайские территории, включая Тайвань и острова Сенкаку (которые на территории Китая называют Дяоюйдао), те самые, которые сегодня вызывают территориальные споры. На более бытовом уровне чувство обиды между двумя народами возникло с момента разрыва культурного обмена между Японией и Китаем, когда Япония приложила колоссальные усилия к модернизации и европеизации.

Китай когда-то считался вершиной мысли и прогресса для Японии, изолированной на архипелаге к востоку от Евразийского материка. Основанный в 8-ом веке Киото, являвшийся столицей Японии на протяжении тысячи лет, был создан по образу столицы Китая времен правления династии Тан — Сиань. Самые значимые японских поэты того времени писали на китайском. Только женщины использовали японскую слоговую азбуку кана, на которой в 11 веке была написана «Повесть о Гэндзи», считающаяся первым романом в мире. Для образования мужчин в Японии использовался исключительно китайский язык.

Читать далее

Установка 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 — система управления проектами

Читать далее

Понятия IP фрагментация, MTU, MSS, PMTUD и их связь

Данный пост написан по мотивам статьи «Resolve IP Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPSEC» c сайта Cisco, рассказывающей про работу механизма Path Maximum Unit Discovery (PMTUD) в связке с разными механизмами туннелирования IP.

IP фрагментация и обратная сборка

Длина IP пакета может достигать 64 Кбайтов, что может превышать размер фрейма (MTU) протокола нижнего уровня, в который инкапсулируется IP. Поскольку IP может передаваться по средам с разными значениями MTU, в него был встроен механизм фрагментации. Задача принимающей стороны обратно собрать фрагменты в оригинальный IP пакет.
При IP фрагментации IP пакет делится на несколько кусочков (фрагментов), оформленных таким образом, чтобы у принимающей машины была возможность их собрать в оригинальный IP пакет. Для ее работы в заголовке IP пакета используются сл. поля: адрес источника и получателя, идентификационный номер, размер пакета, смещение фрагмента и флаги: «не фрагментировать» (DF) и «у пакета еще есть фрагменты»(MF).

Проблемы с IP фрагментацией

При работе с IP фрагментацией следует помнить о нескольких особенностях.

  • Обратная сборка на маршрутизаторе — очень затратная задача. Задача маршрутизатора — передавать пакеты с максимальной скоростью в нужном направлении. В то время как обратная сборка подразумевает, что устройству необходимо выделить некий буфер, в который будут складываться фрагменты IP пакета, для того чтобы IP пакет собрать и передать дальше.
  • Другая особенность возникает из-за ненадежности сети передачи данных. Если один из фрагментов IP пакета потеряется, то тогда весь IP пакет должен быть отправлен заново; это означает еще один полный цикл фрагментации — сборки. Для примера возьмем протокол NFS. NFS по умолчанию работает с блоками размером 8192 байта, что вместе со всеми заголовками увеличивается до примерно 8500 байтов. Для передачи такого пакета по сети Ethernet, у которой размер MTU равен 1500 байтам, потребуется фрагментация пакета на шесть частей: пять по 1500 байт и один на 1100 байт. Если хотя бы один из этих фрагментов потеряется, потребуется повторная передача всего пакета, что в свою очередь означает запуск повторной фрагментации.

Обход IP фрагментации путем использования TCP MSS.

TCP Maximum Segment Size (MSS) определяет максимальный размер данных, который машина готова получить через один TCP сегмент. Сам TCP сегмент инкапсулируется в IP пакет. Значение MSS передается в заголовке TCP SYN при установлении соединения между двумя узлами (через механизм трехэтапного установления соединения). Обе стороны соединения передают значение своего MSS. В отличие от популярного заблуждения, принимаемое значение MSS не несет характер переговоров. Отправляющий хост обязан ограничить размер своих исходящих TCP сегментов значением равным или меньшим значению, сообщенному ему принимающим хостом.
Значение MSS выбирается таким образом, чтобы предотвратить IP фрагментацию. Механизм работы MSS следующий: при создании TCP соединения, машина определяет размер буфера исходящего интерфейса и MTU этого интерфейса. Дальше эти два числа сравниваются и выбирается наименьшее. Тут следует оговориться, что за MTU выбирается число по формуле MTU минус 40 байт, для учета TCP и IP заголовков. Затем выбранное число сравнивается с размером MSS, переданным принимающей стороной, и снова выберется наименьшее значение.
Пример работы MSS:

  1. Машина А сравнивает размер своего буфера интерфейса (16 Кбайт) со значение MTU этого интерфейса (1500-40 = 1460 байт) и использует наименьшее число как MSS при отправке к машине B.
  2. Машина B принимает значение MSS машины A (1460) и сравнивает его со значением MTU своего исходящего интерфейса (4462 — 40 = 4422 байт).
  3. Машина B выбирает наименьшее из получившихся значений (1460) как значение MSS при отправке TCP сегментов к машине A.
  4. Машина B сравнивает размер своего буфера интерфейса (8 Кбайт) со значение MTU этого интерфейса (4462-40 = 4422 байт) и использует наименьшее число как MSS при отправке к машине A.
  5. Машина A принимает значение MSS машины B (4422) и сравнивает его со значение MTU своего исходящего интерфейса (1500 — 40 = 1460 байт).
  6. Машина A выбирает наименьшее из получившихся значений (1460) как значение MSS при отправке TCP сегментов к машине B.

Таким образом MSS на обеих сторонах установлено равным 1460 байтам, это наиболее частая ситуация.
В данном примере IP фрагментация не будет происходить, поскольку в процессе установления TCP соединения, размер TCP сегментов был взят с расчетом на вмещение в MTU низлежащей сети. Однако, если IP пакет пойдет через сети с меньшим MTU, то может потребоваться фрагментация.
Читать далее

Active Directory Constrained Delegation и SPN

Протоколом аутентификации в среде Active Directory является Kerberos. Помимо стандартных операций создания учетных записей, под которыми пользователи заходят на свои компьютеры в домене AD, для улучшения защиты рекомендуется для запуска сервисов создавать специальные учетные записи, иногда называемые сервисными учетными записями.
Однако для нормального функционирования некоторых приложений в среде Kerberos, чьи сервисы запускаются под доменной учетной записью, требуется произвести некоторые дополнительные действия. О том, что такое Constrained Delegation и связанное с ним понятие SPN, а также пример их использования, и будет рассказано в данном посте.

Service Principal Names (SPN) — это идентификатор сервиса, запущенного на доменной машине. Например, для учетной записи из-под которой запущен сервис SQL Server, должен быть указан свой SPN.
SPN должен быть уникальным в пределах леса.
У двух типов доменных учетных записей: пользователя и компьютера, только у компьютера существуют автоматически указанные SPN. При вводе комьютера в домен, у его учетной записи автоматически указывается host SPN, которое позволяет сервисам на этой машине запускаться из-под локальных учетных записей Local System и Network Service. Таким образом если для запуска сервисов на машине используется доменная пользовательская учетная запись, для нее необходимо указать SPN.
Примеры SPN для пользовательских учетных записей:

  • MSSQLSvc/sqlsrvr.contoso.com:1433 — данный SPN указывает, что под этой учетной записью может быть запущен сервис SQL Server на машине с FQDN sqlsrvr.contoso.com, дополнительно также указан порт (1433) этого сервиса.
  • HTTP/websrvr.contoso.com — данный SPN указывает, что под этой учетной записью может быть запущен HTTP Server сервис на машине с FQDN websrvr.contoso.com. Стоит отметить, что FQDN в данной случае, это не Host header. Также данный SPN не воспринимает указание порта, таким образом, если на машине запущены несколько HTTP Server сервиса на разных портах, то нужно вместо FQDN машины указывать для SPN Host header конкретного IIS Web Application Pool.

Делегация Kerberos определяет способность одной учетной записи (сервиса) обращаться к другой учетной записи (сервису) используя данные третьей учетной записи (механизм, названный имперсонализацией). Пример, пользователь подключается к IIS серверу, который запрашивает от имени пользователя данные у SQL сервера.
Делегация может быть: неограниченная и ограниченная (constrained).
Ограниченная делегация используется только в пределах одного домена. Однако начиная с Windows Server 2012 это ограничение отменили.
Ограниченная делегация позволяет указать к каким сервисам и на каких машинах дозволено данной учетной записи (сервису) имперсонализировать пользователя.
Для того, чтобы появилась возможность использовать делегацию, у учетной записи должен быть указан хотя бы один SPN.
Пример ограниченной делегации Kerberos:

  • На доменной машине websrvr.contoso.com запущен веб сервер IIS под аккаунтом contoso\service_iis. У аккаунта contoso\service_iis указаны SPN: HTTP/websrvr.contoso.com и HTTP/websrvr. Также у этого аккаунта включена ограниченная делегация для MSSQLSvc/sqlsrvr.contoso.com.
    На доменной машине sqlsrvr.contoso.com запущен SQL сервер под аккаунтом contoso\service_sql. У аккаунта contoso\service_sql указаны SPN: MSSQLSvc/sqlsrvr.contoso.com и MSSQLSvc/sqlsrvr.
    В этом примере, клиент подключается к веб-серверу websrvr.contoso.com с целью получить данные, хранящиеся на SQL сервере sqlsrvr.contoso.com. На веб-странице используется код, обращающийся к SQL серверу за этими данными. Пользователь аутентифицируется на веб-сервере. Веб-сервер, используя ограниченную делегацию, использует имперсонализацию при обращении к SQL серверу.

Итог — список шагов для включения ограниченной делегации Kerberos:

  1. Убедится, что домен уровня 2003 и выше. Можно использовать оснастку Active Directory Domains and Trust.
  2. Настроить SPN для всех участвующих учетных записей сервисов. Можно использовать утилиту ADSI Edit и указать у выбранной учетной записи на вкладке Properties атрибут servicePrincipalName.
  3. Настроить ограниченную делегацию для всех учетных записей сервисов, которые будут обращаться от имени пользователя к другим сервисам. Можно использовать оснастку Active Directory Users and Computers и указать у выбранной учетной записи на вкладке Delegation пункт «Trust this computer for delegation to specified services only».
  4. Убедиться, что выбранные учетные записи не ограничены в делегации. Можно использовать оснастку Active Directory Users and Computers и у выбранной учетной записи на вкладке Account убедиться, что не выбран «Account is sensitive and cannot be delegated».
  5. Настроить локальную политику безопасности. Можно использовать оснастку Local Security Policy на машине с работающим сервисом и в разделе Local Policies, User Rights Assignment указать учетную запись сервиса в политиках «Log on as a service» и «Impersonate a client after authentication».

Источник 1
Источник 2
Источник 3

IPsec VPN. Основы.

IPsec представляет из себя не один протокол, а систему протоколов предназначенную для защиты данных на сетевом уровне IP-сетей. В данной статье будет описан теория применения IPsec для создания VPN туннеля.

Введение

VPN основанный на технологии IPsec можно разделить на две части:

  • Протокол Internet Key Exchange (IKE)
  • Протоколы IPsec (AH/ESP/both)

Первая часть (IKE) является фазой согласования, во время которой две VPN-точки выбирают какие методы будут использоваться для защиты IP трафика посылаемого между ними. Помимо этого IKE также используется для управления соединениями, для этого вводится понятие Security Associations (SA) для каждого соединения. SA направлены только в одну сторону, поэтому типичное IPsec соединение использует два SA.

Вторая часть – это те IP данные, которые необходимо зашифровать и аутентифицировать перед передачей методами, согласованными в первой части (IKE). Существуют разные протоколы IPsec, которые могут быть использованы: AH, ESP или оба.

Последовательность установления VPN через IPsec можно кратко описать как:

  • IKE согласовывает защиту уровня IKE
  • IKE согласовывает защиту уровня IPsec
  • защищаемые данные передаются через VPN IPsec

Читать далее

VoIP кратко

VoIP представляет из себя не один протокол, а систему протоколов предназначенную для аудио-визуальной коммуникации через сети IP. Данная статья будет краткой заметкой о наиболее популярных протоколах, используемых в рамках данной модели.

Используемые в VoIP протоколы и их задачи:

  • SIP – установление и разрыв соединения;
  • SDP – переговоры о параметрах мультимедиа;
  • RTP – передача мультимедийного потока;
  • RTCP – контроль передачи мультимедийного потока;
  • G.711 – кодирование аудио аналогового потока;
  • H.264 – кодирование видео потока.

Также для работы VoIP решений используются следующие сервисы:

  • DHCP-сервер – для назначения IP адресов, TFTP и NTP серверов IP-телефонам;
  • TFTP-сервер – для предоставления IP-телефонами конфигурации;
  • NTP-сервер — точного времени.

Общий процесс работы VoIP:

  • IP-телефон подключается в сеть с DHCP сервером;
  • От DHCP-сервера телефон узнает свой IP-адрес, адрес TFTP-сервера и, опционально, прочие VoIP настройки;
  • Получив IP-адрес и настройки с IP-адресом Call Server, IP-телефон осуществляет регистрацию на Call Server, используя SIP-протокол;
  • Во время исходящего звонка IP-телефон посылает SIP-запрос на установление соединения на Call Server;
  • Установив соединение с другим IP телефоном (используя SIP) и обговорив параметры медиа потока (используя SDP) IP-телефон конвертирует аналоговый звук голоса (используя кодек G.711) и начинает передавать медиа поток (используя RTP) самому Call Server или напрямую другому IP-телефону, периодически посылая сообщения о контроле медиа потока (используя RTCP).

Прочие заметки:
Формат SIP-адреса: sip:user@domain:port или sip:phone@domain:port.
Виды SIP-сообщений: request и response (status).
Частота выходного потока у кодека G.711 равна 64 Кбит/сек и получается путем дискретизации аналогового аудио потока с параметрами 8 бит на сэмпл * 8000 сэмплов в секунду.
В задача Call Server может входить как в регистрация и авторизация IP-телефонов с организацией соединений (SIP), так и в пропускании через себя самого медиа потока (RTP).

OSPF неоконченное

OSPF – протокол динамической внутридоменной маршрутизации типа отслеживания состояния канала. Т.е. его задача, среди прочих, автоматизировать заполнения таблицы маршрутизации на маршрутизирующих сетевых устройствах (маршрутизаторах, свитчей третьего уровня) в противовес одному маршруту по умолчанию (default gateway route) или нескольких вручную заданных статичным маршрутам.

Как было сказано выше, OSPF относиться к протоколам маршрутизации с отслеживанием состояния канала (link-state). При работе такого протокола каждое маршрутизирующее устройство рассчитывает карту сети в виде графа, на основе этой карты рассчитывается лучший путь до каждого устройства в сети, который и вносится в таблицу маршрутизации.

Как было сказано выше, OSPF, относиться к протоколам внутридоменной маршрутизации (interior gateway protocol). При работе такого протокола маршрутизирующие устройства обмениваются информацией внутри автономной системы (домена) (Autonomous System). Автономная система это набор сетей публичных IP-адресов, зарегистрированных, как правило, на одного владельца, т.е. имеющих номер автономной системы (Autonomous System Number).

OSPF оперирует понятием зоны (area). Как было сказано выше, каждый маршрутизатор в сети рассчитывает наилучший путь до каждого узла в сети внутри автономной системы. Поэтому, когда кол-во узлов и маршрутизаторов и узлов возрастает и пересекает некоторое кол-во, данные расчеты начинают замедлять работу устройств. Для устранения данного негативного эффекта было введено понятие зоны – логического разграничения масштаба работы протокола. Таким образом, для каждой зоны создается свой рабочий процесс протокола для расчета лучших путей до устройств внутри одной зоны. Зоны обозначаются 32-битными номерами и по написанию напоминают IPv4 адреса. Номер зоны выбирается по желанию за исключением одной – основной (backbone zone), ее номер всегда 0.0.0.0.
Отношения между зонами – иерархическое, где к основной зоне должны быть подключены все остальные зоны. Подключение между зонами выполняет роутер с ролью пограничного (area border router (ABR)). Задача ABR состоит в суммаризации маршрутов одной зоны по отношению к другой, это приводит к уменьшению сетевого трафика.

Для совместной работы в одной зоне, маршрутизаторы должны обладать одной версией БД о состоянии сети. Достигается это путем установления соседства (adjacency) посредством отправки специальных HELLO-сообщений. Общаются OSPF роутеры, используя IP протокол и зарезервированные мультикастовые адреса: 224.0.0.5 (AllSPFRouters) и 224.0.0.6 (AllDRouters). В данных HELLO-сообщениях существуют несколько полей, которые должны быть одинаковыми для обоих роутеров, чтобы сформировать соседство: hello interval, dead interval, area ID, area.

Для уменьшения сетевого траффика в каждой зоне выбираются выделенный (designated router (DR)) и резервный (backup designated router (BDR)) роутеры, с которыми и общаются все остальные роутеры зоны.

Как описано выше, существуют несколько типов общих (не проприетарных) OSPF зон:

  • Backbone area – идентификатор 0.0.0.0 – главная зона, через которую подключаются все остальные зоны.
  • Stub area – зона в которой внешние маршруты (за пределами автономной сети) удаляются и заменяются на маршрут по умолчанию.

Для выбора наилучшего пути используется понятие метрики. По умолчанию метрика OSPF равна 10^8/bandwidth, т.е. для 10 Мбит/с интерфейса метрика будет равна 10. Отсюда возникает необходимости изменять числитель в расчете метрики, если в сети используются линки 100 Мбит/с и выше. В противном случае метрики для 100 Мбит/c и для 1000 Мбит/c
будут одинаковы и равны 1. Также следует знать, что метрики сравниваются только для одного типа. Между разными типами метрик идет предпочтение по сл. списку:

  1. Intra-area
  2. Inter-area
  3. External Type 1
  4. External Type 2

Таким образом какой был не была метрика для Inter-area при наличии Intra-area пути он будет всегда выбран.

Evangelion: 3.33 You Can [Not] Redo. Мнение.

Впечатления о третьей части Rebuild of Evangelion

или продолжение, которого не ожидали.

ОСТОРОЖНО СПОЙЛЕРЫ.

Фильм отгремел, пошли финальные титры, а в голове крутится только: «Зачем они это сделали?». Если кратко – то ни один кадр из превью в конце второй части не попал в третью. Дальше автор постарается кратко объяснить, почему Rebuild of Evangelion: You can [not] redo может оказаться не совсем тем продолжением, которое ожидали.

Читать далее

Художественная литература на христианскую тему

В отличие от фильмов и игр книги не являются столь популярной темой для обзоров. Еще меньше освещают классическую литературу, что несколько удручает, т.к. что-что, а классика охватывает поистине широкий спектр жанров на любой вкус. С одной стороны дефицит обзоров классики можно объяснить тем, что «ну это же классика», кто же ее не читал, и отчасти с этим можно согласиться. Но только отчасти. Поскольку, во-первых люди меняются, и каждое новое поколение может взглянуть по-своему на вопросы, поднимаемые в произведениях, а во-вторых «ну это же классика».
Переходя ближе к теме этого поста, раскрою заголовок. В этом посте я не стану призывать поверить в трех слонов и черепаху, поэтому лучше кратко объясню, почему в заголовке не название конкретного произведения, а пространное «литература о вере». Дело в том, что, как правило, к выбору литературы для прочтения я подхожу целенаправленно, т.е. есть некая «тема» (идея), которая меня заинтересовала и, исходя из этой идеи, я выбираю пару понравившихся произведений, где она рассмотрена. В этом посте речь пойдет, главным образом, про два произведения: «Божественная комедия» Данте и «Потерянный рай» Мильтона, а также вскользь затронуто еще одно. Разговор о том, каким местом здесь пришелся «Эпос о Гильгамеше» лучше оставить на следующий раз.
Итак, перед тем как изложить свое впечатление (мнение) о данных произведениях, хочу сделать заметку, что ни в коем случае не хочу задеть ничьих религиозных убеждений, если вы считаете данную тему сакральной и не подлежащей обсуждению, просьба прекратить читать на этом месте. Также в отзыве будут спойлеры. Для всех остальных прошу под кат.
Читать далее