Сетевое конфигурирование Red Hat
Категория: Сети TCP/IP | Автор: admin | 17-03-2010, 02:13 | Просмотров: 7691

В Red Hat большинство сетевых конфигурационных файлов хранится в каталогах /etc/sysconfig и /etc/sysconfig/network-scripts. Эта операционная система поддерживает протоколы DHCP и РРР, а также IP-фильтрацию. В стеке сетевых протоколов имеется поддержка избирательных подтверждений, которые иногда улучшают производительность TCP в загруженных соединениях.

 

Базовое конфигурирование

 

Сетевое имя компьютера задается в файле /etc/sysconfig/network, где также определяется DNS-домен и стандартный шлюз. К примеру, ниже показано содержимое файла network для компьютера, в котором одна Ethernet-плата и перенаправление IP-пакетов не поддерживается:

NETWORKING=yes

FORWARD_IPV4=false

HOSTNAME=redhat.xor.com

DOMAINNAME=xor.com

GATEWAY=192.108.21.254

GATEWAYDEV=eth0

 

Имя компьютера должно также присутствовать в файле /etc/hostname. В настоящее время, однако, этот файл используется только для обратной совместимости.

Данные, касающиеся конкретных интерфейсов, находятся в файлах /etc/sysconfig/network-scripts/ifcfg-интерфейс, где последний компонент — имя сетевого интерфейса. В этих файлах можно задавать IP-адрес, маску подсети, сетевой и широковещательный адреса каждого интерфейса. Имеется также строка, в которой вы можете указать, должен ли интерфейс активизироваться на этапе начальной загрузки, что особенно полезно в портативных компьютерах.

Обычно в системе присутствуют файлы для Ethernet-платы (eth0) и интерфейса обратной связи (lо). Вот каким будет содержимое файлов ifcfg-eth0 и ifcfg-Io0 для компьютера redhat.xor.com, описанного выше в файле network:

DEVICE=eth0

IPADDR=192.108.21.73

NETMASK=255.255.255.0

NETWORK=192.108.21.0

BROADCAST=192.108.21.255

ONBOOT=yes

 

и

 

DEVICE=lo

IPADDR=127.0.0.1

NETMASK=255.0.0.0

NETWORK=127.0.0.0

BROADCAST=127.255.255.255

ONBOOT=yes

 

В Red Hat имеется ряд удобных сценариев, которые упрощают управление интерфейсами. Сценарии /sbin/ifup и /sbin/ifdown принимают в качестве аргумента имя интерфейса и соответственно подключают или отключают интерфейс. После изменения любого файла в каталоге /etc/sysconfig не забудьте выполнить последовательно команды /sbin/ifdown интерфейс и /sbin/ifup интерфейс. А еще лучше перезагрузить систему, чтобы быть уверенным в отсутствии скрытых побочных эффектов.

Если нужно управлять всеми интерфейсами одновременно, воспользуйтесь сценарием /etc/rc.d/init.d/network, принимающим аргументы start, stop, restart и status. На этапе начальной загрузки этот сценарий вызывается с аргументом start.

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

eth0 net 130.225.204.48 netmask 255.255.255.248 gw 130.225.204.49

ethl net 192.38.8.0 netmask 255.255.255.224 gw 192.38.8.129

 

Первым указывается интерфейс, за ним — аргументы команды route: тип маршрута (net или host), адресуемая сеть, маска для этой сети и, наконец, шлюз для следующего перехода. Ключевое слово gw необходимо. В существующих ядрах Linux не поддерживается параметр metric команды route, но его можно добавить в таблицу маршрутизации, чтобы о нем узнали демоны маршрутизации.

В Red Hat 5.1 и более поздних версий имеется утилита linuxconf. С ее помощью можно выполнять многие административные задачи, включая вопросы, связанные с конфигурированием сети.

 

Примеры конфигураций

 

Следующие команды активизируют сетевой интерфейс и добавляют стандартный маршрут. Обратите внимание на то, что ключевое слово up в строке вызова команды ifconfig не требуется, но ключевое слово gw в строке вызова команды route должно присутствовать:

# ifconfig eth0 192.108.21.73 netmask 255.255.255.0

# route add default gw 192.108.21.254 eth0

 

По умолчанию команда ifconfig в Red Hat выдает множество информации, включая аппаратный адрес, данные канального уровня и различную статистику:

% /sbin/ifconfig

eth0     Link encap: Ethernet    HWaddr 00:C0:FO: IF:57:61

inet addr: 192.108.21.73 Beast:192.108.21. 255

Mask:255:255:255:0

UP BROADCAST RUNNING MULTICAST    MTU :1500 Metric :1

RX pkts:248725 errors :0 dropped:0 overruns :0 frame :0

TX pkts:5219 errors:24 dropped:0 overruns:0 carrier:20

collisions :1280 txqueuelen:100

Interrupt :10 Base addr 0x6500

lo        Link ecnap:Local Loopback

inet addr:127.0.0.1    Mask:255.0.0.0

UP BROADCAST RUNNING MULTICAST    MTU:3924 Metric:l

RX pkts:44 errors :0 dropped:0 overruns :0 frame :0

TX pkts:44 errors: dropped:0 overruns :0 carrier :0

collisions :0 txqueuelen:100

 

Число конфликтов пакетов для Ethernet-платы равно 1280, что составляем 24,5% от числа отправленных пакетов. Это чрезвычайно высокий показатель, который свидетельствует о том, что сеть перегружена и должна быть разделена на несколько подсетей или же следует перейти на коммутируемую архитектуру.

Как и в большинстве систем, команда netstat -nr выводит таблицу маршрутизации, а команда netstat -i отображает информацию о сетевых интерфейсах:

% netstat -nr

Kernel IP routing table

Destination   Gateway  Genmask        Flags  MSS Window irtt    Iface

192.108.21.73 0.0.0.0  255.255.255.255  UH   0    0     0       eth0

192.108.21.0  0.0.0.0  255.255.255.0    U    0    0     0       eth0

127.0.0.0     0.0.0.0  255.0.0.0        U    0    0     0       lo

0.0.0.0       192.108.21.254 0.0.0.0    UG   0    0     0       eth0

 

% netstat -i

Kernel Interface table

Receive Transmit

Iface   MTU   Met   OK      ERR  DRP  OVR  OK    ERR  DRP   OVR   Fig

eth0    1500  0     251684  0    0    0    5710  24   0     0     BRU

lo      3924  0     44      0    0    0    44    0    0     0     LRU

 

Команда netstat -i показывает для каждого интерфейса число обычных пакетов, ошибок, удаленных пакетов и переполнений как во входной, так и в выходной очередях.

 

Конфигурирование DHCP

 

В Red Hat имеется DHCP-сервер dhcpd и два различных DHCP-клиента: pump и dhcpcd (старая разработка университета Карнеги-Меллона, представляющая собой усовершенствованный вариант демона bootpd). Мы рекомендуем отказаться от обоих клиентов и воспользоваться программой, предоставленной организацией ISC (www.isc.org). По нашему опыту, она надежнее. DHCP-сервер Red Hat разработан этой же организацией, поэтому остается только удивляться, почему в данную операционную систему не включен аналогичный клиент. Конфигурирование ISC-клиента рассматривается далее в параграфе 13.15.

Программа pump — это стандартный DHCP-клиент в Red Hat. Он запускается на этапе начальной загрузки из сценария /etc/sysconfig/network-scripts/ifcfg-интерфейс. Например, чтобы задать автоматическое конфигурирование интерфейса eth0 посредством DHCP, нужно отредактировать файл /etc/sysconfig/network-scripts/ifcfg-eth0, указав вместо IP-адреса, маски подсети и других параметров строку

BOOTPROTO=dhcp

 

Если требуется вручную запустить программу pump для управления интерфейсом eth0, воспользуйтесь командой

# pump -i eth0

 

Остановить программу pump можно так:

# pump -r -i eth0

 

Демон dhcpcd, являющийся альтернативой программе pump, практически не используется. Наверное, разработчики Red Hat не удалили его только потому, что боялись нарушить работу существующих приложений. Этот демон конфигурируется посредством файлов в каталоге /etc/dhcpc.

 

Динамическое переконфигурирование и настройка

 

В Linux настройка ядра и сетевых параметров осуществляется не так, как в других операционных системах. Вместо того чтобы предоставить команды для чтения и установки параметров, разработчики Linux поместили "образ" каждой настраиваемой переменной в специальную файловую систему rос. Важные сетевые параметры находятся в каталоге /proc/sys/net/ipv4. Вот их сокращенный перечень:

 

% cd /proc/sys/net/ipv4; ls -F

conf /

icmp_destunreach_rate                      icmp_echo_ignore_all

icmp_echo_ignore_broadcasts                icmp_echoreply_rate

icmp_ignore_bogus_error_respons es        icmp_paramprob_rate

icmp_timeexceed_rate                       icmp_max_memberships

ip_always_defrag                          ip_autoconfig

ip_default_ttl                            ip_dynaddr

ip_forward                                ip_local_port_range

ip_mask_debug                             ip_no_pmtu_disc

ipfrag_high_thresh                        ipfrag_low_thresh

ipfrag_time                               neigh/

route/                                    tcp_fin_timeout

tcp_keepalive_probes                      tcp_keepalive_time

tcp_max_ka_probes                         tcp_max_syn_backlog

tcp_retrans_collapse                      tcp_retriesl

tcp_retries2                              tcp_rfcl337

tcp_sack                                  tcp_stdurg

tcp_syn_retries                           tcp_syncookies

tcp_timestamps                            tcp_window_scaling

 

 

Многие переменные, в именах которых присутствуют компоненты "rate" и "max", используются для пресечения атак вида “отказ в обслуживании” В подкаталоге conf хранятся переменные, устанавливаемые для каждого интерфейса по отдельности. Там есть подкаталоги all и defaults, а также подкаталоги для всех интерфейсов (включая интерфейс обратной связи). В каждом подкаталоге содержится одинаковый набор файлов:

% ls -F

accept_redirects     accept_source_route   bootp_relay

forwarding           log_martians          mc_forwarding

proxy_arp            rp_filter             secure_redirects

send_redirects       shared_media

 

Изменения, производимые в подкаталоге all, отражаются на всех интерфейсах. Но если та же самая переменная меняется, скажем, в подкаталоге eth0, то это затронет только соответствующий интерфейс. В подкаталоге defaults содержатся стандартные значения переменных на момент инсталляции системы.

Чтобы узнать значение переменной, воспользуйтесь командой cat. Изменить это значение можно с помощью команды echo, перенаправив ее результаты в соответствующий файл. Например, команда

% cat icmp_echo_ignore_broadcasts

О

 

показывает, что текущее значение переменной icmp_echo_ignore_broadcasts равно 0, т.е. широковещательные ping-пакеты допустимы. Чтобы сделать ее равной 1 (и тем самым защитить систему от атак типа "smurf"). введите

% sudo csh -с "echo 1 > icmp_echo_ignore_broadcasts"
 

 

В документе /usr/src/linux/Documentation/proc.txt, написанном разработчиками SuSE Linux, приведены хорошие примеры настройки ядра средствами файловой системы rос. В нем объясняется, что означает та или иная переменная, иногда указывается, какие значения лучше всего задавать.

 

Безопасность, брандмауэры, фильтрация и система NAT

 

В табл. 13.21 описано, как в Red Hat реализован ряд технологий, касающихся безопасной работы в сети. О них кратко рассказывалось в параграфе 13.9.

Технология

Узел

Шлюз

Управляющий файл

(в каталоге /proc/sys/net)

Перенаправление IP-пакетов

отключено

включено

ipv4/ip_forward для всей системы ipv4/conf/интерфейс/forwarding

для каждого интерфейса1

Переадресуюшие ICMP-пакеты

принимаются

игнорируются

ipv4/conf/ интерфейс /accept_re-directs

Направленная маршрутизация

не разрешена

разрешена

ipv4/conf/интерфейс/accept_source_route

Широковещательные ping-пакеты

принимаются

принимаются

ipv4/ip_echo_ignore_broadcasts

1 В качестве параметра интерфейс может быть задано имя конкретного интерфейса или ключевое слово all.

 

Чтобы сделать изменение любого из параметров постоянным (точнее, чтобы переустанавливать его всякий раз при перезагрузке системы), добавьте соответствующую команду echo в сценарий, выполняющийся в процессе начальной загрузки.

В Red Hat имеется неплохая программа IP-фильтрации. Обычно мы не рекомендуем использовать компьютер на базе UNIX (или Windows NT) в качестве брандмауэра, поскольку в целом эти операционные системы не обеспечивают надлежащий уровень безопасности. Но уж лучше ставить программный брандмауэр, чем вообще ничего, если речь идет о домашнем компьютере или организации, бюджет которой не предусматривает покупку специализированного оборудования (например, системы Cisco PIX). Именно поэтому мы подробно описываем программу ipchains.

Устанавливая Linux-систему в качестве брандмауэра, убедитесь, по крайней мере, что она включает самые последние обновления и "заплаты", касающиеся брешей в системе защиты. В главе 21 описаны многие вопросы, которые обязательно следует учесть, чтобы сделать систему максимально безопасной. Компьютер, играющий роль брандмауэра, — идеальное место для практической проверки рекомендаций, изложенных в главе по безопасности. (В параграфе 21.9 даны сведения, касающиеся брандмауэров в целом. Читателям, не знакомым с концепцией брандмауэра, советуем предварительно прочитать приведенный там материал.)

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

По умолчанию существуют три цепочки: input, output и forward. Можно создавать и свои собственные цепочки. Каждый пакет, обрабатываемый ядром, поступает на проверку лишь в одну стандартную цепочку. В цепочке forward проверяются все пакеты, которые поступают в один интерфейс и перенаправляются в другой. В цепочке input обрабатываются пакеты, поступающие из внешней сети и адресованные локальному компьютеру. И наконец, в цепочке output проверяются только пакеты, посланные с локального узла. Для каждого сетевого интерфейса существуют свои копии этих цепочек, поэтому для разных интерфейсов можно назначать свои  критерии обработки пакетов.

Наиболее распространенные директивы — ACCEPT, DENY, REJECT, MASQ, REDIRECT и RETURN. Директива ACCEPT разрешает пакету следовать своим маршрутом. Директивы DENY и REJECT запрещают пропускать пакет, но первая приводит к "безмолвному" удалению пакета, а вторая — к выдаче ICMP-сообщения об ошибке.

Директива MASQ включает механизм IP-маскирования (на жаргоне Linux это синоним системы NAT). Чтобы этот механизм заработал, нужно задать переменную FORWARD_IPV4 в файле network равной true и скомпилировать ядро с установленным параметром CONFIG_IP_MASQUERADE.

Директива REDIRECT перенаправляет пакеты прокси-серверу. Чтобы она имела силу, нужно скомпилировать ядро с установленным параметром CONFIG_IP_TRANSPARENT_PROXY. Эта особенность удобна, когда весь трафик Web-узла должен проходить через кэширующую программу, такую как Squid. Директива RETURN объявляет конец пользовательской цепочки.

В Red Hat брандмауэр обычно реализуется в виде последовательности команд ipchains, содержащихся в стартовом сценарии rc.firewall. Отдельные команды ipchains, как правило, имеют один из двух форматов:

ipchains -F имя_цепочки

ipchains имя_цепочки -i интерфейс -j директива

В первом случае из цепочки удаляются все предыдущие правила. Во втором случае заданное правило добавляется к цепочке. Опции -i и -j обязательны для каждого добавляемого правила. Программа ipchains поддерживает также ряд других опций (табл. 13.22).

Таблица 13.22. Дополнительные опции программы ipchains

Опция

Назначение

протокол

Соответствие протоколу: tcp, udp или icmp

-s исходный_адрес

Соответствие исходному IP-адресу узла или сети (допускается нотация CIDR)

-d целевой_адрес

Соответствие целевому IP-адресу узла или сети

--sport номер_порта

Соответствие номеру исходного порта (обратите внимание на двойной дефис)

--dport номер_порта

Соответствие номеру целевого порта (обратите внимание на двойной дефис)

--icmp_type тип

Соответствие типу ICMP-сообщения (обратите внимание на двойной дефис)

-l

Регистрация пакетов в системе Syslog (средство "kernel", приоритет "info")

-y

Соответствие только новым TCP-запросам на установление соединения (проверяются флаги заголовка пакета)

!

Инверсия смысла опции

 

Ниже приведен ряд полных примеров. Мы предполагаем, что интерфейс ррр0 подключен к Internet, а интерфейс eth0 — к локальной сети. Первый набор правил задает прием всех пакетов из локальной сети и удаление тех пакетов, которые поступают от интерфейса ррр0 и исходные адреса которых попадают в диапазон частных адресов (система NAT). Эти пакеты должны также удаляться в цепочке output, так как не нужно, чтобы они проникали в Internet.

ipchains -A input -i lo -j ACCEPT

ipchains -A input -i eth0 -j ACCEPT

ipchains -A input -i ppp0 -s 192.168.0.0/16 -j DENY

ipchains -A input -i ppp0 -s 172.16.0.0/12 -j DENY

ipchains -A input -i ppp0 -s 10.0.0.0/8 -j DENY

 

Чтобы блокировать доступ в Internet через программу telnet (порт 23), но разрешить почтовые соединения и систему SSH (порты 25 и 22 соответственно), необходимо установить следующие правила:

ipchains -A input -i ррр0 -р tcp --dport 23 -j DENY

ipchains -A input -i ppp0 -p tcp —dport 23 -j ACCEPT

ipchains -A input -i ppp0 -p tcp —dport 23 -j ACCEPT

 

Цепочка input заканчивается правилом, запрещающим все пакеты, которые не были разрешены явным образом. Интересно также узнать, кто пытается проникнуть в систему из Internet, поэтому добавим флаг -l после директивы DENY, чтобы обеспечить регистрацию пакетов, не прошедших данную проверку:

ipchains -A input -i ррр0 -j DENY -l

 

Наконец, зададим IP-маскирование (система NAT), чтобы не раскрывать частные адреса, применяемые в локальной сети 192.168.1.0/24:

ipchains -A forward -i ррр0 -s 192.168.1.0/24 -d ! 192.168.1.0/24 -j MASQ

 

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

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

Когда привыкаешь к рассмотренной системе записи, программа ipchains начинает казаться разумным способом описания работы брандмауэра, однако привлечение сюда же системы NAT выглядит не очень логичным. Дополнительные примеры брандмауэров, основанных на программе ipchains, можно найти по адресу www.wiley.com/compbooks/sonnenreich.

По слухам, программа ipchains будет удалена из ядра Linux после версии 2.2 и заменена новым механизмом фильтрации.

 

Конфигурация PPP

 

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

 

Особенности сетевого конфигурирования

 

В отличие от большинства систем, Linux обращает внимание на флаги поля TOS (Type of Service — тип обслуживания) IP-пакета и быстрее обслуживает пакеты, помеченные как интерактивные (минимальная задержка). Восхитительная возможность! К сожалению, умники из Microsoft сделала все для того, чтобы нам пришлось от нее отказаться.

Все пакеты, поступающие от Windows 95, 98, NT и 2000, помечаются как интерактивные независимо от их назначения. UNIX-системы этого не делают. Если Linux-шлюз обслуживает смешанную сеть, в которой используется как UNIX, так и Windows, Windows-пакеты всегда будут иметь приоритет. В то же время в однородной UNIX-среде производительность заметно повышается

Отменить сортировку пакетов на основании поля TOS можно во время компиляции ядра Linux. Нужно просто отключить опцию "IP: use TOS value as routing key".

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

Linux позволяет менять МАС-адреса сетевых интерфейсов определенных типов. Мы считаем это ошибкой и не рекомендуем делать ничего подобного.



 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page