Linux network инструкция администратора

         

Модем не соединяется


Если модем не указывает, что DTR-линия была установлена, когда uucico вызывает удаленный сайт, возможно, Вы задали неправильное устройство для uucico. Если модем распознает DTR, сверьтесь с программой терминала, которой Вы можете записывать данные в модем. Если она работает, включите отображение на экране командой \E в начале скрипта модема. Если это не отображает команды в скрипте модема, проверьте, правильно ли настроен модем. Если Вы видите копии команд, проверьте, отключили ли Вы ответы модема, или устанавливаете их к кодам числа. Проверьте правильность скрипта модема. Не забудьте, что Вы должны записать две наклонных черты влево, чтобы послать одну такую черту модему.


Модем не соединяется

Если модем не указывает, что DTR-линия была установлена, когда uucico вызывает удаленный сайт, возможно, Вы задали неправильное устройство для uucico. Если модем распознает DTR, сверьтесь с программой терминала, которой Вы можете записывать данные в модем. Если она работает, включите отображение на экране командой \E в начале скрипта модема. Если это не отображает команды в скрипте модема, проверьте, правильно ли настроен модем. Если Вы видите копии команд, проверьте, отключили ли Вы ответы модема, или устанавливаете их к кодам числа. Проверьте правильность скрипта модема. Не забудьте, что Вы должны записать две наклонных черты влево, чтобы послать одну такую черту модему.



Модем пробует соединятся, но не может


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


Модем пробует соединятся, но не может

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



Монтирование файловой системы


Файловая система proc (или

procfs) обычно монтируется во время загрузки в

/proc. Самый лучший метод состoит в том, чтобы добавить следующую строку в файл /etc/fstab:

# procfs mount point: none /proc proc defaults

Затем надо выполнить mount /proc в скрипте /etc/rc.

Сейчас procfs имеется в большинство ядер по умолчанию. Если procfs в Вашем ядре нет, Вы получите сообщение вида: mount: fs type procfs not supported by kernel. Придется перестроить с ответом “yes” на вопрос о поддержке procfs.





Монтирование тома NFS Монтирование


Параметр nfs_volume имеет вид remote_host:remote_dir. Он указаывает определенную файловую систему NFS, причем можно опустить параметр -t nfs.

Имеется ряд дополнительных опций, которые Вы можете определить в команде mount. Они могут быть заданы переключателем -o в командной строке или в области опций файла /etc/fstab. В обоих случаях составные опции отделяются друг от друга запятыми. Опции, определенные в командной строке, всегда отменяют те, что были заданы в файле fstab.

Типовая запись в /etc/fstab могла бы быть такой:

# volume mount point type options news:/var/spool/news /var/spool/news nfs timeo=14,intr

Этот значение затем может быть использовано при монтировании:

# mount news:/var/spool/news

В отсутствии записи в fstab, NFS устанавливает большинство параметров mount по умолчанию. Например, предположим, что Вы монтируете home-каталоги Ваших пользователей с машины moonshot, которая использует заданный по умолчанию размер блока, равный 4k, для операции чтения-записи. Вы могли бы уменьшить размер блока до 2k, чтобы подойти под размер Linux-пакетов, введя следующую команду:

# mount moonshot:/home /home -o rsize=8192,wsize=8192

Список всех допустимых опций есть на man-странице по

nfs(5). Ниже приведен список наиболее популярных опций:

rsize=n и wsize=n

Точно определяют размер пакетов, используемый NFS-клиентами при чтении и записи запросов, соответственно. В настоящее время они определены по умолчанию в зависимости от версии ядра, но обычно это 1024 байта, из-за предела на размер UDP-пакета.

timeo=n

Устанавливает время (в десятых долях секунды), которое NFS-клиент будет ждать запрос, чтобы завершить работу. Значение по умолчанию 7 (0.7 секунды). Что произойдет после окончания времени ожидания зависит от того, используете Вы опцию hard или

soft.

hard

Отмечает этот том как hard-смонтированный. Задано по умолчанию. Эта опция предписывает серверу выдать сообщение на консоль при окончании времени ожидания и продолжать попытки смонтировать том.

soft




Противоположность hard. В случае окончания времени ожидания процесс, который пытается выполнить действие с файловой системой, получит ошибку ввода-вывода.

intr

Разрешает прервать обращение к NFS. Удобно в случае недоступности сервера.

Кроме rsize и wsize, все эти опции обращаются к клиенту, если сервер стал временно недостижим. Они работают вместе следующим способом: всякий раз, когда клиент посылает запрос к NFS-серверу, он ожидает, что операция закончится после заданного интервала времени (точно установленного в опции блокировки по времени, timeout). Если никакого подтверждения не получено в этот промежуток времени, то появится так называемая незначительная остановка по времени (minor timeout), и операция повторится, но уже с интервалом блокировки по времени вдвое большим. После достижения максимальной блокировки по времени (60 секунд), происходит глобальная блокировка по времени (major timeout). Вот тут-то и срабатывают опции hard или soft .

По умолчанию, глобальная блокировка по времени заставит клиента напечатать сообщение на консоль и начать все снова. В принципе это может продолжаться вечно. Значения, которые упрямо повторяют операцию до тех пор, пока сервер не становится доступным, называются hard-mounted. В противоположность им значения soft-mounted генерируют ошибку ввода-вывода для процесса всякий раз, когда происходит глобальная блокировка по времени. Из-за того, что write-behind вводится буферным кэшем, это условие ошибки не распространяется непосредственно на процесс прежде, чем он вызовет функцию write в следующий раз. Дело в том, что иначе программа никогда не сможет убедиться в том, что операция записи в ресурс, помеченный как soft-mounted, имела место вообще.

Поставили ли Вы hard или soft-mount значение, это не только вопрос вкуса, но также и то, что Вы должны сделать с той информацией, которую хотите получить от этого значения. Например, если Вы монтируете Ваши Х-программы NFS, Вы конечно не хотели бы, чтобы ваш X-сеанс рухнул только потому, что кто-то свалил сеть, запустив семь копий xv в одно и тоже время, или скажем, вытащив Ethernet-разъем. Используя hard-mounting, Вы удостоверитесь в том, что компьютер будет ждать, пока не появится возможность заново восстановить контакт с nfs-сервером. С другой стороны, некритические данные типа новостей или FTP-архив могут быть soft-mounted, так что это не повесит сеанс в случае, если удаленная машина должна стать временно недосягаемой или просто выключенной. Если сетевая связь с сервером медленная или проходит через программу маршрутизации, то Вы можете также увеличить начальную блокировку по времени, используя опцию timeo или значение hard-mount, но разрешите прерывание вызова NFS, так чтобы Вы могли прервать любое действие с файлами.



Hard- mount представляют проблему, потому что, по умолчанию, операции с файлами не прерываются. Таким образом, если процесс пытается, например, записать файл на удаленной машине, а она недоступна, программа пользователя висит, а пользователь бегает вокруг нее, не в состоянии прервать процесс записи. Если Вы используете опцию intr при hard mount, сигналы процессу прервут NFS-вызов, так что пользователь все же сможет продолжать работу.

Обычно daemon rpc.mountd будет следить, какие каталоги какими хостами были смонтированы. Эта информация может быть отображена при использовании программы showmount, которая также включена в пакет сервера NFS:

# showmount -e moonshot

Export list for localhost: /home # showmount -d moonshot

Directories on localhost: /home # showmount -a moonshot

All mount points on localhost: localhost:/home


Монтирование удаленных томов NetWare


В среде NFS мы использовали бы команду mount в Linux, чтобы смонтировать удаленную файловую систему. К сожалению NCP имеет уникальные требования, которые делают непрактичным встраивание в нормальный mount. Linux имеет команду ncpmount, которую мы используем вместо этого. Команда ncpmount одно из инструментальных средств в пакете ncpfs, который доступен в откомпилированном виде или в исходных кодах с ftp.gwdg.de/pub/linux/misc/ncpfs. На момент написания книги текущей была версия 2.2.0.

Прежде, чем Вы сможете монтировать тома NetWare, Вы должны гарантировать, что сетевой интерфейс IPX конфигурирован правильно (как описано ранее). Затем, Вы должны знать детали входа в систему относительно сервера NetWare: имя пользователя и пароль. Наконец, Вы должны знать, какой том и в какой локальный каталог надо смонтировать.



Национальный набор символов


Имелись предложения исправить стандарт RFC-822, чтобы поддерживать различные типы сообщений: простые текстовые, двоичные данные, файлы Postscript и т.д. Набор стандартов и RFC, покрывающий эти аспекты, обычно упоминается как MIME, или многоцелевые расширения почты Internet. Между прочим, это также позволяет получателю узнать, использовался ли набор символов, отличный от стандартного ASCII, при написании сообщения. Это до некоторой степени обеспечивается elm.

Национальный набор символов

Имелись предложения исправить стандарт RFC-822, чтобы поддерживать различные типы сообщений: простые текстовые, двоичные данные, файлы Postscript и т.д. Набор стандартов и RFC, покрывающий эти аспекты, обычно упоминается как MIME, или многоцелевые расширения почты Internet. Между прочим, это также позволяет получателю узнать, использовался ли набор символов, отличный от стандартного ASCII, при написании сообщения. Это до некоторой степени обеспечивается elm.

Набор символов, используемый Linux, чтобы представить символы, обычно упоминается как ISO-8859-1, что является именем стандарта, которому он соответствует. Это также известно как Latin-1. В России принят кириллический стандарт KOI-8R. Любые символы в сообщении из этого набора символов должны иметь следующую строку в заголовке:

Content-Type: text/plain; charset=iso-8859-1

Для кириллицы это будет:

Content-Type: text/plain; charset=KOI-8R

Система получателя должна распознать это поле и принять соответствующие меры при отображении сообщения. Значение по умолчанию для текстовых (text/plain) сообщений us-ascii.

.

Чтобы отображать сообщения с набором символов, отличным от ASCII, elm должен знать, как печатать эти символы. По умолчанию, когда elm получает сообщение с полем charset, отличным от us-ascii, она пробует отображать сообщение, используя команду metamail. Сообщения, которые требуют использования metamail, отображаются с меткой M в самом первом столбце в экране краткого обзора.

Так как набор символов Linux ISO-8859-1, вызов metamail не требуется для отображения сообщения, использующего этот набор символов. Если elm знает, что дисплей понимает ISO-8859-1, она не будет использовать metamail, а отобразит сообщение непосредственно. Это может быть выполнено установкой следующей опции в глобальном файле elm.rc:




displaycharset = iso-8859-1

Обратите внимание, что Вы должны установить эти опции даже, когда Вы никогда не собираетесь посылать или получать сообщения, которые фактически содержат символы, отличные от ASCII. Это потому, что люди, которые посылают такие сообщения обычно конфигурируют их своей почтовой программой, чтобы поместить соответствующее поле Content-Type: в заголовке письма. Для России следует задать поддержку кириллицы:

displaycharset = KOI-8R

Однако, установки этой опции в elm.rc

недостаточно. Проблема состоит в том, что при отображении сообщения, elm вызывает библиотечную функцию для каждого символа, чтобы определить, является ли он печатаемым или нет. По умолчанию, эта функция распознает только символы ASCII, и отображает все другие символы как ^?. Вы можете преодолеть это, устанавливая переменную среды LC_CTYPE как ISO-8859-1. Это сообщает, что библиотека приняла символы Latin-1 как печатаемые. Для России надо задать LC_CTYPE как KOI-8R. Поддержка этой и ряда других возможностей появилась в стандартной библиотеке Linux, начиная с библиотек версии 4.5.8.

При посылке сообщений, которые содержат специальные символы из ISO-8859-1, Вы должны удостовериться, что установлены еще две переменные в файле elm.rc:

charset = iso-8859-1 textencoding = 8bit

Это заставит elm сообщить набор символов как ISO-8859-1 в заголовке почты и посылать это письмо как 8 битовое (по умолчанию все символы имеют 7 бит). Для России это очень важно, поскольку по умолчанию elm срезает верхний (восьмой) бит каждого символа, а для кириллицы этого допустить нельзя!

Конечно, любая из этих опций может также быть установлена в частном файле elmrcc вместо глобального.


Написание главных (Master) файлов


Примеры 6-10, 6-11, 6-12 и 6-13 дают типовые файлы для сервера имен сети brewery, размещенного на машине vlager. Это довольно простая конфигурация для одиночной локальной сети.


Написание главных (Master) файлов

Примеры 6-10, 6-11, 6-12 и 6-13 дают типовые файлы для сервера имен сети brewery, размещенного на машине vlager. Это довольно простая конфигурация для одиночной локальной сети.

Файл кэша named.ca в примере 6-10

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



Настройка elm elm является сокращением


Теоретически, Вы можете выполнять неконфигурированный

elm, и все работает хорошо, если Вы очень удачливы. Но имеются несколько опций, которые должны быть установлены.

При запуске elm читает набор переменных конфигурации из файла elm.rc в /etc/elm. Затем, она будет пытаться читать файл .elm/elmrc в Вашем домашнем каталоге. Вы обычно не должны менять этот файл самостоятельно. Он создается, когда Вы выбираете "Save new options" в меню опций elm.

Набор опций для частного файла elmrc также доступен в глобальном файле elm.rc. Большинство установок в Вашем частном файле elmrc меняют соответствующие параметры из глобального файла.



Настройка интерфейса для IP После


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

ifconfig interface ip-address

Эта команда связывает адрес ip-address

с интерфейсом interface и активизирует его. Все остальные параметры устанавливаются по умолчанию. Например, маска подсети по умолчанию получена из сетевого класса IP-адреса (255.255.0.0 для класса B). ifconfig описан более подробно в конце этой главы.

route позволяет Вам добавлять или удалять маршруты из таблицы маршрутизации. Это может быть использовано так:

route [add|del] [-net|-host] target [if]

Аргументы add и del

определяют добавлять или удалять маршрут target. Аргументы -net и -host определяют тип маршрута: к сети или к компьютеру (второй вариант принимается по умолчанию). Аргумент if определяет, к какому сетевому интерфейсу относится команда.



Настройка IP Accounting Поскольку


Общий синтаксис для IP accounting с ipfwadm:

# ipfwadm -A [direction] [command] [parameters]

Появился новый параметр direction. Он принимает значения in, out или both. Все значения считаются с точки зрения linux-машины, так что in задает входящий трафик, out задает исходящий трафик, а

both оба типа сразу.

Общий синтаксис для ipchains и

iptables:

# ipchains -A chain rule-specification

# iptables -A chain rule-specification

Команды ipchains и iptables

позволяют Вам определять направление в стиле, больше похожем на определения правил. IP Firewall Chains не позволяет настроить правила для обоих направлений сразу, но позволяет настроить правила в наборе forward, чего старая реализация не умела.

Команды очень похожи на свои аналоги для правил firewall за исключением того, что стратегии здесь не применяются. Мы можем добавлять, вставлять, удалять и просматривать список правил учета. В случае

ipchains и iptables, все имеющие силу правила считаются правилами для учета, и любая команда, которая не определяет опцию -j, выполняет только учет.

Параметры спецификации правила для учета IP такие же, как и для IP firewall.



Настройка IP Masquerade Если Вы


Правила masquerade представляют собой специальный класс правил фильтрации. Вы можете обеспечить masquerade только пакетов, которые получены на одном интерфейсе и будут направлены другому интерфейсу. Чтобы настроить masquerade надо создать правило, очень похожее на правило пересылки firewall, но со специальными параметрами, которые сообщают ядру, что надо использовать masquerade пакетов. Команда ipfwadm использует опцию -m, ipchains использует -j MASQ, а в iptables есть опция -j MASQUERADE, чтобы указать, что пакеты, соответствующие спецификации правила, должны быть masqueraded.

Давайте рассмотрим пример. Допустим, у студента университета Groucho Marx дома есть несколько машин, объединенных в маленькую сеточку Ethernet. Она использует один из зарезервированных частных сетевых адресов. Сеть доступна и другим студентам, которые имеют интерес в использовании Internet. Для доступа в Internet используется простое соединение dial-up PPP.

Студенты настраивают Linux-машину для поддержки связи dial-up и работы в качестве маршрутизатора сети. Ее IP-адрес при модемном соединении не важен. Linux-маршрутизатор конфигурируется с поддержкой IP masquerade и использует один из частных сетевых адресов для локальной сети:

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

Чтобы запустить эту конфигурацию с помощью ipfwadm, надо только скомандовать:

# ipfwadm -F -p deny

# ipfwadm -F -a accept -m -S 192.168.1.0/24 -D 0/0

или с ipchains:

# ipchains -P forward -j deny

# ipchains -A forward -s 192.168.1.0/24 -d 0/0 -j MASQ

или с iptables:

# iptables -t nat -P POSTROUTING DROP

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

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




Чтобы посмотреть созданные правила masquerade, используйте параметр -l команды ipfwadm.

Чтобы отобразить только что созданные правила, введите:
# ipfwadm -F -l -e

вывод будет напоминать следующее:
# ipfwadm -F -l -e

IP firewall forward rules, default policy: accept pkts bytes type prot opt tosa tosx ifname ifaddress 0 0 acc/m all ---- 0xFF 0x00 any any

Здесь /m указывает, что это правило masquerade.

Посмотреть правила командой ipchains можно с опцией -L. Аналогично предыдущему примеру с ipchains:
# ipchains -L

Chain input (policy ACCEPT): Chain forward (policy ACCEPT): target prot opt source destination ports MASQ all ------ 192.168.1.0/24 anywhere n/a

Chain output (policy ACCEPT):

Все правила с адресатом MASQ являются правилами masquerade.

Наконец, то же самое можно сделать командой iptables :
# iptables -t nat -L

Chain PREROUTING (policy ACCEPT) target prot opt source destination

Chain POSTROUTING (policy DROP) target prot opt source destination MASQUERADE all -- anywhere anywhere MASQUERADE

Chain OUTPUT (policy ACCEPT) target prot opt source destination

Правила masquerade появляются с адресатом MASQUERADE .


Настройка ядра для IP Accounting


Чтобы активизировать Linux IP accounting, Вы должны сначала проверить сконфигурировано ли Ваше ядро Linux для этого. Проверьте, существует ли файл /proc/net/ip_acct. Если да, Ваше ядро уже поддерживает IP accounting. Если нет, придется построить новое ядро, гарантируя, что Вы отвечаете “Y” для следующих опций (в версиях 2.0 и 2.2 ядра):

Networking options ---> [*] Network firewalls [*] TCP/IP networking [*] IP: accounting

или в версии 2.4 ядра:

Networking options ---> [*] Network packet filtering (replaces ipchains)



Настройка ядра для IP Firewall


Ядро Linux надо настроить на поддержку IP firewall. Для этого нужно просто указать параметры при настройке ядра, например, командой

make menuconfig. Подробно настройка ядра описана в главе 3. В ядрах 2.2 надо выбрать следующие опции:

Networking options ---> [*] Network firewalls [*] TCP/IP networking [*] IP: firewalling [*] IP: firewall packet logging

Настройка ядра для IP Firewall

Ядро Linux надо настроить на поддержку IP firewall. Для этого нужно просто указать параметры при настройке ядра, например, командой

make menuconfig. Подробно настройка ядра описана в главе 3. В ядрах 2.2 надо выбрать следующие опции:

Networking options ---> [*] Network firewalls [*] TCP/IP networking [*] IP: firewalling [*] IP: firewall packet logging



В ядрах серий 2.4.0 и старше надо выбрать гораздо больше опций:

Networking options ---> [*] Network packet filtering (replaces ipchains) IP: Netfilter Configuration ---> . Userspace queueing via NETLINK (EXPERIMENTAL) IP tables support (required for filtering/masq/NAT) limit match support MAC address match support netfilter MARK match support Multiple port match support TOS match support Connection state match support Unclean match support (EXPERIMENTAL) Owner match support (EXPERIMENTAL) Packet filtering REJECT target support MIRROR target support (EXPERIMENTAL) Packet mangling TOS target support MARK target support LOG target support ipchains (2.2-style) support ipfwadm (2.0-style) support



Настройка ядра для IP Masquerade


Ядра ряда 2.4 больше не предлагают поддержку IP masquerade как опцию при сборке ядра. Вместо этого, Вы должны выбрать фильтрацию сетевых пакетов:

Networking options ---> [M] Network packet filtering (replaces ipchains)

В ядрах серии 2.2 будет создан ряд специфических для протоколов модулей в течение сборки ядра. Некоторые протоколы начинаются с исходящего запроса на одном порте, а затем ожидают входящее подключение на другом. Обычно они не могут быть masqueraded, так как нет способа логически связать оба соединения без работы напрямую с пакетами и понимания логики протокола. Модули делают именно это: они фактически смотрят внутрь пакетов и позволяют masquerading работать для поддержанных протоколов. Такие модули называют также модулями-помощниками. Поддерживаемые протоколы:

Модуль

Протокол

Вы должны загрузить эти модули вручную, используя команду insmod, чтобы выполнить их. Обратите внимание, что эти модули не могут быть загружены демоном kerneld. Каждый из модулей принимает параметр определяющий, на каких портах он будет слушать. Для модуля RealAudio Вы могли бы использовать:

ip_masq_ftp
FTP
ip_masq_irc
IRC
ip_masq_raudio
RealAudio
ip_masq_cuseeme
CU-See-Me
ip_masq_vdolive
For VDO Live
ip_masq_quake
IdSoftware's Quake

# insmod ip_masq_raudio.o ports=7070,7071,7072

Порты, которые Вы должны определить, зависят от протокола. IP masquerade mini-HOWTO (автор: Ambrose Au) объясняет подробности о модулях IP masquerade и как конфигурировать их.

Пакет netfilter включает модули, которые выполняют подобные функции. Например, чтобы обеспечить работу сеансов FTP, используйте модули ip_conntrack_ftp и

ip_nat_ftp.o.



Настройка ядра для IPX и NCPFS


Следующие параметры должны быть выбраны, если вы хотите иметь в Linux поддержку протокола IPX:

General setup ---> [*] Networking support

Networking options ---> The IPX protocol

Network device support ---> [*] Ethernet (10 or 100Mbit) ... and appropriate Ethernet device drivers

Если вы хотите, чтобы Linux поддерживала файловую систему NCP, чтобы монтировать удаленные тома NetWare, вы должны дополнительно выбрать параметры:

Filesystems ---> [*] /proc filesystem support NCP filesystem support (to mount NetWare volumes)

Когда вы откомпилируете и установите ваше новое ядро, поддержка протокола IPX и файловой системы NCP будет доступна.



Настройка ядра Все дистрибутивы


В любом случае при работе с Linux-системой Вы должны быть знакомы с формированием ядра. Это не так сложно! В данном руководстве рассмотрены только параметры конфигурации, которые воздействуют на работу с сетями.

Очень важна версия ядра. Ядра Linux нумеруются по следущей схеме: 2.2.14. Первая цифра показывает

старший номер версии. Эта цифра изменяется, когда вносятся значительные изменения. Старший номер версии сменился с 1 на 2, когда ядро было перенесено на другие платформы (не Intel). Второе число определяет младший номер версии. Разработчики Linux договорились о том, что четный младший номер версии показывает production (готовую) или stable (стабильную) версию ядра, а нечетный показывает development (разрабатываемую) или unstable (нестабильную) версию. Вы должны использовать на машине, которая является важной, стабильные ядра потому, что они надежны настолько, насколько вообще может быть надежна программа. Можно использовать нестабильные ядра, если нужны некоторые экспериментальные возможности Linux, но они не отлажены до конца. Они надежней, чем Windows, но все же ниже того минимума, который позволителен в Linux. Третье число показывает номер редакции версии ядра. Система развивается, в ней устраняются небольшие ошибки, появляются новые возможности, что и отражается этим номером.

При запуске программы make menuconfig Вы получите текстовое меню с опциями настройки ядра. На вопрос о поддержке сетей TCP/IP надо ответить "y" для ее включения.



Настройка mgetty Daemon


mgetty daemon доступен в исходных кодах с ftp://alpha.greenie.net/pub/mgetty/source и почти во всех дистрибутивах Linux. Демон mgetty

отличается от большинства других версий getty, которые были разработаны для Hayes-совместимых модемов. Он поддерживает прямые подключения терминала, но лучше всего подходит для dialup прикладных программ. Вместо DCD-линии для определения входного подключения, эта версия слушает сообщение RING, генерируемое современными модемами, когда они обнаруживают входящее обращение и не сконфигурированы для автоответа.

Настройка mgetty Daemon

mgetty daemon доступен в исходных кодах с ftp://alpha.greenie.net/pub/mgetty/source и почти во всех дистрибутивах Linux. Демон mgetty

отличается от большинства других версий getty, которые были разработаны для Hayes-совместимых модемов. Он поддерживает прямые подключения терминала, но лучше всего подходит для dialup прикладных программ. Вместо DCD-линии для определения входного подключения, эта версия слушает сообщение RING, генерируемое современными модемами, когда они обнаруживают входящее обращение и не сконфигурированы для автоответа.

Главный исполняемый модуль назван /usr/sbin/mgetty , а основной файл настройки

/etc/mgetty/mgetty.config. Имеется ряд других программ и файлов конфигурации, которые покрывают другие свойства mgetty .

Для большинства инсталляций настройка сводится к правке /etc/mgetty/mgetty.config и добавлении соответствующих записей в файл /etc/inittab, чтобы выполнять mgetty автоматически.

Пример 4-6 показывает очень простой файл настройки mgetty. Этот пример определяет два последовательных устройства. Первое,

/dev/ttyS0, поддерживает Hayes-модем со скоростью 38,400 bps. Второе, /dev/ttyS0, поддерживает терминал прямого доступа VT100 со скоростью 19,200 bps.



Настройка сервера только для кэширования


Это особая конфигурация named. Такой сервер в действительности не обслуживает домен, а просто осуществляет переброску всех запросов DNS, произведенных на Ваш компьютер. Преимущество этой схемы в том, что она создает кэш. Так что только первый запрос для специфического компьютера фактически будет послан серверу имен в Internet. Любой повторный запрос будет обработан из кэша. Такая схема названа caching-only. Это удобно при работе с Internet по модему, как описано в главе 7 и главе 8.


Настройка сервера только для кэширования

Это особая конфигурация named. Такой сервер в действительности не обслуживает домен, а просто осуществляет переброску всех запросов DNS, произведенных на Ваш компьютер. Преимущество этой схемы в том, что она создает кэш. Так что только первый запрос для специфического компьютера фактически будет послан серверу имен в Internet. Любой повторный запрос будет обработан из кэша. Такая схема названа caching-only. Это удобно при работе с Internet по модему, как описано в главе 7 и главе 8.

Файл named.boot для caching-only сервера имен выглядит примерно так:

; named.boot file for caching-only server directory /var/named primary 0.0.127.in-addr.arpa named.local ; localhost network cache . named.ca ; root servers

В дополнение к этому файлу named.boot, Вы должны установить файл named.ca со списком корневых серверов имен. Вы можете копировать и использовать для этой цели пример 6-10. Другие файлы не требуются.



Настройка шлюза


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


Настройка шлюза

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

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

172.16.1.1 vlager.vbrew.com vlager vlager-if1 172.16.2.1 vlager-if2

Последовательность команд для создания двух интерфейсов:

# ifconfig eth0 vlager-if1

# route add brew-net

# ifconfig eth1 vlager-if2

# route add wine-net

Если эта последовательность не работает, проверьте, включена ли в ядре поддержка IP forwarding. Для этого посмотрите первое число во второй строке файла /proc/net/snmp, оно должна быть 1.



Настройка tin Наиболее универсальный


На 486DX50 ему нужно приблизительно 30 секунд, чтобы найти 1000 статей, при чтении непосредственно с диска. При обращении по NNTP к загруженному серверу новостей это займет более 5 минут. Вы можете уточнить это, регулярно модифицируя индексный файл с опцией -u или вызывая tin с опцией -U.

Обычно tin формирует дамп баз данных в домашнем каталоге пользователя ниже иерархии .tin/index. Это может быть дорого в терминах ресурсов, так что иногда стоит хранить одну копию. Это может быть достигнуто объявлением tin как setuid, например, к пользователю news. Тогда tin будет хранить все базы данных в /var/spool/news/.index.

Версия tin, включенная в некоторые дистрибутивы Linux, не имеет поддержки NNTP. При вызове как rtin

или с опцией -r tin пробует соединяться с NNTP-сервером, заданным в файле /etc/nntpservernntpserver просто содержит имя сервера в одной строке.



Netfilter и таблицы IP (ядра 2.4)


Внимание: во время подготовки этой книги проект netfilter еще не был стабильным. Я надеюсь, что Вы простите ошибки в описании

netfilter или связанных с пакетом инструментальных средств конфигурации, которые следуют из изменений, происшедших после подготовки этого материала. Если возникают сомнения, обратитесь к документам HOWTO в сети. Я постарался описать netfilter максимально точно.

Так, что было неправильно с IP chains? Они значительно улучшили эффективность и управление правилами firewall. Но они все равно обрабатывали пакеты очень длинным путем, особенно в связке с другими возможностями firewall, например, IP masquerade (описан в главе 11) и другими формами трансляции адреса. Часть этой проблемы существовала потому, что IP masquerade (маскировка IP) и Network Address Translation (сетевая трансляция адресов) были разработаны независимо от IP firewall и интегрированы в него позже.

Однако, имелись другие проблемы. В частности, набор правил input описывал весь входной поток уровня IP как одно целое. Этот набор воздействовал как на пакеты, которые предназначены для этого компьютера, так и на те, которые будут переданы им далее. Это было неправильно потому, что такой подход спутал функцию цепочки input с функцией цепочки forward, которая применялась только к исходящим пакетам. Возникали весьма замысловатые конфигурации для разной обработки входящих и транслируемых пакетов.

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

Ключевыми различиями стало удаление из ядра кода для маскировки IP и изменение в логике работы наборов правил input и output. Появился новый расширяемый инструмент конфигурации iptables.

В IP chains набор правил input применяется ко всем пакетам, полученным компьютером, независимо от того, предназначены ли они для локального компьютера или направлены на другой компьютер. В




netfilter набор правил input применяется только к пакетам, предназначенным для локального компьютера. Цепочка forward теперь применяется исключительно к пакетам, предназначенным для передачи другому компьютеру. В IP Сhains набор правил output применяется ко всем пакетам, исходящим с компьютера, независимо от того, сгенерированы ли они на локальном компьютере. В

netfilter этот набор применяется только к пакетам, сгенерированным на этом компьютере, и не применяется к пакетам, проходящим транзитом. Это изменение резко упростило настройку.

Еще одной новостью стало вынесение компонентов работы с маскировкой IP в отдельные модули ядра. Они были переписаны как модули

netfilter.

Рассмотрим случай конфигурации, в которой по умолчанию для input, forward и output задана стратегия deny. В IP chains для пропуска всех пакетов потребовалось бы шесть правил.

В netfilter эта сложность исчезает полностью. Для сервисов, которые должны проходить через firewall, но не завершаются на локальном компьютере, требуются только два правила: по одному для прямого и обратного прохода в наборе правил forward.

Документ PACKET-FILTERING-HOWTO предлагает очень подробный список изменений, которые были сделаны. Поэтому давайте сосредоточимся на более практических аспектах.


Newgroup и rmgroup


Два сообщения имеют дело с созданием или удалением newsgroups: это newgroup и rmgroup . Newsgroups ниже "обычной" иерархии могут быть созданы только после того, как среди читателей Usenet было проведено обсуждение и утверждение. Правила для иерархии alt представляют собой что-то близкое к анархии. Для подробной информации см. регулярные регистрации в news.announce.newusers и news.announce.newgroups. Никогда не посылайте сообщение newgroup или rmgroup самостоятельно, если Вы определенно не знаете, что Вам позволено.

newgroup и rmgroup

Два сообщения имеют дело с созданием или удалением newsgroups: это newgroup и rmgroup . Newsgroups ниже "обычной" иерархии могут быть созданы только после того, как среди читателей Usenet было проведено обсуждение и утверждение. Правила для иерархии alt представляют собой что-то близкое к анархии. Для подробной информации см. регулярные регистрации в news.announce.newusers и news.announce.newgroups. Никогда не посылайте сообщение newgroup или rmgroup самостоятельно, если Вы определенно не знаете, что Вам позволено.



NFS Daemons Если нужно предоставить


Информация о владельце файла передается демоном NFS клиентам только, как числа user и group ID. Если на клиенте и сервере имена пользователя и группы совпадают, получается разделение пространства uid/gid. Например, такая ситуация возникает при использовании NIS для распространения информации из passwd по сети.

Часто такого совпадения нет. Вместо модификации uid и gid для приведения их в соответствие можно использовать демон отображения

rpc.ugidd, чтобы обойти несовпадение. Ниже будет объяснено использование опции map_daemon. Можно указать, чтобы rpc.nfsd отобразил пространство uid/gid сервера на пространство uid/gid клиента при помощи rpc.ugidd на клиенте. К сожалению, rpc.ugidd есть далеко не во всех дистрибутивах, так что если он нужен, придется найти исходные тексты и откомпилировать их.

rpc.ugidd является RPC-сервером, который запускается из сетевого скрипта загрузки аналогично

rpc.nfsd и rpc.mountd:

if [ -x /usr/sbin/rpc.ugidd ]; then /usr/sbin/rpc.ugidd; echo -n " ugidd" fi



Номер телефона


Если связь с удаленной системой достигается по телефонной линии, поле phone определяет номер, который модем должен набрать для связи. Он может содержать отдельные лексемы, интерпретируемые процедурой набора uucico. Знак равенства (=) означает ждать вторичный тон набора кода, тире (-) генерирует паузу в одну секунду. Например, некоторые телефонные станции сбрасывают номер, если Вы не делаете паузу между набором префиксного кода и номера телефона. Я не знаю соответствующий термин для этого, но Вы знаете, что иногда на внутренней телефонной станции Вы должны набрать 0 или 9, чтобы получить выход наружу.


Номер телефона

Если связь с удаленной системой достигается по телефонной линии, поле phone определяет номер, который модем должен набрать для связи. Он может содержать отдельные лексемы, интерпретируемые процедурой набора uucico. Знак равенства (=) означает ждать вторичный тон набора кода, тире (-) генерирует паузу в одну секунду. Например, некоторые телефонные станции сбрасывают номер, если Вы не делаете паузу между набором префиксного кода и номера телефона. Я не знаю соответствующий термин для этого, но Вы знаете, что иногда на внутренней телефонной станции Вы должны набрать 0 или 9, чтобы получить выход наружу.

Любая встроенная символьная строка может использоваться, чтобы скрыть местную информацию (например, код области). Любая такая строка транслируется с помощью файла dialcode. Предположим, что Вы имеете следующий файл dialcode:

# /usr/lib/uucp/dialcode - dialcode translation Bogoham 024881 Coxton 035119

С такими определениями Вы можете использовать номер телефона Bogoham7732 в файле sys , что делает работу немного проще.



Нуль-модемный кабель Последовательный


Вы, возможно, видели другие схемы таких кабелей, но этот позволяет Вам использовать аппаратное управление потоком данных, что гораздо лучше XON/XOFF управления данными. Конфигурация кабеля показана на рисунке B-2:

Снова, если Вы имеете экранировку, Вы должны подключить ее к первому штырьку только на одном конце.



Обратная совместимость с ipfwadm и ipchains


Замечательная гибкость Linux netfilter

иллюстрируется способностью подражать интерфейсам ipfwadm и ipchains. Эмуляция делает переход к новому поколению программного обеспечения firewall немного проще.


Обратная совместимость с ipfwadm и ipchains

Замечательная гибкость Linux netfilter

иллюстрируется способностью подражать интерфейсам ipfwadm и ipchains. Эмуляция делает переход к новому поколению программного обеспечения firewall немного проще.

Два модуля ядра из netfilter с именами ipfwadm.o и ipchains.o

обеспечивают обратную совместимость с ipfwadm и ipchains. Можно загрузить одновременно только один из этих модулей и использовать его только при условии, что модуль ip_tables.o не загружен. Когда соответствующий модуль загружен, netfilter работает аналогично заданной реализации firewall.

Чтобы netfilter копировал интерфейс ipchains скомандуйте:

# rmmod ip_tables

# modprobe ipchains

# ipchains

...



Обратный поиск


После обнаружения IP-адреса, принадлежащего хосту, иногда желательно выяснить каноническое имя хоста, соответствующее данному адресу. Это называется reverse mapping (обратное отображение) и используется несколькими сервисами, чтобы проверить идентичность клиента. При использовании файла hosts, обратный поиск заключается просто в проверке этого файла. В DNS, конечно, не проводится просмотр всего адресного пространсва. Вместо этого создана специальная область in-addr.arpa, она содержит IP-адреса всех хостов в перевернутой записи. Например, IP-адрес 149.76.12.4 соответствует имени 4.12.76.149.in-addr.arpa. Тип записи ресурса, связывающий это имя с каноническим именем, называется PTR.

Обратный поиск

После обнаружения IP-адреса, принадлежащего хосту, иногда желательно выяснить каноническое имя хоста, соответствующее данному адресу. Это называется reverse mapping (обратное отображение) и используется несколькими сервисами, чтобы проверить идентичность клиента. При использовании файла hosts, обратный поиск заключается просто в проверке этого файла. В DNS, конечно, не проводится просмотр всего адресного пространсва. Вместо этого создана специальная область in-addr.arpa, она содержит IP-адреса всех хостов в перевернутой записи. Например, IP-адрес 149.76.12.4 соответствует имени 4.12.76.149.in-addr.arpa. Тип записи ресурса, связывающий это имя с каноническим именем, называется PTR.

Создание зоны полномочий обычно означает, что ее администраторам дают полный контроль над тем, как назначать адреса и имена хостов. Так как они обычно управляют одной или более IP-сетями или подсетями, одна зона DNS может охватывать несколько IP-сетей. Отдел физики, например, включает подсети 149.76.8.0, 149.76.12.0 и 149.76.14.0.

Как следствие, новые зоны должны быть записаны в in-addr.arpa домена: 8.76.149.in-addr.arpa , 12.76.149.in-addr.arpa и 14.76.149.in-addr.arpa. Иначе, установка нового хоста в лаборатории Collider требовала бы обращения к родительской области, чтобы отметиться в ее файле in-addr.arpa . Зональная база данных для подсети 12 показана в примере 6-6. Соответствующие склеенные записи в базе данных зоны родителя показаны в примере 6-7.



Общие опции настройки: файл config


Скорее всего Вы вообще не будете использовать этот файл, чтобы описать UUCP hostname. По умолчанию, UUCP использует имя, которое Вы устанавливаете командой hostname, но вообще хорошая идея установить имя UUCP явно. Типовой файл config показан ниже:

# /usr/lib/uucp/config - UUCP main configuration file hostname vstout


Общие опции настройки: файл config

Скорее всего Вы вообще не будете использовать этот файл, чтобы описать UUCP hostname. По умолчанию, UUCP использует имя, которое Вы устанавливаете командой hostname, но вообще хорошая идея установить имя UUCP явно. Типовой файл config показан ниже:

# /usr/lib/uucp/config - UUCP main configuration file hostname vstout



Здесь можно задать еще ряд параметров, например, имя каталога для буфера. Эти параметры будут рассмотрены позже в разделе “Анонимный UUCP.”



Обзор сетевых устройств в Linux


В Linux имеется ряд стандартных имен интерфейсов, которые описаны ниже. Большинство драйверов поддерживают больше, чем один интерфейс, тогда интерфейсы перечисляются как eth0 и eth1:

lo

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

eth0, eth1, ethn

n-ая Ethernet-карта. Это имя интерфейса генерируется для большинства Ethernet-плат.

tr0, tr1, trn

Карты сети Token Ring. Имена используются большинством карт Token Ring, включая не-IBM карты.

sl0, sl1, sln

n-ый SLIP-интерфейс. Первая последовательная линия, отконфигурированная под SLIP становится sl0, и т.д.

ppp0, ppp1, pppn

n-ый PPP-интерфейс. Подобно SLIP-интерфейсам, PPP-интерфейс связан с последовательной линией, если только она отконфигурирована для PPP.

plip0, plip1, plipn

n-ый PLIP-интерфейс. PLIP-транспортирует IP-пакеты по параллельным линиям. Они устанавливаются PLIP-драйвером при загрузке системы и отображают параллельные порты. В ядрах 2.0.x имеется прямая связь между именем устройства и адресом ввода-вывода параллельного порта, но в более поздних ядрах имена устройства распределены последовательно точно, как для SLIP и PPP.

ax0, ax1, axn

n-ый интерфейс AX.25. AX.25 является главным протоколом операторов amateur radio. Интерфейсы AX.25 распределяются аналогично интерфейсам SLIP.

Есть еще немало разных интерфейсов для сетевых драйверов. Я перечислил лишь самые распространенные.

В следующих разделах мы будем обсуждать детали использования драйверов, описанных выше. Много полезного по настройке сетевых устройств можно узнать в Networking HOWTO, а AX25 HOWTO подробно описывает настройку сетевых устройств Amateur Radio.



Ограничение времени вызова


Taylor UUCP реализует ряд способов, обеспечивающих ограничение времени обращения к удаленной системе. Вам потребуется сделать это или из-за ограничений, которые удаленная система накладывает на услуги в течение рабочих часов или просто, чтобы избегать времени с высокими ценами за услуги. Обратите внимание, что всегда возможно отменить ограничения времени обращения, запустив uucico с опцией –S или –f.


Ограничение времени вызова

Taylor UUCP реализует ряд способов, обеспечивающих ограничение времени обращения к удаленной системе. Вам потребуется сделать это или из-за ограничений, которые удаленная система накладывает на услуги в течение рабочих часов или просто, чтобы избегать времени с высокими ценами за услуги. Обратите внимание, что всегда возможно отменить ограничения времени обращения, запустив uucico с опцией –S или –f.

По умолчанию, Taylor UUCP отвергнет соединения в любое время, так что Вы должны использовать некоторый вид спецификации времени в файле sys. Если Вы не очень заботитесь об ограничении времени обращения, Вы можете определить опцию time со значением Any (любой) в файле sys.

Самый простой способ ограничить время обращения, поле time, которое сопровождается строкой, состоящей из дня и подполя времени. День может быть комбинацией Mo, Tu, We, Th, Fr, Sa, Su, Any (любой), Never (никогда) или Wk для выходных дней. Время состоит из двух значений часов (в 24-часовом формате), отделяемых тире. Они определяют диапазон, в течение которого обращения допустимы. Комбинация этих лексем пишется без интервалов. Можно задать несколько интервалов, разделяя их запятыми. Например, MoWe0300-0730, Fr1805-2000 допускает обращение в понедельник и среду с 3 до 7.30 утра и в пятницу с 18.05 до 20.00. Когда поле time охватывает полночь, и написано Mo1830-0600, это фактически означает понедельник, между полуночью и 6.00 утра и между 18.30 пополудни и полуночью понедельника.

Taylor UUCP также имеет специальные лексемы, которые можно использовать в строке времени: NonPeak и Night. Они эквивалентны Any2300-0800,SaSu0800-1700 и Any1800-0700,SaSu соответственно.




Команда time задает параметр, который описывает время повтора в минутах. Когда попытка установить соединение не удалась, uucico не допустит другой попытки вызвать удаленный компьютер в течение некоторого интервала. По умолчанию, используется схема backoff, где интервал повтора увеличивается с каждым последующим отказом. Например, когда Вы определяете время повторения в 5 минут, uucico откажется вызывать удаленную систему в течение 5-ти минут после последнего отказа.

Команда timegrade позволяет Вaм настраивать приоритет буферизации. Допустим, что Вы имеете следующие команды timegrade в записи системы:

timegrade N Wk1900-0700,SaSu timegrade C Any

Это допускает задачи с приоритетом буферизации (spoolgrade) C и выше (обычно почта имеет степень B или C), они будут приняты всякий раз, когда соединение установлено, в то время, как новости (обычно ставятся в очередь со степенью N) будут переданы только ночью и в выходные.

Точно так же, как команда time, команда timegrade берет интервал повторения в минутах как дополнительный третий параметр.

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

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


Опции


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


Опции

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

-v

Предписывает iptables выдавать подробную информацию.

-n

Предписывает iptables использовать IP-адреса и порты, не пытаясь преобразовать их в имена.

-x

Любые числа в выводе iptables будут точными (округление не используется).

- -line-numbers

Задает номера строк, которые нужно отобразить при распечатке наборов правил. Номер строки будет соответствовать позиции правила внутри цепочки.



Опции ядра в Linux 2.0 и выше


Здесь в главном меню задаются параметры для основных возможностей системы, например, поддержки SCSI или звуковых карт. Вы можете нажать ? для получения подробного описания опции. Чтобы включить поддержку некой возможности в ядро постоянно, надо ответить y. Можно ответить m, тогда соответствующий драйвер будет включен в ядро как модуль и загружаться по мере необходимости. При всем своем удобстве модули не могут загружаться при начальной инициализации ядра, так что все необходимое для его загрузки должно быть встроено прямо в ядро без модулей. Наконец, если некая возможность не нужна, от нее можно отказаться ответом n.


Опции ядра в Linux 2.0 и выше

Здесь в главном меню задаются параметры для основных возможностей системы, например, поддержки SCSI или звуковых карт. Вы можете нажать ? для получения подробного описания опции. Чтобы включить поддержку некой возможности в ядро постоянно, надо ответить y. Можно ответить m, тогда соответствующий драйвер будет включен в ядро как модуль и загружаться по мере необходимости. При всем своем удобстве модули не могут загружаться при начальной инициализации ядра, так что все необходимое для его загрузки должно быть встроено прямо в ядро без модулей. Наконец, если некая возможность не нужна, от нее можно отказаться ответом n.

Меню настройки имеет иерархический вид. Например, чтобы настроить сеть, Вам сначала нужно подвердить, что Вы вообще включаете ее поддержку, и только потом будут заданы вопросы о том, в чем именно эта поддержка должна выражаться. В ядрах серий 2.0 и 2.1 первый вопрос о сети такой:

* * Network device support * Network device support (CONFIG_NETDEVICES) [Y/n/?]

Вы должны ответить y, чтобы использовать любые типы сетевых интерфейсов: Ethernet, SLIP, PPP или другие. При ответе y поддержка устройств Ethernet включается автоматически. После этого система проведет опрос о конкретных возможностях:

PLIP (parallel port) support (CONFIG_PLIP) [N/y/m/?] y PPP (point-to-point) support (CONFIG_PPP) [N/y/m/?] y * * CCP compressors for PPP are only built as modules. * SLIP (serial line) support (CONFIG_SLIP) [N/y/m/?] m CSLIP compressed headers (CONFIG_SLIP_COMPRESSED) [N/y/?] (NEW) y Keepalive and linefill (CONFIG_SLIP_SMART) [N/y/?] (NEW) y Six bit SLIP encapsulation (CONFIG_SLIP_MODE_SLIP6) [N/y/?] (NEW) y

<




/p>

Эти вопросы касаются различных протоколов уровня связи, которые Linux поддерживает. PPP и SLIP позволяют Вам передавать пакеты IP по последовательной линии связи. PPP не ограничен передачей пакетов TCP/IP, он может передавать пакеты IPX.

Если Вы отвечаете y или m на вопрос о поддержке SLIP, Вам придется ответить на три вопроса, которые появляются после этого. Опция "CSLIP compressed headers" позволяет сжимать заголовки пакетов TCP/IP. Заметьте, что эта опция лишь обеспечивает возможность работы с такими заголовками, но не заставляет работать с ними в обязательном порядке! Опция Keepalive and linefill

заставляет поддержку SLIP периодически генерировать действия на линии SLIP, чтобы таймер неактивности не разрывал соединение. Опция

Six bit SLIP encapsulation позволяет Вам выполнять SLIP на линиях, которые не способны к передаче 8-битных данных в чистом виде.

PLIP обеспечивает способ послать IP-пакеты через параллельный порт. Это обычно используется, чтобы связаться с машинами, работающими в DOS. На типичных аппаратных средствах PLIP может быть быстрее, чем PPP или SLIP, но он требует намного большей нагрузки на CPU.

Следующие вопросы касаются драйверов для разных сетевых карт. Можно задать не один драйвер, а несколько, если машина имеет несколько сетевых карт разных фирм:

. . Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?] 3COM cards (CONFIG_NET_VENDOR_3COM) [Y/n/?] 3c501 support (CONFIG_EL1) [N/y/m/?] 3c503 support (CONFIG_EL2) [N/y/m/?] 3c509/3c579 support (CONFIG_EL3) [Y/m/n/?] 3c590/3c900 series (592/595/597/900/905) "Vortex/Boomerang" support/ (CONFIG_VORTEX) [N/y/m/?] AMD LANCE and PCnet (AT1500 and NE2100) support (CONFIG_LANCE) [N/y/?] AMD PCInet32 (VLB and PCI) support (CONFIG_LANCE32) [N/y/?] (NEW) Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [N/y/?] WD80*3 support (CONFIG_WD80x3) [N/y/m/?] (NEW) SMC Ultra support (CONFIG_ULTRA) [N/y/m/?] (NEW) SMC Ultra32 support (CONFIG_ULTRA32) [N/y/m/?] (NEW) SMC 9194 support (CONFIG_SMC9194) [N/y/m/?] (NEW) Other ISA cards (CONFIG_NET_ISA) [N/y/?] Cabletron E21xx support (CONFIG_E2100) [N/y/m/?] (NEW) DEPCA, DE10x, DE200, DE201, DE202, DE422 support (CONFIG_DEPCA) [N/y/m/?]/ (NEW) EtherWORKS 3 (DE203, DE204, DE205) support (CONFIG_EWRK3) [N/y/m/?] (NEW) EtherExpress 16 support (CONFIG_EEXPRESS) [N/y/m/?] (NEW) HP PCLAN+ (27247B and 27252A) support (CONFIG_HPLAN_PLUS) [N/y/m/?] (NEW) HP PCLAN (27245 and other 27xxx series) support (CONFIG_HPLAN) [N/y/m/?]/ (NEW) HP 10/100VG PCLAN (ISA, EISA, PCI) support (CONFIG_HP100) [N/y/m/?] (NEW) NE2000/NE1000 support (CONFIG_NE2000) [N/y/m/?] (NEW) SK_G16 support (CONFIG_SK_G16) [N/y/?] (NEW) EISA, VLB, PCI and on card controllers (CONFIG_NET_EISA) [N/y/?] Apricot Xen-II on card ethernet (CONFIG_APRICOT) [N/y/m/?] (NEW) Intel EtherExpress/Pro 100B support (CONFIG_EEXPRESS_PRO100B) [N/y/m/?]/ (NEW) DE425, DE434, DE435, DE450, DE500 support (CONFIG_DE4X5) [N/y/m/?] (NEW) DECchip Tulip (dc21x4x) PCI support (CONFIG_DEC_ELCP) [N/y/m/?] (NEW) Digi Intl. RightSwitch SE-X support (CONFIG_DGRS) [N/y/m/?] (NEW) Pocket and portable adaptors (CONFIG_NET_POCKET) [N/y/?] AT-LAN-TEC/RealTek pocket adaptor support (CONFIG_ATP) [N/y/?] (NEW) D-Link DE600 pocket adaptor support (CONFIG_DE600) [N/y/m/?] (NEW) D-Link DE620 pocket adaptor support (CONFIG_DE620) [N/y/m/?] (NEW) Token Ring driver support (CONFIG_TR) [N/y/?] IBM Tropic chipset based adaptor support (CONFIG_IBMTR) [N/y/m/?] (NEW) FDDI driver support (CONFIG_FDDI) [N/y/?] Digital DEFEA and DEFPA adapter support (CONFIG_DEFXX) [N/y/?] (NEW) ARCnet support (CONFIG_ARCNET) [N/y/m/?] Enable arc0e (ARCnet "Ether-Encap" packet format) (CONFIG_ARCNET_ETH)/ [N/y/?] (NEW) Enable arc0s (ARCnet RFC1051 packet format) (CONFIG_ARCNET_1051)/ [N/y/?] (NEW) . .

Наконец, в секции файловых систем, Вас спросят о необходимости поддержки сетевой файловой системы NFS. NFS позволяет обращаться по сети к дискам и каталогам удаленной машины, как к своим собственным:

NFS file system support (CONFIG_NFS_FS) [y]

NFS детально описана в главе 14.


Опции настройки Имеются несколько


return_size_limit

Установка этой опции ограничивает размер входящих сообщений, которые Exim возвращает как часть сообщений об ошибках.

deliver_load_max

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

smtp_accept_max

Это максимальное число одновременных входящих вызовов SMTP, которые принимает Exim.

log_level

Это средство управления количеством информации, которая будет записана в файл регистрации. Имеются также другие параметры с именами, начинающимися на log_, которые управляют регистрацией специфической информации.



Опции настройки IP (IPCP) IРCP


pppd дает много возможностей управления, относительно опций IPCP, которые будут пытаться вести переговоры. Вы можете все настроить через различные опции командных строк, которые мы обсудим ниже.



Описание устройств: файл port


Файл port сообщает uucico

о доступных портах. Это могут быть порты модема, другие типы последовательных соединений и сокеты TCP.


Описание устройств: файл port

Файл port сообщает uucico

о доступных портах. Это могут быть порты модема, другие типы последовательных соединений и сокеты TCP.

Подобно файлу sys, port состоит из отдельных кусков, начинающихся с ключевого слова port, сопровождаемым именем порта. Это имя может использоваться в описании порта в файле sys. Нет потребности в уникальности имени; если существуют порты с одним и тем же именем, uucico перепробует все по очереди, пока не найдет тот, который в настоящее время не используется.

Команда port должна обязательно сопровождаться именем, которое задает, какой порт описан. Допустимые типы: modem, direct для прямых соединений и tcp для сокетов TCP. Если команда port отсутствует, по умолчанию тип порта принимает значение modem.

В этом разделе я опишу лишь порты модема. Сокеты TCP и прямые соединения будут обсуждаться позже.

Для модема и прямого соединения Вы должны определить файл для вызова устройства напрямую. Обычно это имя специального файла устройства в каталоге /dev (подобно /dev/ttyS1).

В случае использования модема, port также определяет, какой модем соединен с портом. Различные типы модемов должны быть настроены по-разному. Следовательно, Вы должны сообщить uucico, как инициализировать Ваш модем и как соединяться с требуемым номером. Taylor UUCP хранит описания всех программ набора номера в файле dial . Чтобы использовать любую из них, Вы должны определить имя программы набора номера, используя команду dialer.

Иногда Вам потребуется использовать модем различными способами в зависимости от системы, которую Вы вызываете. Например, некоторые старые модемы не понимают, когда быстрый модем пытается соединяться на скорости 56 kbps; они просто пропускают строку вместо того, чтобы вести переговоры на скорости в 9600 bps. Если Вы знаете, что некоторые машины используют такой "немой" модем, для вызова их Вы должны настраивать свой модем иначе. Для этого Вам нужно добавить строку port в файл port, которая определит другую программу набора номера. Теперь Вы можете задать новому порту другое имя, типа serial1-slow, и использовать директиву port в описании системы в файле sys.




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

# NakWell modem; connect at high speed port serial1 # port name type modem # modem port device /dev/ttyS1 # this is COM2 speed 115200 # supported speed dialer nakwell # normal dialer # NakWell modem; connect at low speed port serial1 # port name type modem # modem port device /dev/ttyS1 # this is COM2 speed 9600 # supported speed dialer nakwell-slow # don't attempt fast connect
Системная запись для машины drop получает для использования порт serial1, но в случае запроса на использование скорости 9,600 bps uucico
автоматически использует вторую запись порта. Все остальные сайты, которые работают со скоростью 115,200 будут вызываться с использованием первой записи port. По умолчанию используется первая запись с подходящей скоростью.

Определяемые пользователем цепочки


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


Определяемые пользователем цепочки

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

Создание своих цепочек IP Firewall позволит решить почти все эти проблемы. Каждая такая цепочка может использоваться наравне со встроенными. Вы можете использовать параметр -N команды

ipchains, чтобы создать новую цепочку с именем не более 8 символов. Ограничение имени символами только нижнего регистра, может быть, неплохая мысль. Опция -j позволяет задать реакцию на соответствие пакета данному правилу. Она может определять, что если пакет подходит под правило, дальше он должен тестироваться по заданному пользователем набору правил. Рассмотрим команды ipchains :




ipchains -P input DENY ipchains -N tcpin ipchains -A tcpin -s ! 172.16.0.0/16 ipchains -A tcpin -p tcp -d 172.16.0.0/16 ssh -j ACCEPT ipchains -A tcpin -p tcp -d 172.16.0.0/16 www -j ACCEPT ipchains -A input -p tcp -j tcpin ipchains -A input -p all

Мы задали реакцию по умолчанию deny для набора правил input. Вторая команда создает определенную пользователем цепочку tcpin, которая соответствует любому пакету, пришедшему снаружи нашей локальной сети. Третья команда добавляет в нее правило, которое пока не выполняет никаких действий. Это правило нужно для учета и подробно рассмотрено в главе 10. Следующие два правила соответствуют любому пакету, который предназначен для нашей локальной сети и любого из портов ssh или www , такие пакеты будут приняты. Следующее правило как раз то, когда реально начинается волшебство ipchains. Оно вызывает firewall для проверки всех пакетов протокола TCP по набору правил, заданному пользователем. Наконец, мы добавляем правило к нашему набору input, которое соответствует любому пакету. Это еще одно правило учета.

Наши наборы правил input и

tcpin заполняются нашими правилами. Процесс обработки пакета всегда начинается в одной из встроенных цепочек. Наша собственная цепочка вступает в дело по команде из одной из встроенных цепочек. Сначала, давайте рассмотрим, что происходит, когда для одного из наших компьютеров получен пакет UDP.

Пакет на приеме попадает в цепочку input. Первые два правила его игнорируют, поскольку они соответствуют ICMP и TCP. Пакет соответствует третьему правилу в input, но оно не определяет адресата, так как просто модифицирует счетчики байтов и пакетов, и не выполняет никакого действия непосредственно с пакетом. Он достигает конца input, встречается с заданной по умолчанию стратегией для input и отклоняется.

Чтобы увидеть нашу определяемую пользователем цепочку в действии, давайте теперь рассматривать что случается, когда мы получаем TCP-пакет предназначенный для порта ssh одного из наших компьютеров.

На это раз второе правило в цепочке input



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

В заключение, давайте рассмотрим то, что случается, когда мы достигаем конца определяемой пользователем цепочки. Для этого нам понадобится входящий пакет, который не соответствует заданным нами правилам. Пусть это будет запрос для telnet.

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

Этот пример очень прост, но иллюстрирует основную логику работы. Немного более сложный пример:

# Set default forwarding policy to REJECT ipchains -P forward REJECT # # create our user-defined chains ipchains -N sshin ipchains -N sshout ipchains -N wwwin ipchains -N wwwout # # Ensure we reject connections coming the wrong way ipchains -A wwwin -p tcp -s 172.16.0.0/16 -y -j REJECT ipchains -A wwwout -p tcp -d 172.16.0.0/16 -y -j REJECT ipchains -A sshin -p tcp -s 172.16.0.0/16 -y -j REJECT ipchains -A sshout -p tcp -d 172.16.0.0/16 -y -j REJECT # # Ensure that anything reaching the end of a user-defined chain is rejected. ipchains -A sshin -j REJECT ipchains -A sshout -j REJECT ipchains -A wwwin -j REJECT ipchains -A wwwout -j REJECT # # divert www and ssh services to the relevant user-defined chain ipchains -A forward -p tcp -d 172.16.0.0/16 ssh -b -j sshin ipchains -A forward -p tcp -s 172.16.0.0/16 -d 0/0 ssh -b -j sshout ipchains -A forward -p tcp -d 172.16.0.0/16 www -b -j wwwin ipchains -A forward -p tcp -s 172.16.0.0/16 -d 0/0 www -b -j wwwout # # Insert our rules to match hosts at position two in our user-defined chains. ipchains -I wwwin 2 -d 172.16.1.2 -b -j ACCEPT ipchains -I wwwout 2 -s 172.16.1.0/24 -b -j ACCEPT ipchains -I sshin 2 -d 172.16.1.4 -b -j ACCEPT ipchains -I sshout 2 -s 172.16.1.4 -b -j ACCEPT ipchains -I sshout 2 -s 172.16.1.6 -b -j ACCEPT

<



/p>

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

Наш пример создает определяемые пользователем цепочки для сервисов ssh и www в каждом направлении подключения. Есть цепочка wwwout, в ней мы помещаем правила для компьютеров, имеющих право создавать исходящие подключения World Wide Web, и цепочка sshin, хранящая правила для машин, которым можно приинимать входящие подключения ssh. Допустим, нам надо гибко задавать эти разрешения для каждого компьютера в нашей сети. Упрощение происходит, потому что определяемые пользователем цепочки позволяют нам аккуратно группировать правила для прав доступа входящих и исходящих пакетов с компьютеров. Рост эффективности происходит потому, что для любого пакета мы уменьшили среднее число тестов, требуемых для поиска адресата. Если бы мы не использовали определяемые пользователем цепочки, нам бы пришлось искать целый список правил, чтобы узнать какое действие выполнить с каждым пакетом. Даже при условии равномерности поступления пакетов в среднем мы просматривали бы половину списка. Определяемые пользователем цепочки позволяют нам избегать проверки большого числа правил, если проверяемый пакет не соответствует простому правилу во встроенной цепочке, которая вызывает наши цепочки.


Отображение соединений


netstat поддерживает множество опций для отображения активных и пассивных соединений. Опции -t, -u, -w и -x показывают активные TCP, UDP, RAW или UNIX соединения. Если вы зададите параметр -a, сокеты, которые ждут соединения (то есть, слушают сеть), также показываются. Это даст вам список всех серверов, которые в настоящее время работают в вашей системе.

Отображение соединений

netstat поддерживает множество опций для отображения активных и пассивных соединений. Опции -t, -u, -w и -x показывают активные TCP, UDP, RAW или UNIX соединения. Если вы зададите параметр -a, сокеты, которые ждут соединения (то есть, слушают сеть), также показываются. Это даст вам список всех серверов, которые в настоящее время работают в вашей системе.

Вызов netstat -ta на vlager даст:

$ netstat -ta

Active Internet Connections Proto Recv-Q Send-Q Local Address Foreign Address (State) tcp 0 0 *:domain *:* LISTEN tcp 0 0 *:time *:* LISTEN tcp 0 0 *:smtp *:* LISTEN tcp 0 0 vlager:smtp vstout:1040 ESTABLISHED tcp 0 0 *:telnet *:* LISTEN tcp 0 0 localhost:1046 vbardolino:telnet ESTABLISHED tcp 0 0 *:chargen *:* LISTEN tcp 0 0 *:daytime *:* LISTEN tcp 0 0 *:discard *:* LISTEN tcp 0 0 *:echo *:* LISTEN tcp 0 0 *:shell *:* LISTEN tcp 0 0 *:login *:* LISTEN

Видно, что больше всего серверов просто ждут соединения. Однако, четвертая строка говорит о SMTP-соединении с vstout, а шестая сообщает о telnet-соединении с vbardolino.

При использовании параметра -a будут отображаться все сокеты всех семейств сразу.



Отображение статистики интерфейса


Когда netstat вызывается с параметром -i, он показывает статистику для сетевых интерфейсов. Если, кроме того, дается опция -a, он будет печатать все интерфейсы, представленные в ядре, а не только те, которые были отконфигурированы в настоящее время. На vstout вывод netstat

будет напоминать это:

# netstat -i

Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags lo 0 0 3185 0 0 0 3185 0 0 0 BLRU eth0 1500 0 972633 17 20 120 628711 217 0 0 BRU

Отображение статистики интерфейса

Когда netstat вызывается с параметром -i, он показывает статистику для сетевых интерфейсов. Если, кроме того, дается опция -a, он будет печатать все интерфейсы, представленные в ядре, а не только те, которые были отконфигурированы в настоящее время. На vstout вывод netstat

будет напоминать это:

# netstat -i

Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags lo 0 0 3185 0 0 0 3185 0 0 0 BLRU eth0 1500 0 972633 17 20 120 628711 217 0 0 BRU



Поля MTU и Met

показывают текущий MTU и метрическое значение для этого интерфейса. Колонки RX и TX показывают сколько пакетов были получены или переданы без ошибок (RX-OK

/TX-OK), повредились (RX-ERR /TX-ERR), сколько было потеряно (RX-DRP/TX-DRP) и сколько было потеряно из-за переполнения (RX-OVR/ TX-OVR).

Последняя колонка показывает флаги, установленные для этого интерфейса. Здесь используется односимвольная версия флагов, которые печатает ifconfig:

B

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

L

Этот интерфейс задает устройство loopback.

M

Интерфайс получает все пакеты (режим promiscuous).

O

ARP выключен для этого интерфейса.

P

Это соединение point-to-point.

R

Интерфейс работает.

U

Интерфейс активен.



Отображение таблицы маршрутизации


При вызове netstat с параметром

-r, он показывает таблицу маршрутизации ядра, подготовленную с помощью route. На vstout он выдаст:

# netstat -nr

Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 127.0.0.1 * 255.255.255.255 UH 0 0 0 lo 172.16.1.0 * 255.255.255.0 U 0 0 0 eth0 172.16.2.0 172.16.1.1 255.255.255.0 UG 0 0 0 eth0

Отображение таблицы маршрутизации

При вызове netstat с параметром

-r, он показывает таблицу маршрутизации ядра, подготовленную с помощью route. На vstout он выдаст:

# netstat -nr

Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 127.0.0.1 * 255.255.255.255 UH 0 0 0 lo 172.16.1.0 * 255.255.255.0 U 0 0 0 eth0 172.16.2.0 172.16.1.1 255.255.255.0 UG 0 0 0 eth0



Опйия -n заставляет netstat

печатать IP-адреса вместо имен хостов и сетей. Это особенно полезно, когда вы хотите избежать поисков адреса по сети (например, через DNS или NIS-сервер).

Вторая колонка вывода netstat показывает маршрутизационную запись gateway. Если шлюз не используется, печатается звездочка. Третья колонка показывает сетевую маску (Genmask) маршрута. Когда дается IP-адрес, чтобы найти подходящий маршрут для него, ядро просматривает все записи таблицы маршрутизации, берет побитовое AND адреса и genmask и лишь затем сравнивает результат с целью маршрута.

G

маршрут использует шлюз (gateway).

U

интерфейс, который нужно использовать, работает.

H

только отдельный хост может быть достигнут через данный маршрут (не сеть!). Например, для записи loopback 127.0.0.1 .

D

устанавливается, если запись таблицы была произведена по приходу перенаправляемого сообщения ICMP (см. раздел Internet Control Message Protocol главы 2), или если запись таблицы была создана демоном динамической маршрутизации, наподобие

gated.

M

устанавливается, если запись таблицы была изменена перенапавляемым сообщением ICMP.

!

путь неверен (закрыт), все пакеты будут отброшены.

Еще три колонки показывают MSS, Window и irtt, применяемые для соединений TCP через этот маршрут. MSS (Maximum Segment Size) определяет максимальный размер пакета для этого маршрута. Window задает максимальное количество данных, которое система примет в одном пакете с удаленного компьютера. irtt означает "initial round trip time". TCP протокол гарантирует, что данные будут надежно доставлены между компьютерами, повторно передавая пакеты, если они были потеряны. При этом ведется счетчик времени: сколько можно ждать, пока пакет дойдет до машины назначения, и оттуда придет подтверждение. Если время вышло, пакет будет послан еще раз. Этот процесс называется round-trip time. initial round-trip time задает значение, которое используется при установке подключения. Для большинства сетей подходит значение по умолчанию, но для некоторых медленных сетей (особенно ряд типов пакетного радио) время слишком короткое, что вызывает ненужные повторы. Параметр irtt может быть установлен, используя команду route. По умолчанию в этом поле ноль.

Последнее поле показывает, к какому сетевому интерфейсу относится маршрут.



Параметры определения правил


Параметры iptables создают правила, определяя какие типы пакетов соответствуют критериям. Если любой из этих параметров опущен из спецификации правила, он предполагается по умолчанию.


Параметры определения правил

Параметры iptables создают правила, определяя какие типы пакетов соответствуют критериям. Если любой из этих параметров опущен из спецификации правила, он предполагается по умолчанию.

-p [!]protocol

Указывает протокол, соответствующий правилу. Допустимы имена протоколов tcp, udp, icmp. Можно задать номер протокола для протоколов, которые здесь не определены. Например, 4 для протокола ipip. Если задан префикс !, правило превращается в отрицательное, и принимаются все пакеты, не соответствующие этому протоколу. Значение по умолчанию: все протоколы.

-s [!]address[/mask]

Указывает исходный адрес и порт, с которого пришел пакет. Адрес может задавать имя машины, имя сети или IP-адрес. Опция mask задает сетевую маску. Она может быть задана в обычной форме (например, /255.255.255.0) или в новой (например, /24). Опция port задает порт TCP или UDP, или тип пакетов ICMP. Вы можете задать спецификацию порта только, если Вы задали параметр -p

с одним из протоколов tcp, udp или icmp. Порты могут быть определены как диапазон, определяя верхние и нижние границы диапазона с двоеточием в качестве разделителя. Например, 20:25 определяет порты с 20 по 25 включительно. Символ ! превращает правило в его противоположность.

-d [!]address[/mask]

Задает адрес и порт назначения. Во всем остальном аналогичен параметру -s.

-j target

Указывает, что делать при срабатывании правила. Допустимые действия: ACCEPT, DROP, QUEUE и RETURN. Ранее я уже описал значение каждого действия. Однако, Вы можете также задать имя определяемой пользователем цепочки, в которой продолжится обработка. Если этот параметр опущен, будут только изменены данные пакетов и счетчиков, но ничего с этим пакетом сделано не будет.

-i [!]interface-name

Задает интерфейс, с которого пришел пакет, или через который пакет будет передан. Символ ! переворачивает результат сравнения. Если имя интерфейса кончается на +, ему будут соответствовать все интерфейсы, имена которых начинаются на заданную строку. Например, -i ppp+ совпадает со всеми PPP-интерфейсами, а -i ! eth+ соответствует всем интерфейсам, кроме Ethernet.

-o [!]interface-name

Указывает, что пакеты будут передаваться через этот интерфейс. В остальном аналогично -i.

[!] -f

Указывает, что это правило применяется ко второму и последующим, но не к первому, фрагментам пакета.



Пересылка (forwarding)


Даже в русскоязычной среде больше прижился термин forwarding, чем пересылка, так что я использую оба термина. Вообще следует отметить огромное количество английских терминов в данной области. Поэтому я стараюсь приводить как русский, так и английский варианты. Пользователи могут переназначать свою почту альтернативным адресам, создавая в своем домашнем каталоге файл .forward. Он содержит список получателей, отделяемых запятыми и/или символами перевода строки. Особое внимание надо уделить тому, что обрабатываются все строки файла, а не только первая. Почему-то очень распространено мнение, что переслать можно только на один адрес. На самом деле пересылать можно на много адресов, причем допустимы все типы адресов. Пример файла .forward:

janet, "|vacation"

В некоторых описаниях файлов .forward можно встретить имя пользователя, которое начинается с наклонной черты влево. Это нужно для старых MTA (почтовых программ), которые иногда зацикливались при обработке таких файлов. Exim умеет обходить циклы адресов сам.

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


Пересылка (forwarding)

Даже в русскоязычной среде больше прижился термин forwarding, чем пересылка, так что я использую оба термина. Вообще следует отметить огромное количество английских терминов в данной области. Поэтому я стараюсь приводить как русский, так и английский варианты. Пользователи могут переназначать свою почту альтернативным адресам, создавая в своем домашнем каталоге файл .forward. Он содержит список получателей, отделяемых запятыми и/или символами перевода строки. Особое внимание надо уделить тому, что обрабатываются все строки файла, а не только первая. Почему-то очень распространено мнение, что переслать можно только на один адрес. На самом деле пересылать можно на много адресов, причем допустимы все типы адресов. Пример файла .forward:




janet, "|vacation"

В некоторых описаниях файлов . forward можно встретить имя пользователя, которое начинается с наклонной черты влево. Это нужно для старых MTA (почтовых программ), которые иногда зацикливались при обработке таких файлов. Exim умеет обходить циклы адресов сам.

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

Первый адрес в файле forward доставляет сообщение в почтовый ящик janet, а команда vacation

вернет краткий ответ отправителю.

В дополнение к поддерживаемым "традиционным" файлам пересылки Exim может быть конфигурирован, чтобы использовать более сложные файлы, названные фильтрами (filters). Вместо простого списка адресов фильтры могут содержать тесты на содержание входящего сообщения, чтобы, например, сообщения посылались только, если тема содержала строку "срочно". Администратор системы должен решить, позволять ли пользователям такую гибкость.


Поддержка серверов NFS v2 NFS


Ядро 2.2.0 поддерживает экспериментальный сервер NFS уровня ядра, разработанный Olaf Kirch, H.J. Lu, G. Allan Morris и Trond Myklebust. Поддержка NFS ядром обеспечивает значительное увеличение эффективности.

В текущих дистрибутивах инструментальные средства сервера доступны в откомпилированном виде. Если их не оказалось в вашем дистрибутиве, они доступны для скачивания на http://csua.berkeley.edu/gam3/knfsd. Вы должны формировать ядро 2.2.0 с поддержкой NFS демона уровня ядра, чтобы использовать инструментальные средства. Вы можете узнать имеет ли ваше ядро NFS daemon, проверив существование файла /proc/sys/sunrpc/nfsd_debug. Если файла нет, вам, вероятно, придется загружать модуль

rpc.nfsd, используя утилиту modprobe.

Ядерный демон NFS использует стандартный файл конфигурации /etc/exports. Пакет обеспечивает новые версии демонов rpc.mountd и rpc.nfsd, так что в плане администрирования мало что изменилось , а производительность сервера существенно выросла.



Поддержка серверов NFS v3 Наиболее


Olaf Kirch и Trond Myklebust разрабатывают экспериментальный сервер NFSv3. Он появился в ядре версии 2.3 и доступен как патч для ядра 2.2. Он создан на базе демона ядерного уровня NFS v2.

Патч доступен на страничке Linux Kernel based NFS по адресу http://csua.berkeley.edu/gam3/knfsd.



Подробно о команде ncpmount


Команда ncpmount имеет большое количество параметров командной строки. Это позволяет Вам гибко управлять томами NCP. Наиболее важные из них описаны в таблице 15-2.


Подробно о команде ncpmount

Команда ncpmount имеет большое количество параметров командной строки. Это позволяет Вам гибко управлять томами NCP. Наиболее важные из них описаны в таблице 15-2.



Подсети


Эта структура отражена в разбиении IP-адреса на хост и сетевую часть, как объяснено выше. По умолчанию, сеть места назначения получается из сетевой части IP-адреса. Таким образом, хосты с идентичными IP-адресами сети должны располагаться в пределах одной подсети и наоборот.


Подсети

Эта структура отражена в разбиении IP-адреса на хост и сетевую часть, как объяснено выше. По умолчанию, сеть места назначения получается из сетевой части IP-адреса. Таким образом, хосты с идентичными IP-адресами сети должны располагаться в пределах одной подсети и наоборот.

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

Подсеть принимает ответственность за доставку пакетов для определенного диапазона IP-адресов. Как с классами A, B или C она идентифицируется сетевой частью IP-адресов. Однако, сетевая часть теперь расширена, чтобы включить некоторые биты части хоста. Число битов, которые интерпретируются как номер в подсети, задается так называемой маской подсети (subnet mask) или netmask. Это 32-разрядное число, которое определяет разрядную маску для сетевой части IP-адреса.

Сеть университета Groucho Marx является примером такой сети. Она имеет класс B с сетевым адресом 149.76.0.0 и netmask, поэтому равна 255.255.0.0.

Внутри сеть GMU состоит из нескольких меньших сетей типа локальных сетей различных отделов. Так что диапазон IP-адресов разбит на 254 подсети: от 149.76.1.0 до 149.76.254.0. Например, отдел теоретической физики имеет адрес 149.76.12.0. Университетский оптиковолоконный кабель тоже является сетью с собственным адресом 149.76.1.0. Эти подсети имеют одинаковый сетевой IP-адрес, в то время как третья часть адреса (octet) используется, чтобы различать их между собой. Таким образом, они будут использовать сетевую маску 255.255.255.0.

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



Поиск имени с помощью DNS


На первый взгляд, вся эта суета с областями и зонами кажется делает поиск адреса ужасно сложным делом. В конце концов, если нет центрального органа, контролирующего, какие имена с каким адресом связаны, тогда как скромное приложение должно его узнавать?!

Поиск имени с помощью DNS

На первый взгляд, вся эта суета с областями и зонами кажется делает поиск адреса ужасно сложным делом. В конце концов, если нет центрального органа, контролирующего, какие имена с каким адресом связаны, тогда как скромное приложение должно его узнавать?!

Фактически, DNS гигантская распределенная база данных. Это осуществлено посредством так называемых серверов имен (name server), которые снабжают всех информацией о данном домене или нескольких доменах сразу. Для каждой зоны имеются по крайней мере два сервера имен, которые содержат всю информацию относительно хостов в этой зоне. Чтобы получить IP-адрес erdos, все что вы должны сделать, это обратится к серверу имен зоны groucho.edu, который и передаст вам требуемые данные.

Легко сказать, а как это сделать? Как найти сервер имен в Groucho Marx? В случае если ваш компьютер не оборудован программой преобразования адресов, DNS также обеспечивает это. Когда ваше приложение хочет найти информацию относительно erdos, оно входит в контакт с местным сервером имен, который проводит так называемый итерационный опрос. Сначала он посылает запрос серверу имен корневого домена, спрашивая об адресе erdos.maths.groucho.edu. Сервер имен корня сообщает, что это имя не принадлежит зоне его полномочий, но вместо этого отсылает к домену edu. Таким образом, он предлагает вам войти в контакт с сервером имен edu для получения большего количества информации и прилагает список всех серверов имен edu вместе с их адресами. Ваш местный сервер имен пошлет запрос одному из них, например, a.isi.edu. Также как серверу имен корня, a.isi.edu знает, что люди groucho.edu управляют своей зоной сами, и направит вас на их сервера. Местный сервер имен запросит один из них, который, наконец, распознает имя, как принадлежащее к его зоне, и вернет IP-адрес.

Кажется, что для поиска одного IP-адреса тратится слишком много ресурсов, но это несравнимо меньше, чем при прежней схеме с файлом HOSTS.TXT. Но все еще имеются места для усовершенствования этой схемы.

Чтобы уменьшить время ответа для будущих запросов, сервер имен хранит полученную раньше информацию в кэше (cache). Так что в следующий раз, когда любой другой компьютер из вашей локальной сети захочет найти адрес хоста в домене groucho.edu, ваш сервер имен не проведет все снова, а будет сразу обращаться к серверу имен groucho.edu.

Конечно, сервер имен не будет хранить эту информацию всегда, а отбросит ее через некоторое время. Этот интервал времени назван time to live, (временем жизни) или TTL. TTL задается администратором каждой конкретной зоны.



Поиск неисправностей Этот раздел


В любом случае включите отладку опцией -xall и смотрите на вывод в файле Debug в каталоге spool. Это поможет быстро распознть, где происходит сбой. Также иногда полезно включить динамик модема, когда соединение не удается установить. С Hayes-совместимыми модемами это можно сделать, добавив

ATL1M1 к скрипту модема в файле dial.

Первым делом стоит проверить, все ли права доступа к файлам установлены правильно. Исполняемый модуль uucico должен принадлежать uucp, а все файлы в /usr/lib/uucp, /var/spool/uucp и /var/spool/uucppublic должны принадлежать uucp. Имеются также некоторые скрытые файлы в каталоге spool, которые также должны принадлежать uucp.



Port и speed


Опции port и speed используются, чтобы выбрать устройство, используемое для вызова удаленной системы и установки максимального быстродействия. Запись system может использовать одну или обе опцию сразу. При поиске подходящего устройства в файле port могут быть выбраны только те порты, которые соответствуют имени порта и (или) диапазону скоростей.


port и speed

Опции port и speed используются, чтобы выбрать устройство, используемое для вызова удаленной системы и установки максимального быстродействия. Запись system может использовать одну или обе опцию сразу. При поиске подходящего устройства в файле port могут быть выбраны только те порты, которые соответствуют имени порта и (или) диапазону скоростей.

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



Последовательное оборудование


Термин getty сокращение от "get tty" Программа getty открывает последовательное устройство, конфигурирует его, факультативно конфигурирует модем и ждет подключение, которое будет сделано. Активное подключение на последовательном устройстве обычно указывается Data Carrier Detect (DCD) штырьком в последовательном шнуре. Когда происходит соединение, getty выдает приглашение login: и затем вызывает программу login, чтобы обработать вход в систему. Каждый из виртуальных терминалов (устройств /dev/tty1) в Linux имеет свою копию программы getty, запущенную именно для него.

Имеется ряд различных версий getty, каждая разработанная, чтобы удовлетворить некоторые конфигурации лучше, чем другие. Версия getty, которую я опишу, названа mgetty. Она ориентирована на работу с модемами, что и принесло ей солидную популярность, включая поддержку для автоматических факсимильных программ и речевых модемов. При конфигурировании mgetty я сконцентрируюсь на ответах на стандартные вызовы для обмена данными.