Сеть

Андрей Горев, Георгий Курячий, Мэтт Уэлш

Настройка сети

В системе Linux полностью реализован протокол TCP/IP (Transport Control Protocol/Internet Protocol). Протокол TCP/IP оказался наиболее успешным средством объединения компьютеров всего мира в единую сеть. Имея компьютер с системой Linux и адаптер Ethernet (сетевую карту), можно подключить компьютер к локальной сети или (при наличии соответствующего подключения) к сети Интернет, являющейся всемирной сетью, где обмен данными происходит по протоколу TCP/IP.

В системе Linux можно использовать протокол TCP/IP без каких-либо сетевых устройств, поскольку даже на компьютере, лишённом сетевых адаптеров (аппаратных сетевых интерфейсов), всегда имеется виртуальный интерфейс — сетевая «заглушка» (или «петля», loopback interface) по имени lo0. Сетевая заглушка позволяет компьютеру вести диалог с самим собой, используя сетевые протоколы. Это необходимо для некоторых программ и игр, в которых используется сетевые соединения.

Прежде чем настраивать TCP/IP, нужно узнать определённую информацию о параметрах сети. Потребуются следующие параметры.

IP-адрес

Это уникальный адрес компьютера в формате четырёх трёхзначных десятичных чисел, разделённых точками, например, 128.253.153.54. Как правило каждый сетевой интерфейс имеет не менее одного IP-адреса. Адрес 127.0.0.1, присваиваемый интерфейсу lo0, сетевой заглушке, одинаков на всех компьютерах. Поэтому для подключения к компьютеру в нашем примере можно использовать адрес 127.0.0.1, если вы подключаетесь с того же самого компьютера, и 128.253.153.54, если подключаетесь с других компьютеров сети.

Сетевая маска (netmask)

Формат маски аналогичен формату IP-адреса. Маска определяет, какая часть IP-адреса соответствует номеру локальной (под)сети (subnetwork number), а какая═ — номеру компьютера в сети. Маска представляет собой битовый шаблон. При наложении этого шаблона на адрес компьютера (хоста) можно узнать номер того участка сети, к которому относится этот адрес. Это очень важно для рассылки сообщений, поэтому если вдруг окажется, например, что можно установить связь с кем-либо вне локальной сети, а внутри сети такая связь не устанавливается, то может оказаться, что маска указана неверно.

Маска выбиралась администратором сети при её проектировании, поэтому он должен её точно знать. Большинство локальных сетей имеют класс C и используют маску 255.255.255.0. Сети класса B имеют маску 255.255.0.0. Программы настройки сети выбирают маску автоматически, предполагая по умолчанию, что подсети отсутствуют, если они не указаны.

То же относится и к адресу заглушки. Поскольку адрес в этом случае всегда 127.0.0.1, то и маска всегда 255.0.0.0. Это можно указать явно или положиться на маску, выданную по умолчанию.

Адрес сети (network address)

Это адрес является результатом побитовой операции И двух аргументов: IP-адреса компьютера и маски. Например, если маска имеет вид 255.255.255.0, IP-адрес равняется 128.253.154.32, то адрес сети будет 128.253.154.0. Если маска равняется 255.255.0.0, то адрес сети будет равняться 128.253.0.0.

Если используется только заглушка, сетевой адрес отсутствует.

Широковещательный адрес (broadcast address)

Этот адрес используется для трансляции пакетов сообщений по всем компьютерам, объединённым в (под)сеть. Следовательно, если IP-адрес компьютера в сети определяется последним байтом (иными словами, если маска равна 255.255.255.0), то широковещательный адрес является результатом побитовой операции ИЛИ выражения 0.0.0.255 с IP-адресом компьютера. Например, если IP-адрес компьютера 128.253.154.32, а маска 255.255.255.0, то широковещательный адрес будет равен 128.253.154.255.

Если используется только заглушка, широковещательный адрес отсутствует.

Адрес маршрутизатора (gateway address)

Это адрес компьютера, который является «шлюзом» во внешний мир (т. е. к компьютерам вне локальной сети). Принято проектировать сети так, чтобы адрес маршрутизатора получался из IP-адреса компьютера заменой последних групп цифр на .1. Например, если IP-адрес компьютера равняется 128.253.154.32, то адрес маршрутизатора может иметь значение 128.253.154.1. Эта рекомендация не является обязательной, так всю правду обычно знает только системный администратор.

Маршрутизаторов может быть несколько. В действительности маршрутизатор═ — это компьютер, который находится в двух различных сетях (т. е. имеет IP-адреса в различных подсетях). Маршрутизатор занимается тем, что пересылает пакеты сообщений между этими двумя сетями. Многие сети имеют единственный шлюз во «внешний мир» (который представляет собой непосредственно примыкающую сеть). Однако в некоторых случаях к локальной сети примыкает несколько других сетей, и для каждой из них имеется свой маршрутизатор.

Если используется только заглушка, адрес маршрутизатора отсутствует. То же верно и в случае, когда локальная сеть изолирована от всех остальных.

Адрес сервера имён (name server address)

Для большинства компьютеров в сети имеется сервер, который преобразует имя компьютера в IP-адрес (Domain Name Server, сокращённо DNS). Сервер устанавливает соответствие доменного имени, отражающего административную принадлежность компьютера, и IP-адреса, отражающего место компьютера в сети Интернет. Любое обращение по сети с использованием доменного имени требует преобразования его в IP-адрес (возможно, при помощи сервера). Адрес этого сервера должен сообщить администратор сети или провайдер, предоставляющий доступ в Интернет.

Такой сервер можно также запустить на собственном компьютере (программа называется named); в этом случае адрес сервера имён в сети равняется 127.0.0.1. Кроме тех случаев, когда абсолютно необходимо иметь собственный сервер имён, лучше воспользоваться тем, который имеется (если имеется).

Если используется только заглушка, адрес сервера имён отсутствует. Более подробно про организацию адресации в TCP/IP можно прочесть по адресу http://citforum.ru/nets/tcp/adres_inter.shtml или в HOWTO[12]

Наиболее распространённые варианты настройки сети в Master можно произвести с помощью утилиты draknet — поэтому рекомендуется сначала попробовать воспользоваться ей, а если функциональности этой утилиты вам будет недостаточно, попробовать произвести требуемые настройки вручную.

Сразу после запуска draknet предлагает попробовать определить автоматически сетевые устройства, установленные на вашем компьютере. После этого вам будет предложено настроить один из сетевых адаптеров, причём устройства, найденные автоматически, будут отмечены особо; далее необходимо ответить на вопросы (указать требуемые параметры), после чего ваша сеть будет настроена.

Если автоматическая настройка сети, сделанная draknet, вас почему-либо не устраивает или неработоспособна, вы можете настроить работу с сетью, вручную проделав необходимые операции. Стоит иметь в виду, что утилиты, работающие с сетевыми настройками, такие как ifconfig, ip или route, изменяют их на время, до перезагрузки системы. Для постоянной настройки сетевых подключений необходимо изменять соответствующие конфигурационные файлы. Содержимое этих файлов используется системной службой network, которая и запускает при старте системы эти и другие утилиты.

Настройка сети происходит в несколько этапов.

  1. Определение сетевых устройств (network interface)

    Для того, чтобы система работала с сетью, необходимо в файл /etc/sysconfig/network вписать строку NETWORKING=yes (обычно это делается при установке). Сетевые устройства, найденные системой при загрузке, могут участвовать, а могут и не участвовать в работе сети.

  2. Привязка устройств к IP-сетям

    Если устройство используется системой, оно должно быть зарегистрировано: в каталоге /etc/sysconfig/network-scripts/ должен быть файл ifcfg-имя_устройства (как правило ifcfg-eth0, ifcfg-eth1 и т. д.). В этом файле указываются построчно сетевые настройки устройства. Параметры IPADDR, NETWORK и NETMASK отвечают за адрес компьютера, адрес сети и сетевую маску соответственно. Если эти параметры система получает автоматически, вместо них указывается строка BOOTPROTO=способ_получения ( =dhcp для автоматической настройки по DHCP). Строка ONBOOT=yes означает, что настройка должна происходить при старте системы (это обычный способ работы с сетями Ethernet).

    Обратите внимание, что в файле /etc/sysconfig/network-scripts/ifcfg-имя_устройства обязательно присутствует строка DEVICE=имя_устройства. Дело в том, что содержимое этого файла служит параметрами для утилиты настройки сетевых устройств ifconfig. Среди параметров этой утилиты, конечно, должно быть и наименование устройства.

  3. Настройка IP (маршрутизация)

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

    Таким образом, при определении маршрутизатора для очередного пакета, адресат которого находится за пределами локальной сети, система сначала будет искать его среди записей вида компьютер — компьютер (сетевая маска 255.255.255.255), затем среди записей вида подсеть — компьютер (в порядке уменьшения сетевой маски), и, наконец в записи вида 0.0.0.0 компьютер (сетевая маска 0.0.0.0 означает всю сеть). Проще говоря, если вывести таблицу маршрутизации командой route -n или netstat -rn, то маршрутизатор при принятии решения о том, куда отправить пакет, просматривает эту таблицу сверху вниз.

    В этой таблице, кроме того, каждой локальной сети соответствует имя подключённого к ней сетевого устройства. В самом простом виде такая таблица должна содержать по одной записи вида подсеть — устройство на каждую локальную сеть (обычно для lo0 и eth0) и одну запись вида 0.0.0.0 — компьютер для указания маршрутизатора по умолчанию.

    Адрес маршрутизатора по умолчанию указывается в файле /etc/sysconfig/network строкой GATEWAY=адрес.

    Для того, чтобы настройки в файлах интерфейсов вступили в силу, выполните команду service network restart.

    Более полную документацию по организации статической маршрутизации и работе IP-сетей можно найти по следующим ссылкам: http://citforum.ru/nets/tcp/iproutng.shtml и http://citforum.ru/nets/ip/contents.shtml.

    Кроме рассматриваемого здесь варианта статической маршрутизации, Linux также поддерживает работу с протоколами динамической маршрутизации, наиболее распространёнными из которых являются протоколы OSPF и BGP. Для настройки протоколов динамической маршрутизации, установите пакет zebra. Zebra частично эмулирует консоль Cisco IOS, и поддерживает удалённое управление.

    Linux поддерживает возможность многотабличной маршрутизации, возможность классификации трафика по типам сервиса и протоколам, и перенаправления такого трафика в различные интерфейсы. Например, можно сделать так, чтобы почтовый трафик уходил в медленный и недорогой коммутируемый доступ (модемный канал), а остальной трафик ходил по быстрому xDSL. Такой функционал называется Advanced routing. Техника настройки многотабличной маршрутизации подробно рассмотрена в документе Advanced routing and QoS. Основным инструментом при этом является утилита ip из пакета iproute2. Она же, кстати, в дистрибутиве ALT Linux 2.4 положена в основу управляющих скриптов из /etc/sysconfig/network-scripts вместо уже устаревшей (но ещё используемой) утилиты route.

  4. Настройка DNS

    Компьютер, подключённый к сети Интернет, может воспользоваться службой доменных имён (DNS) для преобразования символьных IP-адресов (доменных имён) в числовые IP-адреса и обратно. Например, доменному имени www.ru соответствует адрес 194.87.0.50, что можно узнать, выполнив команду host www.ru. Адрес используемого для этой операции DNS-сервера указывается в файле /etc/resolv.conf в строке вида nameserver адрес (таких строк может быть несколько). В виде domain=имя_домена или search=имя_домена1 имя_домена2 ... в этом же файле указываются имена доменов, в которых будет производиться поиск символьного IP-адреса. Например, если в /etc/resolv.conf указано search=school.altlinux.ru, команда host student2 будет сначала пытаться определить адрес student2, а затем — адрес student2.school.altlinux.ru.

    Внимание

    После изменения файла /etc/resolv.conf, для того чтобы изменения вступили в силу, необходимо дать команду update_chrooted all.

    Преобразование IP-адресов необходимо доже если ни один DNS-сервер не доступен. Вместо того, чтобы вызывать службу DNS, система может обратиться к файлу /etc/hosts, строки которого (вида IP-адрес имя1 имя2 ...) как раз и задают соответствие символьных и числовых IP. Файл /etc/hosts можно использовать для автономной локальной сети. В файле /etc/nsswitch.conf, среди прочих записей, есть строчка, начинающаяся на hosts:, например, такая hosts: files dns. Она означает, что для превращения одного вида IP-адреса в другой система сначала попытается обратиться к файлу /etc/hosts, а если соответствующей записи там не найдётся, отправит DNS-запрос.

  5. Настройка имеющихся сетевых служб

    Как правило, настройка определённой сетевой службы (почты, www-сервера и т. п.) описывается в документации этой службы. Однако «лёгкие» сетевые службы (такие как cups-lpd или tftpd) могут не разбираться в тонкостях сетевой настройки, а запускаться посредством сетевого метадемона inetd (xinetd). Метадемон устроен так, что он принимает сетевой запрос на соединение, предназначенный для любой из этих служб, настраивает соединение и запускает службу, которая только принимает и передаёт данные. Для работы таких служб необходимо, чтобы метадемон запускался при старте системы и в файле настройки службы /etc/xinetd.d/имя_службы было указано disable=no. Кроме того, возможностью доступа к сервису из внешней сети управляет строка only_from=адрес_сети в этом файле и в /etc/xinetd.conf (общие настройки xinetd).

  6. Проверка работоспособности сети

    Для проверки работоспособности сети TCP/IP можно воспользоваться следующей схемой.

    Для начала убедитесь в работоспособности только что настроенного вами интерфейса при помощи команды ping ip_адрес_интерфейса. При получении ответов от него можно проверить командой ping адрес_соседа доступность любого компьютера из той же подсети, что и только что настроенный. После этого необходимо проверить работоспособность серверов DNS с помощью команды host имя_хоста имя_сервера_DNS. Наконец, для проверки возможности доступа к Интернету необходимо дать команду ping интернет_сервер, например, ping www.ru.

    Для просмотра трассы прохождения пакетов в сети используйте утилиту tracepath или traceroute, если настройки control это позволяют.

Автоматическая настройка сети (RARP и DHCP)

Если система устанавливается на компьютер, включённый в корпоративную сеть, многие параметры сетевых настроек известны заранее. Более того, нежелательно, чтобы эти известные заранее настройки хозяин компьютера мог самостоятельно изменять. Наконец, необходим механизм автоматической передачи компьютерам-абонентам сети таких заранее определяемых системным администратором настроек, как сетевой адрес и маска, адрес маршрутизатора (шлюза), адрес сервера доменных имён (DNS) и некоторых других.

Следует понимать, что всей мощью сетевых протоколов TCP/IP компьютер, не имеющий пока своего IP-адреса, воспользоваться не может. Поэтому сервис удалённой настройки должен опираться на информацию более низкого уровня (интерфейсного уровня TCP/IP). В частности, при использовании сети Ethernet, в качестве идентификатора компьютера может выступать уникальный идентификатор его сетевого интерфейса (т. н. MAC-адрес сетевой карты). MAC-адрес   шестибайтное число, традиционно представляемое в виде шести шестнадцатеричных чисел, разделённых символом :; он содержится, например, в выдаче команды ifconfig. Любые пакеты (фреймы), передаваемые в Ethernet, содержат MAC-адрес в полях идентификатор отправителя и идентификатор получателя. Сетевая карта, получив пакет, сравнивает MAC-адрес получателя со своим, и только в случае совпадения передаёт в систему. Исключение — т. н. широковещательный идентификатор получателя, ff:ff:ff:ff:ff:ff, пакеты с которым передаются системе в любом случае.

Компьютер-абонент локальной сети при включении посылает специальный широковещательный Ethernet-пакет, который трактуется как запрос «настрой меня». В сети должен находиться хотя бы один (и лучше, чтобы один) сервер, способный обрабатывать такой запрос, который, на основании MAC-адреса отправителя и некоторой собственной информации, формирует ответ, содержащий настроечные данные для абонента. Система абонента должна такой ответ обработать, выбрать оттуда интересующую её информацию и настроить сетевые параметры. Таким образом, автоматическая настройка требует наличия в сети сервера, который раздаёт параметры и следит за их употреблением, и клиента на абонентской машине, который эти параметры применяет.

Самый простой способ автоматической настройки   воспользоваться стандартной для семейства протоколов TCP/IP службой преобразования адресов — RARP (Reverse Address Resolution Protocol). Служба эта преобразует низкоуровневые адреса (в случае Ethernet — MAC-адреса, интерфейсный уровень) в высокоуровневые (IP-адрес, сетевой уровень). (Протокол ARP, преобразующий высокоуровневые адреса в низкоуровневые, используется в TCP/IP сетях постоянно для определения MAC-адресов абонентов локальной сети). В Linux формированием RARP-запроса занимается ядро. Сервер rarpd, отвечая на RARP-запросы, пользуется простейшей таблицей соответствия IP-адресов MAC-адресам в сети. Никакой другой информации по RARP передать нельзя, поэтому сегодня он используется главным образом для сетевой загрузки компьютеров (в этом случае простой RARP-запрос формирует не система, а сама сетевая карта, она же запоминает ответ, а система считывает этот ответ при загрузке).

Более гибкий протокол удалённой настройки — DHCP (Dynamic Host Configuration Protocol). Он позволяет передавать не только IP-адрес, но и адреса маршрутизаторов, список DNS-серверов, позволяет управлять удалённой загрузкой, и передавать вообще любые данные, лишь бы они распознавались с клиентской стороны. Что не менее важно, сервер dhcpd (из пакета dhcp-server║), может настраивать компьютеры, MAC-адрес которых заранее неизвестен, выделяя им IP-адреса из заданного диапазона (не навсегда, а на время) и следя за тем, чтобы разным компьютерам выдавались разные адреса. Более того, однажды выданный IP-адрес закрепляется за определённым компьютером и выдаётся ему при повторных запросах — до тех пор, пока адресов в диапазоне хватает для вновь подключаемых абонентов DHCP. Если запас адресов всё же исчерпан, очередному новому компьютеру будет выдан адрес, который дольше всего не использовался.

Сетевая настройка клиента при этом сводится к запуску клиентского демона dhcpcd, который регулярно засылает в сеть DHCP-запросы и интерпретирует ответы. dhcpcd умеет обновлять /etc/resolv.conf и некоторые другие настроечные файлы, модифицируя поведение соответствующих служб системы. Чтобы активизировать настройку по DHCP при начальной загрузке системы, достаточно в файле, допустим, /etc/sysconfig/network-scripts/ifcfg-eth0, указать строку BOOTPROTO=dhcp и убрать строки настройки IP-адреса и/или маршрутизатора.

Настройка сервера dhcpd, в общем случае, довольно проста. Прежде всего следует убедиться в том, что ваш DHCP-сервер — единственный в локальной сети, в противном случае следует настраивать взаимодействие между серверами. Затем создать файл настройки /etc/dhcp/dhcpd.conf, в котором при помощи ключевого слова subnet должны быть описаны все сетевые подключения, имеющиеся на вашем компьютере. В обязательном порядке надо сообщить, какой стиль динамического обновления DNS будет использоваться (проще всего его выключить). Наконец, хотя бы в одной из подсетей необходимо выделить диапазон адресов для раздачи. После этого можно запускать DHCP-демон.

Предположим, адрес вашего компьютера в Интернет (подключён посредством интерфейса eth0) — 207.68.172.234, а интерфейс eth1 подключён к внутренней локальной сети, адрес вашего компьютера в которой — 10.10.10.2. Тогда файл настройки примет вид

ddns-update-style none;

subnet 207.68.172.0 255.255.255.0;

subnet 10.10.10.0 netmask 255.255.255.0 {
  range 10.10.10.10 10.10.10.254;
}

В нашем примере машинам из внутренней сети будут выдаваться адреса от 10.10.10.10 до 10.10.10.254 (точнее, от 10.10.10.254 до 10.10.10.10, так как dhcpd начинает с наибольшего адреса).

Если необходимо, чтобы ваш компьютер выполнял функции маршрутизатора и сервера имён для внутренней сети (домен internal.com), то после настройки соответствующих служб, в этот файл следует добавить — по аналогии с range — строки

option routers 10.10.10.2;
option domain-name-servers 10.10.10.2;
option domain-name "internal.com";

Чтобы постоянно выдавать определённый IP-адрес определённому компьютеру, необходимо, как и в случае RARP, привязать IP-адрес к идентификатору сетевого интерфейса этого компьютера. В случае сети Ethernet в этой роли выступает MAC-адрес. Соответствующая запись в /etc/dhcp/dhcpd.conf может выглядеть, например, так:

host fixed {
  hardware ethernet 0:c0:c3:49:2b:57;
  fixed-address 10.10.10.11;
}

Следует помнить, что сервис ║dhcpd║ использует технологию chroot: его рабочий каталог — /var/lib/dhcp/dhcpd. В этом каталоге, помимо прочего, в файле /var/lib/dhcp/dhcpd/state/dhcpd.leases хранится информация о когда-либо выданных адресах и сроках их действия.

Более подробную информацию о работе с DHCP можно найти в руководствах, входящих в соответствующие пакеты.

Удалённое подключение к Интернет по модему

Самый простой инструмент подключения по модему к Интернет — утилита kppp, которая входит в состав рабочего стола KDE. Утилита работает только под управлением графической среды XFree86, однако KDE не обязательно должен быть запущен. Возможность работы с kppp управляется утилитой control: control kppp public позволяет любому пользователю запускать kppp, а control kppp netadmin — только членам группы netadmin.

Дозвон можно организовать и не используя графическую среду, из командной строки. Для этого стоит воспользоваться утилитой wvdial. Она умеет автоматически определять тип авторизации на сервере, к которому происходит подключение, так что в большинстве случаев её настройка проходит даже быстрее, чем настройка kppp.

Для того, чтобы обычный пользователь мог использовать сетевые подключения (например, ppp), придумана специальная утилита — usernetctl. В варианте использования public (результат команды control usernetctl public) она выполняет с правами суперпользователя основные действия с сетью — активизацию (up) и деактивизацию (down) сетевого интерфейса. Лучше использовать её не напрямую, а посредством вызова утилит ifup и ifdown.

Последний — самый универсальный, но и самый сложный — способ заключается в том, чтобы использовать pppd, стандартный системный демон, отвечающий как за исходящие, так и за входящие звонки. Следует знать, что для того, чтобы обычный пользователь мог работать с настроенным ppp-соединением с помощью pppd или wvdial, необходимо разрешить ему настраивать сеть (control usernetctl public) и пользоваться соответствующим сетевым соединением (поле USERCTL=yes в /etc/sysconfig/network-scripts/ifcfg-ppp*).

Настройка беспроводной сети

ALT Linux 2.4 Master позволяет настроить компьютер таким образом, чтобы он выступал в роли клиента беспроводной сети wi-fi (IEEE802.11) во всех существующих сегодня режимах работы беспроводных сетей. Более того, вы даже можете сконфигурировать точку доступа (как сервер) в режиме ad-hoc. Для создания полноценной точки доступа в режиме Managed, смотрите проект http://www.linux-wlan.org.

В качестве аппаратной базы, мы рекомендуем использовать wi-fi карты доступа с чипсетами от Intersil-Conexant (prism) или Lucent (orinoco). С этими чипсетами возникает меньше всего проблем при конфигурировании. Если вы настраиваете настольную машину или сервер, лучше выбирать pci-решение. Однако в случае с ноутбуком понадобится поддержка pcmcia-pci мостов. Эта поддержка настраивается с помощью модулей ядра и пакета pcmcia-cs. Наиболее распространены мосты, поддерживаемые модулем i82365, однако в последнее время его заменил yenta_socket. Если вам очень повезёт, то с настройкой вам поможет kudzu, однако на разных версиях ядра и разных аппаратных платформах настройка все больше напоминает магические пассы.

Посмотреть варианты wi-fi оборудования, включая антенны и усилители, можно на сайте http://info.radiolink.ru. Используя направленные антенны и имея соответствующие лицензии, можно делать wi-fi сети в режиме ad-hoc, работающие на расстоянии в десятки километров! Фундаментальную информацию о поддержке wi-fi в Linux и всех тонкостях его настройки и работы можно найти на сайте http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/

В случае использования пакета pcmcia-cs, все настройки сетевого интерфейса сосредоточены в файлах: /etc/pcmcia/config.opts, /etc/pcmcia/wireless.opts, и /etc/pcmcia/network.opts. В противном случае конфигурирование производится через modules.conf передачей опций модулям и файлов-описаний интерфейсов в /etc/sysconfig/network-scripts. Напоминаем, что для модулей из пакета pcmcia-cs существует экранная документация, а параметры у модулей ядра можно узнать, выполнив команду modinfo название модуля. Для настройки файлов-описаний интерфейсов в /etc/sysconfig/network-scripts, изучайте содержимое файла /sbin/ifup на предмет $WIRELESS. Интерфейс будет называться wvlan или eth в зависимости от опций модуля-драйвера чипсета на карте.

Настройки в этих скриптах манипулируют напрямую с регистрами на вашей беспроводной плате используя утилиты из пакета wireless-tools, который обязательно в вашем случае должен быть установлен. Ключевая утилита пакета — iwconfig — позволяет просмотреть статистику и настроить плату, не прибегая к настроечным скриптам.

Среди других беспроводных технологий — Bluetooth и IrLAN. Поддержка этих протоколов осуществляется модулями на уровне ядра, а управление соответствующими пакетами — bluez-utils и irda-utils соответственно.

Удалённый доступ и удалённое администрирование

Одна из самых распространённых задач, возникающих при работе в сети, — удалённый доступ к другим компьютерам, в том числе удалённое администрирование компьютеров.

Для решения этой задачи используется ставший уже традиционным протокол SSH (Secure Shell). В отличие от устаревших протоколов, таких как telnet и rsh/rlogin/rcp, которые передают данные прямым текстом и подвержены обыкновенному прослушиванию и различным атакам, SSH реализует соединение с удалённым компьютером, защищающее от:

  • прослушивания данных, передаваемых по этому соединению;

  • манипулирования данными на пути от клиента к серверу;

  • подмены клиента либо сервера путём манипулирования IP-адресами, DNS либо маршрутизацией.

В дополнение к отличным характеристикам в области обеспечения безопасного клиент-серверного соединения, SSH обладает следующими возможностями:

  • сжатие передаваемых данных;

  • туннелирование каналов внутри установленного соединения — в т. ч. соединений с X-сервером, что позволяет запускать графические приложения на удалённой машине;

  • широкая распространённость: существуют реализации SSH для самых различных аппаратных платформ и операционных систем.

OpenSSH — это входящая в дистрибутив реализация SSH, поддерживающая версии 1.3, 1.5 и 2.0 протокола SSH, и распространяемая на условиях лицензии BSD. Эта реализация включает в себя:

  1. Клиентские программы ssh, scp и sftp (используются для запуска программ на удалённых серверах и копирования файлов по сети).

  2. Серверные программы sshd, sftp-server (используются для предоставления доступа по протоколу SSH).

  3. Вспомогательные программы make-ssh-known-hosts, rescp, ssh-keygen, ssh-add, ssh-agent, ssh-copy-id, ssh-keyscan.

Сетевая безопасность

Безопасность бывает различная, в данном разделе мы рассмотрим внешнюю сетевую безопасность. Главным правилом для обеспечения безопасности при доступе по сети, является следующее условие: выключайте на сервере весь неиспользуемый сервис! Команды netstat -anp | grep udp и netstat -anp | grep LISTEN помогут определить, какой сервис в данный момент предоставляет ваш сервер. Отключить ненужный сервис вы можете с помощью команд chkconfig или ntsysv.

Вторым правилом будет следующее: по возможности обновляйте серверные компоненты из updates дистрибутива, особенно в том случае, если в обновлениях исправлены ошибки в безопасности. Подпишитесь на список рассылки security-announce По этому списку приходит очень немного сообщений, но содержащаяся в них информация и объявления могут иметь очень большое значение для безопасности вашей системы.

Третьим правилом можно считать следующее: не подключайте критически важные ресурсы к глобальной сети Интернет, если это возможно.

Четвёртое правило: используйте где возможно криптование, ssh-туннелирование, SSL-подписи. Это предохранит ваш трафик от подслушивания.

Последнее правило — фильтруйте весь нежелательный трафик. Об этом поговорим подробнее.

Настройка межсетевого экрана

Для построения фильтра пакетов на уровне ядра в Linux применяются следующие пакеты: для ядер 2.2 — ipchains; для ядер 2.4 — iptables; для ядер 2.6 — iptables и ebtables. Далее будем рассматривать iptables как наиболее популярный для настройки межсетевого экрана.

Фундаментальную информацию по настройке iptables и пакетного фильтра на его основе, включая настройку маскарадинга и NAT, с примерами и готовыми скриптами, можно найти в статье http://gazette.linux.ru.net/rus/articles/index-iptables-tutorial.html.

Фильтр пакетов — это программа (iptables) которая просматривает заголовки пакетов по мере их прохождения, и решает дальнейшую судьбу всего пакета. Фильтр может сбросить DROP-пакет (т. е. как будто пакет и не приходил вовсе), принять ACCEPT-пакет (т. е. пакет может пройти дальше), или сделать с ним что-то ещё более сложное.

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

Ваша текущая настройка межсетевого экрана хранится в ядре, и соответственно будет потеряна при перезагрузке системы. Для сохранения текущих настроек существует команда iptables-save. Она помогает сохранить настройки в файле /etc/sysconfig/iptables. Не исправляйте этот файл вручную! Конфигурация из него зачитывается и восстанавливается при запуске сервиса iptables. Альтернативным вариантом будет размещение в каталоге /etc/rc.d сценария rc.firewall, производящего настройку межсетевого экрана. Файл сценария, естественно, должен быть исполняемым.

Для того, чтобы разобраться в работе iptables, необходимо понять, как пакеты проходят цепочки. На рисунке представлен этот механизм. Как видите, по левой цепочке пакет проходит в случае когда ваш маршрутизатор переправляет пакет дальше, а по правой — когда это локальный трафик, или предназначенный самому маршрутизатору.

О назначении самих цепочек и расширенных возможностях iptables читайте документацию по представленной выше ссылке или man iptables.

Для примера приведём несколько правил.

# Политики цепочек по умолчанию. Если межсетевой экран не находит описания для
# данного пакета, он поступает с ним согласно этих правил.
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Обнуление существующих цепочек
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

# Защита от Syn-flood.
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

# Защита от скрытого сканирования портов.
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit 
--limit 1/s -j ACCEPT

# Защита от Ping of death.
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s 
-j ACCEPT

# Запрещаем NEW и INVALID входящие пакеты с ppp.
iptables -A INPUT -i ppp+ -m state --state NEW,INVALID -j DROP

# Разрешаем пакеты, принадлежащие и относящиеся к уже установленному 
# соединению.
iptables -N block
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A block -m state --state NEW -i ! ppp+ -j ACCEPT
iptables -A block -j DROP

iptables -A INPUT -j block

В этих правилах описывается примерная защита для одиноко стоящего хоста с коммутируемым (или ADSL) подключением к Интернет. В самом конце цепочки INPUT осуществляется переход в самодельную цепочку block.

Организация корпоративной сети

При организации корпоративных сетей очень важен этап предварительного планирования топологии сети, нагрузки по сегментам сети, расчёт протяжённости кабельной системы, а также затратная часть на сетевую инфраструктуру и серверы, предоставляющие сервис в этой сети. От правильности начального планирования зависит производительность и масштабируемость всей сети в целом и её отдельных компонентов. Ваша сеть скорее всего будет работать по Ethernet, а там, как известно используется протокол обнаружения коллизий. Чем правильнее вы спланируете свою сеть, тем меньше будет этих коллизий и тем лучше будет работать сеть в целом. На стадии планирования вам поможет статья по адресу http://citforum.ru/nets/articles/lso.shtml.

После того, как вы набросали план вашей будущей сети и приобрели необходимое оборудование, нужно распределить адресное пространство. В разделе Настройка IP (маршрутизация) приводилось несколько ссылок, помогающих разобраться в тонкостях организации подсетей, работе с сетевыми масками и пр. Здесь мы рассмотрим, почему используют подсети при организации корпоративных сетей.

Очень важным является следование RFC1918, которая регламентирует используемое для построения внутренних сетей адресное пространство. Напомним, что это блоки адресов: 10.0.0.0/8 для сетей класса A, 172.16.0.0/16 — 172.31.0.0/16 для сетей класса B, 192.168.0.0/16 для сетей класса C. Здесь после знака / указана битовая маска сети. Если вы не будете следовать этим рекомендациям, то у вас могут возникнуть сложности при подключении сети к Интернет.

Далее нужно выбрать из перечисленных выше вариантов сетевой блок, который будет удовлетворять размерам вашей сети. Как правило, в случае небольшой сети (до 254 машин), выбирают сеть 192.168.0.0/24. Для сети масштаба предприятия выбирают сеть класса А.

Введите организацию подсетей: адрес сети класса A может быть разбит на несколько (если не много) отдельных сетей. Управлять каждой отдельной сетью значительно проще.

Это позволяет устанавливать и управлять небольшими сетями — весьма возможно использовать различные технологии организации сетей. Помните, вы не можете смешивать Ethernet, Token Ring, FDDI, ATM и т. п. на одной физической сети, однако они могут быть связаны мостами (bridges).

Другие причины для организации подсетей:

  • Физическое размещение сайта может быть ограничено длиной кабеля. Ясно, что физическая инфраструктура может быть связана, требуя множественные сети. Организация подсетей позволяет это сделать, используя единственный сетевой номер. Сейчас это обычно делают интернет-провайдеры, которые желают дать своим постоянным клиентам с локальными сетями статические IP-адреса.

  • Сеть перегружена. Её разбивают на подсети так, чтобы трафик был сосредоточен внутри подсетей, разгружая таким образом всю сеть, без необходимости увеличивать её общую пропускную способность.

  • Разделение на подсети может быть продиктовано соображениями безопасности, т. к. трафик в общей сети может быть перехвачен. Организация подсетей обеспечивает способ, позволяющий предохранить отдел маркетинга от «сующих нос не в свои дела».

  • Имеется оборудование, которое использует несовместимые технологии организации сетей, и есть потребность связать их (как упомянуто выше).

Каждая сеть имеет два адреса, не используемых для сетевых интерфейсов (компьютеров) — сетевой номер сети и широковещательный адрес. Когда вы организуете подсеть, каждая из них требует собственного, уникального IP-адреса и широковещательного адреса, причём они должны быть правильными внутри диапазона адресов сети, которую вы организуете.

Таким образом, разделение сети на две подсети приводит к тому, что образуются два адреса сети и два широковещательных адреса — увеличивается число «неиспользуемых» адресов интерфейсов; создание 4-х подсетей приведёт к образованию 8-и неиспользуемых адресов интерфейсов и т. д.

Фактически, самая маленькая пригодная для использования подсеть состоит из 4 IP-адресов:

  • Два используются для интерфейсов: один для маршрутизатора в этой сети, другой для единственной машины в этой сети.

  • Один адрес сети.

  • Один широковещательный адрес.

Если у вас в подсети один компьютер, то любые сетевые сообщения должны отправляться в другую подсеть. Этим будет заниматься маршрутизатор, на котором вы в таблицу маршрутизации прописываете пути в эти подсети. А на этом единственном компьютере в подсети вы указываете маршрутизатор как маршрут по умолчанию, или шлюз. Для того, чтобы маршрутизатор перебрасывал пакеты между интерфейсами, вам обязательно надо включить форвардинг. Делается это в файлах /etc/sysconfig/network и /etc/sysctl.conf.

Сетевая маска позволяет разделить сеть на несколько подсетей. Сетевая маска для сети, не разделённой на подсети — это просто четвёрка чисел, которая имеет все биты в полях сети, установленные в 1 и все биты машины, установленные в 0.

Таким образом, для трёх классов сетей стандартные сетевые маски выглядят следующим образом:

Класс A (8 сетевых битов): 255.0.0.0

Класс A (8 сетевых битов): 255.255.0.0

Класс A (8 сетевых битов): 255.255.255.0

Способ организации подсетей заимствует один или более из доступных битов номера хоста и заставляет интерпретировать эти заимствованные биты как часть сетевых битов. Таким образом, чтобы получить возможность использовать вместо одного номера подсети два, мы должны заимствовать один бит машины (крайний левый), установив его в сетевой маске в 1.

Для адресов сети класса C это привело бы к маске вида 11111111.11111111.11111111.10000000 или 255.255.255.128 К примеру, для сети класса C с сетевым номером 192.168.1.0, есть несколько случаев:

Число подсетейЧисло машин на сетьСетевая маска
2126255.255.255.128
462255.255.255.192
830255.255.255.224
1614255.255.255.240
326255.255.255.248
642255.255.255.252

В принципе, нет абсолютно никакой причины следовать вышеупомянутым способам организации подсетей, где сетевые биты добавлены от старшего до младшего бита хоста. Однако, если вы не выберете этот способ, то в результате IP-адреса будут идти в очень странной последовательности! Но в результате, решение, к какой подсети принадлежит IP-адрес, получается чрезвычайно трудным для нас (людей), поскольку мы не слишком хорошо считаем в двоичной арифметике (с другой стороны, компьютеры, с равным хладнокровием, будут использовать любую схему, которую вы им предложите).

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

Последним этапом будем считать настройку маршрутизатора. Статические маршруты в подсети описываются в файле /etc/sysconfig/static-routes. Заметьте, что по умолчанию этого файла нет! Синтаксис записей в файле примерно такой:

eth1 host 172.16.50.2
eth1 net 0/0 gw 10.255.16.1

Здесь во второй строке для примера нестандартным образом указан маршрут по умолчанию. Стандартно он оформляется в файлах-описаниях интерфейсов и /etc/sysconfig/network. Напоминаем про необходимость включения форвардинга. Это можно сделать не перезагружая систему, дав команду echo "1" > /proc/sys/net/ipv4/ip_forward

Ну и напоследок, не лишней будет настройка на маршрутизаторе межсетевого экрана, подробнее об этом см. раздел Сетевая безопасность.



[12] Все документы HOWTO находятся в пакете howto-html-ru, если он ещё не установлен в вашей системе, установите его.