Linux mini-HOWTO

       

Настройка внутренней сети


"Внутренняя сеть" - это сеть, в которой будут общаться ваши домашние или офисные компьютеры. "Внешняя сеть" - это большой и страшный Интернет по другую сторону вашего Linux-а. В общем и целом внутренняя сеть будет полностью защищена от внешней при помощи Linux, который будет играть роль firewall среднего класса.


Сетевое устройство

Теперь драйверы ваших карт работают, и вы видите eth0 и eth1 в команде ifconfig - теперь наступило время настроить внутреннюю сеть. Я предполагаю, что ваша внутренняя сеть подключена к eth1, а внешнее устройство подключено к eth0.

Ваша внутренняя сеть будет частной, и поэтому мы используем для нее специальный номер сети, зарезервированный для внутренних частных сетей: 192.168.1.0. Это будет "частная сеть класса C" - вы можете хвалиться этим названием перед своими друзьями.

Во-первых, необходимо убедиться в том, что поддержка сети включена. Откройте файл /etc/sysconfig/network и найдите в нем следующие строки (если их нет, создайте):

NETWORKING=yes FORWARD_IPV4=yes

Первая строка указывает, что мы хотим, чтобы сетевые устройства стартовали в процессе загрузки системы. Во второй строке разрешается пересылка IP-пакетов. Эта строка будет нам необходима в процессе настройки маскарадинга в разделе 4.

Замечание для пользователей Redhat версии 6.2: Чтобы система Red Hat 6.2 нормально поддерживала IP-пересылку и маскарадинг, необходимо отредактировать файл /etc/sysctl.conf. Убедитесь в наличии следующих строчек и проставьте в них соответствующие значения:

net.ipv4.ip_forward = 1 net.ipv4.ip_always_defrag = 1

Все настройки сетевых интерфейсов в Red Hat и его производных находятся в файлах в каталоге /etc/sysconfig/network-scripts. Зайдите в этот каталог и создайте в нем файл ifcfg-eth1. В этом файле напишите следующее:

DEVICE=eth1 IPADDR=192.168.1.1 ONBOOT=yes

Таким образом, загрузочный скрипт, отвечающий за настройку сети, будет инициализировать eth1 в процессе загрузки и отведет ему конкретный IP-адрес. Активизируйте свою сеть с учетом этих новых настроек командой /etc/rc.d/init.d/network restart


Сервер DHCP


Сервер DHCP будет автоматически снабжать IP-адресами сетевые устройства компьютеров вашей внутренней сети. Это достаточно удобно, особенно при использовании Notebook-ов: можно просто подключить свою машину к сети, и она сразу автоматически будет настроена. Если вам не нужен DHCP-сервер, то просто пропустите эту главу.

Во-первых, вам надо установить DHCP-сервер. Подключите CD-ROM с вашим дистрибутивом Linux CD и установите RPM-пакет dhcp. Затем откройте файл /etc/dhcpd.conf и напишите в нем следующее (удалив все остальное):

subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.2 192.168.1.60; default-lease-time 86400; max-lease-time 86400; option routers 192.168.1.1; option ip-forwarding off; option broadcast-address 192.168.1.255; option subnet-mask 255.255.255.0; }

Если ваш Linux будет и кэширующим DNS-сервером, то добавьте следующую строку:

option domain-name-servers 192.168.1.1;

Если вы знаете адреса внешних DNS-серверов и не собираетесь использовать свой Linux в качестве DNS-сервера, то добавьте следующую опцию (где x.x.x.x и y.y.y.y - это IP-адреса внешних DNS-серверов):

option domain-name-servers x.x.x.x, y.y.y.y;

Если вы собираетесь использовать Samba-сервер для доступа к файлам Linux с ваших компьютеров с Windows, то добавьте следующие строки, чтобы Linux был WINS-сервером и сервером поиска машин по умолчанию:

option netbios-name-servers 192.168.1.1; option netbios-dd-server 192.168.1.1; option netbios-node-type 8; option netbios-scope "";

Процедура настройка Samba и WINS не входит в этот документ. Если вам нужны подсказки или советы по этому поводу - читайте "SMB HOWTO".

Осталась еще пара шагов. Откройте файл /etc/rc.d/init.d/dhcpd и найдите в нем следующую строку:

/sbin/route add -host 255.255.255.255 dev eth1

DHCP-клиентам Windows необходим специальный широковещательный адрес в DHCP-запросах, и эта команда добавляет данный адрес в настройки TCP/IP вашего Linux. Если вы не нашли эту строку, то добавьте ее. Если же вы ее нашли, то убедитесь в том, что она ссылается на устройство eth1.

Следующий шаг будет состоять в том, чтобы указать в файле /etc/rc.d/init.d/dhcpd использовать по умолчанию устройство eth1. Замените строку:

daemon /usr/sbin/dhcpd





На строку:

daemon /usr/sbin/dhcpd eth1

Итак, вы готовы к запуску DHCP. Сначала запустите DHCP-сервер командой: /etc/rc.d/init.d/dhcpd start.

И последнее - вам надо убедиться в том, что DHCP-сервер загрузится после перезагрузки системы. Некоторые RPM-пакеты с DHCP-сервером не включали директив, которые бы его запускали после перезагрузки системы, поэтому мы подстрахуем себя командой chkconfig dhcpd on.

Эта команда заставляет RedHat указать запуск dhcpd в некоторых уровнях загрузки в каталоге /etc/rc.d. На уровнях 3 и 5 (многопользовательская консоль и многопользовательские X) DHCP-сервер запускается. На уровнях 0, 1 и 6 (отключение, однопользовательский режим и перезагрузка) DHCP-сервер останавливается.

Клиентские компьютеры

Если вы включили DHCP, то настройка ваших клиентских компьютеров будет очень простой - просто разрешите автоконфигурирование при помощи DHCP. В Windows это делается примерно так - откройте "Панель управления", в ней опцию "Сеть". Найдите протокол "TCP/IP" и нажмите на нем "Свойства". Установите галочку около надписи "Получить IP-адрес автоматически", нажмите OK и перезагрузите компьютер.

Перед тем, как вы его перезагрузите, вы можете использовать в Linux следующую команду: tail -f /var/log/messages. Таким образом, вы будете видеть сообщения, поступающие в системный журнал Linux. Если все пойдет хорошо, вы увидите в этом журнале запрос на IP-адрес и ответ DHCP-сервера. Выйти из команды tail -f можно клавишами Ctrl+C.

Если у вас не включен DHCP, то настройка также достаточно проста. Итак, снова откройте "Сеть" в "Панели Управления" и выберите свойства протокола TCP/IP. Вы можете давать вашим компьютерам любые адреса в сети 192.168.1.0, кроме 192.168.1.0 (собственно сама сеть), 192.168.1.255 (широковещательный адрес) и 192.168.1.1 (ваш Linux-сервер). Никогда не давайте двум компьютерам одинаковые IP-адреса. Установите "Шлюз по умолчанию" в 192.168.1.1, чтобы весь ваш исходящий трафик шел через Linux-шлюз.

В "HOWTO: IP-маскарадинг" в главе Configuration Section приведена очень подробная информация о настройке клиентских компьютеров.

Одним словом, чтобы настроить клиентский компьютер, вам необходимо либо включить использование DHCP, либо вручную указать любой адрес в сети 192.168.1.X и шлюз 192.168.1.1. DNS-сервером будет 192.168.1.1 (если вы используете кэширующий DNS-сервер(см. ниже) или укажите адрес сервера DNS, данный вашим провайдером.

Сервер DNS



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

Если вам интересна настройка "полноразмерного" DNS, то вам придется изучить очень много сложной документации. На этот предмет существует DNS HOWTO и книга DNS и BIND.

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

Для установки DNS-сервера, сначала установите RPM-пакет bind, а затем RPM-пакет caching-nameserver. К этому моменту у вас почти все готово.

После стандартной установки кэширующий DNS-сервер будет работать прекрасно, но если вы знаете IP-адрес DNS-сервера вашего провайдера, то вы можете немного ускорить работу сети немного подредактировав файл /etc/named.conf, добавив в него следующую строку после опции directory (x.x.x.x и y.y.y.y - это первичный и вторичный DNS-сервера провайдера):

forwarders { x.x.x.x; y.y.y.y; };

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

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



  1. Проверьте версию пакета bind

    - она должна быть минимум 8.2.2. Проверьте сайты Обновления Red Hat или Обновления Mandrake на наличие новых версий.



  2. Ограничьте доступ к вашему DNS-серверу только с локальной сети, добавив строку allow-query { 192.168.1/24; 127.0.0.1/32; };; в файл /etc/named.conf после строки с опцией forwarders.





  3. Избегайте запуска вашего DNS-сервера в качестве root-а. Если вы запустите ваш DNS-сервер под root-ом, то при его использовании запрашивающему будут даны привилегии администратора. Если же вы запустите сервер под безобидным пользователем, таким как nobody, то вы можете снизить риск недопустимого использования DNS-сервера. Чтобы ваш DNS-сервер запускался с правами пользователя nobody, отредактируйте файл /etc/rc.d/init.d/named, исправив в нем строку daemon named на daemon named -u nobody -g nobody.



Убедитесь в том, что DNS-сервер запустится в процессе загрузки: chkconfig named on. Таким образом, DNS-сервер будет автоматически запускаться на стандартных уровнях (3 и 5).

Итак, теперь вы можете запустить свой DNS-сервер: /etc/rc.d/init.d/named start

start

Проверяем внутреннюю сеть

Пока мы не настроим внешнюю сеть, DNS работать не будет (ему надо связываться с внешними DNS-серверам), но мы можем проверить простое подключение командой ping.

Откройте окно MSDOS на одном из ваших клиентских компьютеров, затем наберите ping 192.168.1.1. Эта команда будет посылать пакеты на ваш Linux через определенные интервалы, а ваш Linux будет посылать их обратно. Если все работает нормально, то вы увидите список со временем хождения пакетов по сети.


Содержание раздела