Product SiteDocumentation Site

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

10.1. Шлюз
10.2. Виртуальная частная сеть
10.2.1. OpenVPN
10.2.2. Virtual Private Network with SSH
10.2.3. IPsec
10.2.4. PPTP
10.3. Quality of Service
10.3.1. Принципы и механизм
10.3.2. Configuring and Implementing
10.4. Dynamic Routing
10.5. IPv6
10.5.1. Tunneling
10.6. Domain Name Servers (DNS)
10.6.1. Принципы и механизм
10.6.2. Настройка
10.7. DHCP
10.7.1. Настройка
10.7.2. DHCP and DNS
10.8. Network Diagnosis Tools
10.8.1. Local Diagnosis: netstat
10.8.2. Remote Diagnosis: nmap
10.8.3. Sniffers: 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
Другой вариант, которой будет автоматически устанавливается при загрузке системы: в файле /etc/sysctl.conf установить в строке net.ipv4.conf.default.forwarding значение 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, «Сетевой экран или Фильтрация пакетов»).