воскресенье, 18 ноября 2018 г.

Остерегайтесь кокосов


Встречаются две приятельницы. Одна с сыном, у которого забинтовано лицо.
— Ой, Клава, а что это с твоим Васенькой?
— Да!.. Рот порвал!
— Да как же это — рот порвал?
— Да!.. Орех раскусывал и рот порвал!.. Вот тебе и "купи мама кокос"!

Рога поотшибаю, пасть порву, моргалы выколю! Всю жизнь работать на лекарства будешь! Сарделька, сосиска, редиска! Навохудоносор! Петух гамбургский!

воскресенье, 11 ноября 2018 г.

IPv6. Администрирование сетей. Учим черепашку танцевать


Начну рассказывать про эту книгу несколько издалека.

В августе я переехал на новый адрес и мне нужно было подключиться к интернету. На прошлом адресе я пользовался услугами сначала Уфанета, а потом - БашИнформСвязи. Уфанет - во всех отношениях более прогрессивный провайдер, но после 5 лет без проблем случилось несколько неприятных случаев: 1. без предупреждений повысился ежемесячный платёж по тарифу, что привело к отключению, т.к. заранее положенных на счёт денег на следующий месяц оказалось недостаточно, 2. так же без предупреждений были заблокированы входящие запросы на DNS-сервер, работающий на моём компьютере. Второй вопрос был решён перепиской с техподдержкой, но осадочек от этих случаев уже остался. Однажды совпало так, что я был в отпуске, мне позвонили из БашИнформСвязи и предложили переключиться к ним. В БИС практиковалась оплата за предыдущий месяц, поэтому проблем с отключением при своевременной оплате возникнуть не могло, даже несмотря на повышение тарифов. Никаких блокировок входящего трафика у БИС я не заметил, а техподдержка решала проблемы без пинг-понга. Так я и пользовался БИС'ом. На новом адресе решил снова попробовать Уфанет, но был разочарован, т.к. на этот раз проблему с блокировкой входящего трафика на DNS-сервер мне так и не решили даже через две недели после обращения. В итоге подключился к ЭР-Телекому и не пожалел.

Ну вот я и добрался до самой сути: у ЭР-Телекома (который работает под брендом Домру) в личном кабинете имелся переключатель для включения или отключения поддержки IPv6. Этот переключатель меня заинтересовал и я достал с полки книжку, о которой сейчас и пишу. Сначала я решил изучить теоретическую часть и стал читать книжку. Потом, когда прочитанное стало прояснять меньше, чем запутывать, я решил заняться практикой и настроил-таки на своём компьютере IPv6, творчески подрихтовав для себя инструкцию IPv6 от провайдера Дом.ru. Выражаясь фразой из подзаголовка книги, "черепашка начала танцевать".

Чтобы увидеть танцующую черепашку (на самом деле она скорее плывёт, чем танцует), нужно настроить IPv6 и зайти на страницу проекта KAME - www.kame.net. KAME - это японский проект по разработке стека IPv6 для систем BSD. Если зайти на эту страницу через сеть IPv6, то картинка с черепашкой будет анимированной (будет "танцевать"). При заходе через обычный интернет с IPv4 эта черепашка двигаться не будет.

Несмотря на небольшой объём книги, в ней рассмотрено довольно большое количество вопросов.

Первым делом были описаны проблемы с исчерпанием адресного пространства IPv4 и решения, предложенные в "недрах" IETF: бесклассовая маршрутизация, NAT и IPv6. Слово "недры" было взято в кавычки, потому у этой организации нет определённого здания, в котором работают сотрудники - это международная общественная организация без официального статуса. Бесклассовая маршрутизация и NAT были представлены как временное решение, которое даст время на подготовку к внедрению постоянного решения. Постоянным решением проблемы должен стать IPv6.

Далее в книге расписано устройство элементов протоколов IPv6 в сравнении с IPv4. Надо сказать, что IPv6 довольно сильно отличается от IPv4 и не стоит думать о нём как IPv4 с увеличенным полем адреса. Это не так. IPv6 не работает с протоколом ARP, основанном на широковещании. В протоколе IPv6 имеется свой вариант протокола ICMP, который называется ICMPv6. Этот протокол, по сравнению с ICMP, более структурирован и расширен новыми возможностями, которых не доставало в ICMP. Часть новых возможностей протокола ICMPv6 покрывают функции протоколов ARP и DHCP из IPv4. В IPv6 широко используются групповые рассылки. В том числе, групповые рассылки используются для обнаружения соседей - при поиске MAC-адреса соседа, в отличие от IPv4 и ARP, делается групповая рассылка на адрес, сконструированный из 3 октетов искомого адреса IPv6. Каждый узел, имеющий адреса IPv6, вступает в соответствующие группы, чтобы отвечать на запросы поиска соседей. Это позволяет создавать сети, содержащие значительно большее количество узлов, т.к. при переходе от широковещания к групповым рассылкам значительно снижается количество служебного трафика - весь такой трафик приобретает более направленный характер. В IPv6, а точнее - в ICMPv6, встроены возможности автонастройки адреса интерфейса и маршрутизатора по умолчанию. В более свежих версиях ICMPv6, которые ещё не существовали во время написания книги, появилась также возможность автоматически настраивать адреса DNS-серверов. Благодаря таким богатым возможностям ICMPv6, протокол DHCP в IPv6 стал избыточен, из-за чего была создана новая версия протокола - DHCPv6.

После этого в книге расписываются стратегии перехода на IPv6. Авторы считают наиболее правильной стратегией перехода использование двухстековой конфигурации, когда одновременно используются и IPv4 и IPv6. Такой подход позволит решать возникающие проблемы поэтапно, без необходимости выбирать или всё или ничего. На переходное время можно использовать множество различных сервисов, предоставляющих возможность туннелирования трафика IPv6 через сеть IPv4.

В книге приведены команды настройки сетевого оборудования, отличия в командах и способах конфигурирования различных Unix-систем. Расписаны необходимые изменения в конфигурации различных сервисов вроде электронной почты, веб-серверов, прокси-серверов. На момент написания книги прокси-сервер Squid ещё не поддерживал IPv6, но в книге приведены обходные схемы с привлечением веб-сервера Apache, которые позволяют использовать прокси-сервер Squid в окружении IPv6.

В конце книги имеется также глава, посвящённая переработке исходных текстов старых приложений, написанных на языке Си, для работы с IPv6. Дело в том, что системные вызовы Unix, предназначенные для работы с сетью, были переработаны так, чтобы поддерживать работу с двумя стеками одновременно. При этом старые системные вызовы по-прежнему доступны и могут использоваться программами, ещё не адаптированными к работе с новыми системными вызовами, но они смогут работать только со стеком IPv4. Такой подход в целом соответствует стратегии постепенного внедрения IPv6.

Что касается ЭР-Телекома, то хотя у него и имеется возможность уже сейчас использовать IPv6, но имеющихся возможностей ещё не достаточно для полноценной работы. Например, ЭР-Телеком делегирует абоненту только одну сеть /64, хотя мне хотелось бы получить не менее двух таких сетей: одну для проводной, а другую - для беспроводной домашней сети. Не вполне понятно, как можно делегировать абоненту обратную зону DNS. Для удобной работы с IPv6 очень полезно иметь работающий сервис DNS, но, например, при диагностике проблем с сетью IPv6 очень трудно считывать адреса IPv6 и сопоставлять их определённым сетевым узлам - адреса очень длинные, часть адреса зачастую генерируеся из MAC-адреса, записываются адреса шестнадцатеричными цифрами, что не способствует быстрому распознаванию адресов.

Если же кто-то задастся вопросом - зачем нужен IPv6, когда всё и так неплохо работает или надеется на то, что вместо слишком сложного IPv6 появится что-то попроще, то я его огорчу. Работает всё далеко не так хорошо. Нынешние решения вроде узлов NAT, осуществляющих трансляцию из IP-адресов локальных сетей в "белые" IP-адреса, вызывают проблемы, например, с трафиком VoIP. Подобные же проблемы возникают и с трафиком других пиринговых приложений, вроде торрента. Вместо IPv6 ничего нового и более простого не появится, т.к. IETF работал над проблемой исчерпания адресного пространства и над протоколом IPv6 в течение более чем десяти лет, и никаких других альтернатив IPv6, которые бы являлись окончательным, а не временным решением, не предоставил. В современном сетевом оборудовании не предусмотрена поддержка никаких других протоколов, кроме IPv4 и IPv6.