Выбери любимый жанр

Внутреннее устройство Linux - Уорд Брайан - Страница 72


Изменить размер шрифта:

72

Внутреннее устройство Linux - _64.jpg

Рис. 9.3. Отправка сообщения с помощью протокола TCP

примечание

Оставшаяся часть этой главы посвящена боле сложным темам, таким как сетевая фильтрация и маршрутизаторы, поскольку они относятся к более низким сетевым уровням по сравнению с рассмо­тренными: физическим, сетевым и транспортным. Если желаете, можете спокойно приступать к следующей главе, чтобы узнать о прикладном уровне, на котором все объединяется в пространстве пользователя. Вы увидите процессы, использующие сеть, а не просто перекидывающие наборы адресов и пакетов.

9.15. Возвращаемся к простой локальной сети

Сейчас мы рассмотрим дополнительные компоненты простой локальной сети, о которой шла речь в разделе 9.3. Вспомните, что эта сеть состоит из одной местной сети в качестве подсети и маршрутизатора, который соединяет эту подсеть с остальной частью Интернета. Вы узнаете следующее:

• каким образом хост в этой подсети автоматически получает свою сетевую конфигурацию;

• как настроить маршрутизацию;

• что такое маршрутизатор на деле;

• как узнать, какой IP-адрес применить для подсети;

• как настроить брандмауэры, чтобы фильтровать нежелательный интернет-трафик.

Начнем с изучения того, каким образом хост в подсети автоматически получает свою сетевую конфигурацию.

9.16. Понятие о протоколе DHCP

Когда вы настраиваете сетевой хост на автоматическое получение конфигурации из сети, вы указываете ему, чтобы он использовал протокол DHCP (Dynamic Host Configuration Protocol, протокол динамического конфигурирования хоста) для получения IP-адреса, маски подсети, шлюза по умолчанию и серверов DNS. Помимо того что не приходится вводить эти параметры вручную, протокол DHCP обладает другими преимуществами для сетевого администратора, такими как предотвращение конфликтов IP-адресов и минимизация последствий при изменении сети. Нечасто можно встретить современную сеть, которая не использует протокол DHCP.

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

примечание

При выполнении первичного DHCP-запроса хост не знает даже адреса DHCP-сервера, поэтому он рассылает свой запрос всем хостам (как правило, всем хостам своей физической сети).

Когда компьютер запрашивает IP-адрес у сервера DHCP, на самом деле он просит об аренде этого адреса на некоторое время. Когда аренда заканчивается, клиент может запросить обновление аренды.

9.16.1. Клиент DHCP в Linux

Хотя и существует множество разных типов систем управления сетью, почти все они используют команду dhclient (которая придерживается стандартов ISC (Internet Software Consortium, Консорциум по разработке ПО для сети Интернет)) для выполнения реальной работы. Можно проверить работу команды dhclient вручную из командной строки, но сначала вы обязаны удалить маршрут шлюза по умолчанию. Чтобы выполнить тест, просто укажите имя сетевого интерфейса (в данном примере это eth0):

# dhclient eth0

Во время запуска команда dhclient сохраняет идентификатор своего процесса в файле /var/run/dhclient.pid, а информацию об аренде — в файле /var/state/dhclient.leases.

9.16.2. Серверы DHCP в Linux

Вы можете поручить компьютеру с Linux задачу по поддержанию сервера DHCP, чтобы обеспечить достаточную степень контроля над адресами, которые он раздает. Однако если вы не администрируете большую сеть с многими подсетями, то, вероятно, лучше будет использовать специальные аппаратные средства маршрутизации, в которые встроены серверы DHCP.

Возможно, о DHCP-серверах важнее всего знать следующее: необходимо применять только один такой сервер внутри подсети, чтобы избежать конфликтующих IP-адресов или неправильной конфигурации.

9.17. Настройка Linux в качестве маршрутизатора

По существу, маршрутизаторы являются всего лишь компьютерами, которые обладают несколькими интерфейсами физической сети. Можно с легкостью настроить компьютер с Linux как маршрутизатор.

Допустим, у вас есть две локальные подсети — 10.23.2.0/24 и 192.168.45.0/24. Чтобы их соединить, у вас имеется компьютер-маршрутизатор с Linux, в котором присутствуют три сетевых интерфейса: два для локальных подсетей и один — для связи с Интернетом, как показано на рис. 9.4. Как видите, это не сильно отличается от примера с простой сетью, который мы использовали в начале этой главы.

IP-адреса маршрутизатора для локальных подсетей таковы: 10.23.2.1 и 192.168.45.1. При настройке этих адресов таблица маршрутизации выглядит подобным образом (имена интерфейсов в действительности могут быть другими; интернет-ссылку пока проигнорируем):

Внутреннее устройство Linux - _65.jpg

Рис. 9.4. Две подсети, соединенные с помощью маршрутизатора

Destination      Gateway      Genmask        Flags Metric Ref     Use Iface

10.23.2.0        0.0.0.0      255.255.255.0  U     0      0       0 eth0

192.168.45.0     0.0.0.0      255.255.255.0  U     0      0       0 eth1

Допустим, что для хостов в каждой из подсетей маршрутизатор указан в качестве шлюза по умолчанию (10.23.2.1 для сети 10.23.2.0/24 и 192.168.45.1 для сети 192.168.45.0/24). Если сеть 10.23.2.4 желает отправить пакет куда-либо за пределы сети 10.23.2.0/24, она передает такой пакет по адресу 10.23.2.1. Например, чтобы отправить пакет от адреса 10.23.2.4 (хост A) по адресу 192.168.45.61 (хост E), пакет приходит на адрес 10.23.2.1 (маршрутизатор) через интерфейс eth0, а затем уходит с него через интерфейс маршрутизатора eth1.

Однако по умолчанию ядро Linux не перемещает автоматически пакеты из одной подсети в другую. Чтобы задействовать эту основную функцию маршрутизации, необходимо включить IP-перенаправление в ядре маршрутизатора с помощью такой команды:

# sysctl -w net.ipv4.ip_forward

Как только вы введете эту команду, компьютер должен начать маршрутизацию пакетов между двумя подсетями при условии, что хосты этих подсетей знают о том, что пакеты следует отправлять только что созданному вами маршрутизатору.

Чтобы это изменение сохранилось после перезагрузки, можно добавить его в файл /etc/sysctl.conf. В зависимости от версии ОС может быть также вариант размещения в файле /etc/sysctl.d, чтобы ваши изменения не были перезаписаны при обновлениях системы.

Интернет-ссылки верхнего уровня. Когда в маршрутизаторе присутствует также третий сетевой интерфейс с интернет-ссылкой верхнего уровня, такая же настройка разрешает доступ в Интернет всем хостам, так как они сконфигурированы на использование этого маршрутизатора в качестве шлюза по умолчанию. Однако здесь все сложнее. Проблема в том, что конкретные IP-адреса, такие как 10.23.2.4, в действительности не видны всему Интернету; они находятся в так называемых частных сетях. Чтобы обеспечить их подключением к Интернету, следует настроить в маршрутизаторе функцию под названием NAT (Network Address Translation, преобразование сетевых адресов). Программное обеспечение почти у всех специализированных маршрутизаторов выполняет эту задачу, в ней нет ничего необычного, но рассмотрим более детально вопрос о частных подсетях.

9.18. Частные сети

Предположим, вы решили создать собственную сеть. Вы уже подготовили ком­пьютеры, маршрутизатор и аппаратные средства сети. С теми знаниями о простой сети, которые у вас уже есть, возникает следующий вопрос: «Какие IP-адреса для подсети следует использовать?»

72
Перейти на страницу:
Мир литературы