Опубликовано

Новинка: “Сети Linux. Модели и приложения”

Сети Linux. Модели и приложения

Последовательно разобраны различные стороны сетевой инфраструктуры в Linux: базовые понятия сетей и TCP/IP, программные инструменты управления сетевым трафиком, программирование пользовательских сетевых приложений и драйверов сетевых протоколов для ядра Linux. Также исследованы  сети TOR, Yggdrasil, I2P, адресация IPv6, службы DNS, DHCP, SSH, DNS-системы разрешения имён EmerDNS и Alfis, что позволяет оценить тенденции развития современного Интернета.

Для специалистов по безопасности, сетевых администраторов, программистов

Новейшие сетевые разработки.

Сегодня Linux де-факто является основной операционной системой для обслуживания и защиты компьютерных сетей. Данная книга призвана познакомить читателя с новейшими сетевыми разработками в контексте инструментария Linux.

В первой части книги подробно рассказано о протоколе IPv6, который в настоящее время постепенно приходит на смену протоколу IPv4, доминировавшему на протяжении последних 30 лет.

Следующая часть подробно иллюстрирует, как устанавливать, настраивать и использовать все основные протокольные механизмы и инструменты, обеспечивающие работу Интернета и локальных сетей: DNS, DHCP, SSH.

Последняя часть, самая свежая с хронологической точки зрения, содержит выборочный обзор альтернативных проектов «Интернет завтрашнего дня»: сети TOR, Yggdrasil, I2P, альтернативные DNS-системы разрешения имён EmerDNS и Alfis. Хотя рассмотренные технологии выбраны на вкус автора, но в целом дают весьма полное впечатление о том, как эволюционирует современный Интернет.

Автор этой книги на протяжении свыше 40 лет являлся непосредственным участником разработки проектов из области системотехники и программного обеспечения разного масштаба и разной целевой ориентации. При этом практически все из них в большей или меньшей мере были связаны с сетевыми обменами. Предлагаемый в этой книге материал является обобщением практического опыта автора.

Это книга о том как выживать в эпоху обрушения сети Интернет.
автор книги

Книгу “Сети Linux. Модели и приложения” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие………………………………………………………………………………………………………………………………… 6

Что есть и чего нет в книге?……………………………………………………………………………………………………………… 7

Соглашения и выделения, принятые в тексте…………………………………………………………………………………….. 8

Код примеров и замеченные опечатки……………………………………………………………………………………………….. 8

Источники использованной информации…………………………………………………………………………………………… 8

Об авторе………………………………………………………………………………………………………………………………………… 9

Часть I. Сетевой стек: архитектура………………………………………………………………………………………. 10

RFC……………………………………………………………………………………………………………………………………………….. 10

Принципы сетевого стека………………………………………………………………………………………………………………… 12

Инкапсуляция данных…………………………………………………………………………………………………………….. 13

Cетевой порядок байтов………………………………………………………………………………………………………….. 14

Адреса MAC………………………………………………………………………………………………………………………………….. 15

Разрешение аппаратных адресов………………………………………………………………………………………………. 18

Адреса IP……………………………………………………………………………………………………………………………………….. 19

IPv4……………………………………………………………………………………………………………………………………….. 20

Маски и подсети……………………………………………………………………………………………………………. 20

Широковещательный и групповой обмен……………………………………………………………………….. 22

Частные адреса………………………………………………………………………………………………………………. 23

Частные IPv4 и NAT……………………………………………………………………………………………………… 24

IPv6……………………………………………………………………………………………………………………………………….. 24

Префикс адреса……………………………………………………………………………………………………………… 25

Сокращения записи IPv6………………………………………………………………………………………………… 26

Локальные адреса………………………………………………………………………………………………………….. 28

Синтаксис записи IPv6…………………………………………………………………………………………………… 29

Прогноз………………………………………………………………………………………………………………………… 31

Адресные переменные в программном коде…………………………………………………………………………….. 32

Разрешение адресов и имен……………………………………………………………………………………………………… 34

Разрешение имен в программном коде…………………………………………………………………………… 35

Сетевые интерфейсы………………………………………………………………………………………………………………………. 37

Таблица маршрутизации………………………………………………………………………………………………………….. 44

Управление роутингом………………………………………………………………………………………………….. 46

Алиасные IP-адреса………………………………………………………………………………………………………………… 49

Петлевой интерфейс……………………………………………………………………………………………………………….. 53

Переименование сетевого интерфейса……………………………………………………………………………………… 54

Альтернативные имена………………………………………………………………………………………………….. 56

Порты транспортного уровня………………………………………………………………………………………………………….. 58

Источники использованной информации…………………………………………………………………………………………. 59

Часть II. Протоколы и инструменты прикладного уровня………………………………………………. 61

Инструменты диагностики………………………………………………………………………………………………………………. 61

Инструменты наблюдения………………………………………………………………………………………………………. 63

Инструменты тестирования…………………………………………………………………………………………………….. 67

Сервисы сети и systemd…………………………………………………………………………………………………………………… 69

Протокол SSH……………………………………………………………………………………………………………………………….. 70

Передача файлов по SSH………………………………………………………………………………………………………… 74

SSH и Midnight Commander…………………………………………………………………………………………………….. 75

Графическая сессия в SSH………………………………………………………………………………………………………. 79

SSH в скриптах………………………………………………………………………………………………………………………. 80

Протокол DHCP…………………………………………………………………………………………………………………………….. 81

Разрешение имен: служба DNS……………………………………………………………………………………………………….. 85

Локальный DNS-резолвер bind……………………………………………………………………………………………….. 86

Кеширующий DHCP/DNS-сервер Dnsmasq……………………………………………………………………………… 87

Кеширующий DNS-сервер средствами systemd………………………………………………………………………… 93

Оптимизация используемых серверов DNS…………………………………………………………………………….. 96

Защищенность сети: брандмауэр……………………………………………………………………………………………………. 100

Брандмауэр ufw…………………………………………………………………………………………………………………….. 102

Суперсервер inetd…………………………………………………………………………………………………………………………. 107

Сервер telnet…………………………………………………………………………………………………………………………. 109

Сокетная активация в systemd……………………………………………………………………………………………….. 112

Прокси-серверы……………………………………………………………………………………………………………………………. 118

Прокси сквозь SSH………………………………………………………………………………………………………………. 125

Клиенты прокси……………………………………………………………………………………………………………………. 125

Кто и как использует прокси?………………………………………………………………………………………………… 128

Источники использованной информации……………………………………………………………………………………….. 130

Часть III. Программирование сетевых приложений……………………………………………………….. 131

Общие принципы………………………………………………………………………………………………………………………….. 131

Клиент и сервер…………………………………………………………………………………………………………………….. 132

Сети датаграммные и потоковые……………………………………………………………………………………………. 132

Фазы соединения TCP………………………………………………………………………………………………….. 134

Адаптивные механизмы TCP……………………………………………………………………………………….. 135

Сообщения прикладного уровня в TCP………………………………………………………………………… 136

Присоединенный UDP…………………………………………………………………………………………………. 138

Сетевые сокеты и операции…………………………………………………………………………………………………………… 138

Обменные операции………………………………………………………………………………………………………………. 144

Параметры сокета…………………………………………………………………………………………………………………. 147

Использование сокетного API……………………………………………………………………………………………….. 149

UDP клиент-сервер……………………………………………………………………………………………………… 150

TCP клиент-сервер………………………………………………………………………………………………………. 152

Клиент-сервер в UNIX-домене…………………………………………………………………………………….. 157

Управляющие операции………………………………………………………………………………………………………………… 157

Классы обслуживания сервером……………………………………………………………………………………………………. 158

Последовательный сервер……………………………………………………………………………………………………… 162

Параллельный сервер……………………………………………………………………………………………………………. 162

Предварительное клонирование процесса………………………………………………………………………………. 163

Создание потока по запросу…………………………………………………………………………………………………… 164

Пул потоков…………………………………………………………………………………………………………………………. 165

Последовательный сервер с очередью обслуживания……………………………………………………………… 167

Суперсервер и сокетная активация…………………………………………………………………………………………. 168

Расширенные операции ввода/вывода……………………………………………………………………………………………. 175

Примеры реализации…………………………………………………………………………………………………………….. 176

Неблокируемый ввод/вывод…………………………………………………………………………………………………. 176

Замечания к примерам…………………………………………………………………………………………………. 177

Мультиплексирование ввода/вывода……………………………………………………………………………………… 179

Замечания к примерам…………………………………………………………………………………………………. 182

Ввод/вывод, управляемый сигналом……………………………………………………………………………………… 183

Асинхронный ввод/вывод……………………………………………………………………………………………………… 184

Символьный сокет……………………………………………………………………………………………………………………….. 185

Канальный уровень………………………………………………………………………………………………………………………. 186

Источники использованной информации……………………………………………………………………………………….. 187

Часть IV. Драйверы сетевых устройств в ядре Linux……………………………………………………….. 188

Введение в модули ядра……………………………………………………………………………………………………………….. 189

Сборка модуля……………………………………………………………………………………………………………………… 189

Точки входа и завершения…………………………………………………………………………………………………….. 190

Вывод диагностики модуля…………………………………………………………………………………………………… 191

Загрузка модулей………………………………………………………………………………………………………………….. 192

Параметры загрузки модуля………………………………………………………………………………………… 194

Подсчет ссылок использования……………………………………………………………………………………………… 198

Структуры данных сетевого стека…………………………………………………………………………………………………. 199

Путь пакета сквозь стек протоколов……………………………………………………………………………………………… 200

Прием: традиционный подход……………………………………………………………………………………………….. 200

Прием: высокоскоростной интерфейс…………………………………………………………………………………….. 201

Передача пакетов………………………………………………………………………………………………………………….. 204

Драйверы: сетевой интерфейс………………………………………………………………………………………………………… 205

Статистика интерфейса………………………………………………………………………………………………………….. 211

Виртуальный сетевой интерфейс……………………………………………………………………………………………. 213

Протокол сетевого уровня……………………………………………………………………………………………………………. 218

Еще раз о виртуальном интерфейсе……………………………………………………………………………………….. 224

Протокол транспортного уровня…………………………………………………………………………………………………… 230

Источники использованной информации……………………………………………………………………………………….. 233

Часть V. За границами традиций Интернета……………………………………………………………………. 234

Обсуждение………………………………………………………………………………………………………………………………….. 234

Стек Tor……………………………………………………………………………………………………………………………………….. 236

Tor как прокси для любых служб…………………………………………………………………………………………… 237

Ресурсы onion……………………………………………………………………………………………………………………….. 239

Mesh-сети…………………………………………………………………………………………………………………………………….. 242

Сеть Yggdrasil………………………………………………………………………………………………………………………. 243

Выбор пиров для хоста………………………………………………………………………………………………… 247

Майнинг IPv6-адресов…………………………………………………………………………………………………. 252

Yggdrasil в локальной сети…………………………………………………………………………………………… 259

Короткие адреса…………………………………………………………………………………………………………… 261

Работа в Yggdrasil без установки клиента……………………………………………………………………… 263

Скоростные показатели………………………………………………………………………………………………… 265

Еще одна сеть: I2P………………………………………………………………………………………………………………… 269

Запуск сети………………………………………………………………………………………………………………….. 270

Использование сети……………………………………………………………………………………………………… 272

Доступ к ресурсам извне………………………………………………………………………………………………. 274

Альтернативные DNS…………………………………………………………………………………………………………………… 277

Регистрация домена………………………………………………………………………………………………………………. 277

Блокчейн как регистратор домена………………………………………………………………………………………….. 278

EmerСoin………………………………………………………………………………………………………………………………. 279

OpenNIC……………………………………………………………………………………………………………………… 287

Alfis……………………………………………………………………………………………………………………………………… 289

Доступ к локальным хостам………………………………………………………………………………………………………….. 296

Источники использованной информации……………………………………………………………………………………….. 300

Некоторые краткие итоги…………………………………………………………………………………………………….. 302

Предметный указатель………………………………………………………………………………………………………….. 303

Цилюрик Олег Иванович

Цилюрик Олег Иванович — программист-разработчик с более чем 40-летним опытом, преподаватель, автор книг по Linux и Unix , в том числе «Расширения ядра Linux. Драйверы и модули» и «Linux и Go. Эффективное низкоуровневое программирование», высоко оцененных профессионалами и широкой читательской аудиторией.

Summary
Aggregate Rating
3 based on 1 votes
Добавить комментарий