Product SiteDocumentation Site

Глава 10. Сетевая инфраструктура

10.1. Шлюз
10.2. X.509 certificates
10.2.1. Creating gratis trusted certificates
10.2.2. Инфраструктура открытых ключей: easy-rsa
10.3. Виртуальная частная сеть
10.3.1. OpenVPN
10.3.2. Виртуальные Частные Сети с SSH
10.3.3. IPsec
10.3.4. PPTP
10.4. Качество обслуживания (регулирование скорости и других характеристик трафика для программ)
10.4.1. Принципы и механизм
10.4.2. Настройка и выполнение
10.5. Динамическая Маршрутизация
10.6. IPv6
10.6.1. Туннелирование
10.7. Система Доменных Имен Серверов (DNS)
10.7.1. DNS software
10.7.2. Configuring bind
10.8. DHCP
10.8.1. Настройка
10.8.2. DHCP и DNS
10.9. Инструменты Диагностики Сети
10.9.1. Диагностика локального узла: netstat
10.9.2. Удалённая диагностика: nmap
10.9.3. Снифферы (перехватчики пакетов и анализаторы кадров): tcpdump and wireshark
Linux щеголяет в полной мере унаследованными от Unix сетевыми возможностями, и Debian предоставляет полный набор инструментов создания и управления сетями. Данная глава посвящена обзору этих инструментов.

10.1. Шлюз

Шлюз — это система, связывающая несколько сетей. Этот термин часто употребляется для обозначения «точки выхода» из локальной сети на единственном пути ко всем внешним IP-адресам. Шлюз подключён к каждой из сетей, которые он соединяет, и функционирует как маршрутизатор, пересылая IP-пакеты между своими интерфейсами.
Когда локальная сеть использует частный диапазон IP-адресов (не видимый за её пределами), шлюз должен выполнить преобразование сетевых адресов, чтобы компьютеры могли взаимодействовать с внешним миром. Такая операция похожа на прокси-сервер, но на сетевом уровне: при исходящей передачи данных — адрес локальной машины заменяется на адрес шлюза (видимый за пределами сети), при ответе из внешнего мира — данные проходят через шлюз и далее направляются по локальному адресу машины. Для этого, шлюз использует диапазон определенных TCP портов, обычно с большими числами (больше 60000). Каждое соединение, идущее от локальной машины во внешний мир, идет через один из этих зарезервированных портов.
Шлюз также может выполнять два вида преобразования сетевых адресов (для краткости — NAT, от "Network Address Translation"). Первый — Destination NAT (DNAT), суть которого в изменении IP адреса назначения (и/или порта TCP или UDP) для (как правило) входящего соединения. Отслеживающий соединение механизм тоже изменяет следующие пакеты в том же соединении для гарантии целостности. Второй вид NAT — это Source NAT (SNAT), для которого преобразование является особенным случаем. SNAT изменяет IP адрес источника (и/или TCP или UDP порта) для (в основном) исходящего соединения. Также как и для DNAT, все пакеты в соединении соответствующим образом контролируются механизмом, отслеживающим соединения. Заметьте, что NAT подходит только для IPv4 и его ограниченного адресного пространства. В IPv6, с огромным количеством адресов, преимущества NAT снижаются, т. к. «внутренние» адреса маршрутизируемы в интернете (что не означает их доступность, т. к. межсетевой экран может фильтровать трафик).
Хватит теории, к практике! Для превращения Debian в шлюз достаточно изменить нужный параметр в ядре Linux через виртуальную файловую систему /proc/:
# echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
This option can also be automatically enabled on boot if /etc/sysctl.conf or a configuration file in /etc/sysctl.d/ sets the net.ipv4.conf.default.forwarding option to 1.

Пример 10.1. Файл /etc/sysctl.conf

net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.tcp_syncookies = 1
Тоже для IPv6: необходимо заменить ipv4 на ipv6 и соответственно использовать net.ipv6.conf.all.forwarding в файле /etc/sysctl.conf.
Для использования преобразования адресов (маскарадинг) IPv4 нужно изменить конфигурацию файервола netfilter.
Также и для использования NAT (для IPv4) необходимо настраивать netfilter. Так как основное назначение для этого компонента — фильтрация пакетов, детали описаны в Глава 14: «Безопасность» (см. Раздел 14.2, «Сетевой экран или Фильтрация пакетов»).