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

         

Параметры командной строки для setserial


Таблица 4-1. Параметры командной строки для setserial

Параметр

Описание

port_number

Определяет адрес порта ввода-вывода последовательного устройства. Должен быть определен в шестнадцатеричной записи, например, 0x2f8.

num

Определяет прерывание, используемое последовательным устройством.

uart_type

Определяет тип UART последовательного устройства. Общие значения 16450, 16550 и т.д. Установка этого значение в none не отключит это последовательное устройство.

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

Предписывает UART использовать быстродействие 57.6 kbps, когда процесс запрашивает 38.4 kbps.



Предписывает UART использовать быстродействие 115 kbps, когда процесс запрашивает 38.4 kbps.

Предписывает UART использовать заданное по умолчанию быстродействие 38.4 kbps, когда запрашивается. Этот параметр используется, чтобы отменить эффект spd_hi

или spd_vhi на определенном последовательном устройстве.

Этот параметр заставит ядро сделать попытку автоматически определить IRQ определенного устройства. Эта попытка не может быть полностью надежной, так что, вероятно, лучше думать об этом как о просьбе к ядру предположить IRQ. Если Вы знаете IRQ этого устройства, Вы должны определить его, используя параметр irq.

Это параметр должен быть определен вместе с параметром port. Когда этот параметр задан, setserial инструктирует ядро сделать попытку автоматически определить тип UART на порте с заданным адресом. Если параметр auto_irq также задан, ядро попытается автоматически определить IRQ.

Отменяет автоопределение типа UART. Полезен, если ядро определяет его неправильно.

Типичный и простой файл rc для настройки Ваших последовательных портов при начальной загрузке показан в примере 4-1. Большинство дистрибутивов Linux включают более сложные файлы.



Параметры stty для настройки последовательных устройств


Таблица 4-2. Параметры stty для настройки последовательных устройств

port
irq
uart
fourport
spd_hi
spd_vhi
spd_normal
auto_irq
autoconfig
skip_test

Параметр

Назначение

Устанавливает быстродействие линии в N бит в секунду.

Включить/выключить аппаратное подтверждение связи.

Включить/выключить XON/XOFF управление потоком.

Включить/выключить сигналы управления модема типа DTR/DTS и DCD. Это необходимо, если Вы используете последовательный кабель "three wire", поскольку он не обеспечивает эти сигналы.

Установить число бит данных соответственно в 5, 6, 7 или 8.

Включить проверку на нечетность. Отключение этого параметра включает проверку на четность.

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

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

Включить/выключить повторение полученных символов обратно отправителю.

Следующий пример объединяет некоторые из этих параметров и устанавливает устройство ttyS0 на 19,200 bps, 8 бит данных, без контроля четности, но с аппаратным подтверждением связи с заблокированным ECHO-отбражением:

N
crtsdts
ixon
clocal
cs5 cs6 cs7 cs8
parodd
parenb
cstopb
echo

$ stty 19200 cs8 -parenb crtscts -echo -F /dev/ttyS0



Стандартные карты NIS и соответствующие им файлы


Таблица 13-1. Стандартные карты NIS и соответствующие им файлы

Файл

Карта (карты)

Описание

hosts.byname, hosts.byaddr

Соответствие IP-адресов именам машин

networks.byname, networks.byaddr

Соответствие IP-адресов именам сетей

/etc/passwd

passwd.byname, passwd.byuid

Пароли пользователей и их логины

/etc/group

group.byname, group.bygid

Идентификаторы групп (Group ID) и имена групп в системе

/etc/services

services.byname, services.bynumber

Описание сервисов и их имена

rpc.byname, rpc.bynumber

Номера сервисов Sun RPC и их имена

protocols.byname, protocols.bynumber

Номера протоколов и их имена

Почтовые псевдонимы с именами

Вы можете найти поддержку иных файлов и карт в других NIS пакетах. Они обычно содержат информацию для прикладных программ, не обсуждаемых в этой книге, типа карты bootparams, которая используется сервером Sun bootparamd.

Для некоторых карт обычно используют прозвища (nicknames), которые короче и, следовательно, их проще напечатать. Обратите внимание, что эти прозвища понятны только ypcat и ypmatch, двум инструментальным средствам для проверки Вашей конфигурации NIS. Чтобы получить полный список прозвищ, понятных этим инструментальным средствам, выполните следующую команду:

/etc/hosts
/etc/networks
/etc/rpc
/etc/protocols
/usr/lib/aliases
mail.aliases

$ ypcat -x

Use "passwd" for "passwd.byname" Use "group" for "group.byname" Use "networks" for "networks.byaddr" Use "hosts" for "hosts.byaddr" Use "protocols" for "protocols.bynumber" Use "services" for "services.byname" Use "aliases" for "mail.aliases" Use "ethers" for "ethers.byname"

Сервер NIS традиционно назван ypserv. Для средней сети один сервер обычно достаточен, большие сети могут выполнить несколько серверов на различных машинах и в разных сегментах сети, чтобы уменьшить загрузку на серверы и маршрутизаторы. Эти серверы должны быть синхронизированы объявлением одного из них главным (master server), а остальных подчиненными (slave servers). Карты создаются только на главном. Оттуда они распределяются на все подчиненные.




До сих пор мы очень неопределенно говорили относительно "сети". Имеется в виду особый термин в NIS: все хосты, разделяющие часть системных настроек по NIS: так называемый домен NIS (NIS domain). К сожалению, домены NIS не имеют абсолютно ничего общего с доменами, с которыми мы столкнулись в DNS. Во избежание неоднозначности мы будем всегда определять, какой тип домена имеется в виду.
NIS-домены имеют административную функцию. Они обычно невидимы для пользователей, за исключением совместного использования паролей всеми машинами в домене. Следовательно, имя, данное NIS-домену, нужно только администраторам. Обычно любое имя несет определенную смысловую нагрузку в сети. Например, администратор Virtual Brewery может создать два домена NIS: один для Brewery, второй для сети Winery, с именами brewery и winery соответственно. Можно и просто использовать имя DNS-домена и для NIS.
Чтобы устанавливать и отображать имя домена NIS Вашей машины, используйте команду domainname. Когда она вызывается без параметров, отображает текущее имя. Чтобы задать имя домена, надо задать его в качестве параметра. Введите от имени администратора:

# domainname brewery
NIS-домены определяют, к какому серверу NIS сделает запрос прикладная программа. Например, программа login на хосте в сети Winery должна опрашивать только NIS-сервер Winery (или одни из них, если там есть несколько) для получения информации о пароле пользователя, в то время как прикладная программа на машине в сети Brewery должна обращаться к серверу Brewery.
Возникает вопрос: а как клиент найдет, к какому серверу обращаться? Самое простое решение сводится к файлу конфигурации с указанием в нем имени нужной машины. Такой подход пригоден в сетях с одним сервером, но если несколько, клиент не сможет динамически запрашивать разные серверы (понятно, из одного домена) в зависимости от их доступности. Следовательно, реализации NIS полагаются на специальный daemon по имени ypbind, чтобы обнаружить подходящий сервер NIS в своем домене. Перед выполнением любого NIS-запроса, прикладная программа сначала выясняет у ypbind, какой сервер использовать.
ypbind исследует серверы, посылая широковещательные запросы в локальную IP-сеть. Первый ответивший сервер считается самым быстрым и используется во всех последующих запросах NIS. После того, как пройдет некоторый интервал, или если сервер становится недоступным, ypbind снова проводит поиск активных серверов.
Динамическое связывание полезно только, когда сеть обеспечивает больше, чем один сервер NIS. Динамическое связывание также представляет проблему защиты: ypbind просто верит, кто бы не отвечал. Так что если вместо сервера NIS ответит хакер, его ответ будет воспринят без тени недоверия. Само собой разумеется, это становится особенно ненадежным, если Вы управляете базами данных паролей по NIS. Чтобы принимать меры против этого, Linux ypbind обеспечивает два способа работы: либо обычный опрос локальной сети в поисках сервера NIS, либо указание имен машин с серверами NIS в своем файле настроек.

Связи протоколов XNS, Novell и TCP/IP


Таблица 15-1. Связи протоколов XNS, Novell и TCP/IP

XNS

Novell

TCP/IP

Функция



Параметры команды ncpmount


Таблица 15-2. Параметры команды ncpmount

IDP
IPX UDP/IP Связь, ненадежная передача
SPP
SPX TCP Надежная передача
Нет
NCP NFS Файловый сервис
Нет
RIP RIP Обмен информацией маршрутизации
Нет
SAP Нет, а жаль Сервисный обмен информации доступности

Параметр

Описание

-S server

Имя сервера для монтирования.

-U

user_name

Логин пользователя NetWare для регистрации на сервере.

-P

password

Пароль для логина NetWare.

Вход без пароля (открытый ресурс).

Отключает автоматическое преобразование паролей к верхнему регистру.

client_name

Позволяет Вам определять, кто владеет подключением к серверу файлов. Это полезно для печати из NetWare.

Идентификатор пользователя Linux, который должен использоваться в качестве владельца файлов в смонтированном каталоге. Если не задан, используется идентификатор пользователя, смонтировавшего каталог.

Аналогично -u, но для групп.

file_mode

Указывает режим доступа к файлам (permissions), используемый для доступа к файлам в смонтированном томе. Значение должно быть восьмеричным числом, например, 0664. Реальные права доступа вычисляются из заданного значения и Ваших прав в системе NetWare. Значение по умолчанию берется из текущего значения umask.

dir_mode

Аналогично -f, но для каталогов.

volume

Позволяет Вам определять имя тома для монтирования, вместо монтирования всех томов. Эта опция необходима, если Вы желаете реэкспортировать том NetWare, используя NFS.

time_out

Позволяет Вам определять время, которо клиент NCPFS будет ждать ответ с сервера. Значение по умолчанию 60mS, время ожидания определяется в сотых долях секунды. Если Вы испытываете любые проблемы стабильности NCP, попробуйте увеличить это значение.

retry_count

Клиент NCP пытается посылать пакеты на сервер несколько раз, прежде чем придет к выводу, что подключение не работает. Эта опция позволяет задать, сколько раз будут выполняться такие повторы. Значение по умолчанию 5.



Утилиты Linux для работы с Bindery


Таблица 15-3. Утилиты Linux для работы с Bindery

-n
-C
-c
-u uid
-g gid
-f
-d
-V
-t
-r

Имя команды

Описание

nwfstime

Отображает или меняет дату и время на сервере NetWare

Список пользователей, в данный момент работающих с сервером NetWare

Данные о томах NetWare

Создать объект NetWare bindery

Перечислить объекты NetWare bindery

Перечислить свойства объекта NetWare bindery

Удалить объект NetWare bindery

Создать свойство NetWare bindery

Вывести содержимое свойства NetWare bindery

Задать содержимое свойства NetWare bindery

Удалить свойство NetWare bindery



Опции команды nprint


Таблица 15-4. Опции команды nprint

nwuserlist
nwvolinfo
nwbocreate
nwbols
nwboprops
nwborm
nwbpcreate
nwbpvalues
nwbpadd
nwbprm

Опция

Описание

Имя сервера печати. Удобно иметь соответствующую запись в файле /.nwclient. Она обязательна.

queue_name

Очередь печати, в которую надо послать задание по выводу на печать. Эта опция обязательна.

job_description

Текст, который появится в консоли печати при показе списка поставленных в очередь работ.

lines

Число строк на страницу. По умолчанию 66.

columns

Число столбцов на страницу. По умолчанию 80.

copies

Число копий работы, которая будет напечатана. Значение по умолчанию 1.

Простой пример использования nprint:

-S server_name
-q
-d
-l
-r
-c

$ nprint -S REDS01 -q PSLASER -c 2 /home/matt/ethylene.ps

Эта команда напечатает две копии файла /home/matt/ethylene.ps на принтере PSLASER на сервере REDS01, используя имя пользователя и пароль из файла /.nwclient.



Таблица маршрутов (Routing Table)


Теперь сосредоточим наше внимание на том, как IP выбирает gateway при доставке пакетов определенной сети.

Таблица маршрутов (Routing Table)

Теперь сосредоточим наше внимание на том, как IP выбирает gateway при доставке пакетов определенной сети.

Как мы видели раньше, erdos, когда передавал пакеты для quark, проверил место назначения и нашел, что его нет в местной сети. Поэтому он посылает пакет gateway sophus, который теперь сталкивается с той же самой задачей. Машина sophus определяет, что quark не находится в сетях, с которыми он непосредственно связан, так что он передает этот пакет другому gateway, чтобы он перенаправил его дальше. Правильный выбор был бы niels (gateway отдела физики). Но шлюзовая машина sophus нуждается в некоторой информации, чтобы определить подходящий gateway.

Для этого используется таблица маршрутизации IP, которая определяет какие сети присоединены с помощью каких gateways. Обязательно должен быть указан маршрут по умолчанию (default route), по которому будут направляться все пакеты с адресами в неизвестных сетях. Этот gateway связан с сетью 0.0.0.0. На sophus эта таблица могла бы напоминать эту:

Сеть

Netmask

Gateway

Интерфейс

Маршруты к сетям, с которыми sophus связан непосредственно, обозначаются знаком "-" в столбце gateway.

Таблицы маршрутизации могут быть построены различными средствами. Для маленькой сети наиболее эффективно строить их вручную и передавать их IP, используя команду route во время загрузки системы (см. главу 5). Для больших сетей они строятся и регулируются во время работы маршрутизирующих демонов; они запускаются на центральном хосте и обмениваются информацией с другими компьютерами для вычисления оптимального маршрута между членами сетей.




Процесс определения правильного маршрута прост, но требует знания логики и двоичной арифметики: маршрут совпадает с пунктом назначения, если (адрес сети AND netmask)=(адрес назначения AND netmask).
Это означает, что маршрут правильный, если числу бит адреса сети, указанное netmask (начиная с левого бита) соответствует то же самое число битов в адресе назначения.
Когда реализация IP ищет самый лучший маршрут к адресату, может найтись ряд записей маршрутизации, которые соответствуют целевому адресу. Например, мы знаем, что заданный по умолчанию маршрут соответствует каждому адресату, но пакеты, предназначенные для местных сетей, будут соответствовать и их локальному маршруту. Как узнать, какой маршрут использовать? Здесь netmask играет важную роль. В то время как оба маршрута соответствуют адресату, один из маршрутов имеет большую netmask, чем другой. Я уже упомянул, что netmask используется, чтобы разбить наше адресное пространство на меньшие сети. Больший netmask более определенно задает целевой адрес, значит, при маршрутизации мы должны всегда выбирать маршрут, который имеет самую большую netmask. Заданный по умолчанию маршрут имеет netmask из нулевых битов, и в конфигурации, приведенной выше, местные сети имеют 24-разрядный netmask. Если пакет соответствует местной сети, он будет направлено на соответствующее устройство, а не на заданный по умолчанию маршрут, потому что локальный сетевой маршрут соответствует netmask с большим числом битов. Единственный пакет, который будет направлен через заданный по умолчанию маршрут это тот, который не соответствует вообще никакому другому маршруту.
В зависимости от размера сети используются различные протоколы маршрутизации. Для маршрутизации в автономной системе (типа университетского городка) лучше подходит внутренний протокол маршрутизации (internal routing protocols), например, RIP (Routing Information Protocol, протокол маршрутной информации), который предложен в демоне BSD routed. Для маршрутизации между автономными системами используются внешние протоколы маршрутизации (external routing protocols) типа EGP (External Gateway Protocol) или BGP (Border Gateway Protocol). Они были предложены в демоне gated (разработка University of Cornell's).

TCP-расширения: использование с опциями -m tcp -p tcp


- -sport [!] [port[:port]]

Определяет порт, который должен использовать источник пакетов, чтобы соответствовать этому правилу. Можно задать диапазон, указав верхние и нижние границы, например: 20:25 задает все порты с 20 по 25 включительно. Символ ! переворачивает значение.


TCP-расширения: использование с опциями -m tcp -p tcp

- -sport [!] [port[:port]]

Определяет порт, который должен использовать источник пакетов, чтобы соответствовать этому правилу. Можно задать диапазон, указав верхние и нижние границы, например: 20:25 задает все порты с 20 по 25 включительно. Символ ! переворачивает значение.

- -dport [!] [port[:port]]

Задает порт, который должны использовать исходящие пакеты. В остальном аналогичен - -sport.

- -tcp-flags [!] mask comp

Определяет, что это правило должно работать, когда флажки в TCP-пакете соответствуют определениям mask и comp. mask

задает (через запятую) перечень флажков, а

comp указывает их состояние. Допустимы флажки: SYN, ACK, FIN, RST, URG, PSH, ALL или NONE. Это сложный параметр: ознакомьтесь со значением флажков в каком-нибудь хорошем описании протокола TCP, например, в RFC-793. Действие символа ! обычное для всех правил: он переворачивает значение.

[!] - -syn

Устанавливает, что у пакета должны быть выставлены в 1 флажок SYN и в 0 флажки ACK и FIN. Пакет с этими параметрами используется для создания TCP-соединения, и эту опцию можно использовать для отлова запросов подключения. Эта опция эквивалент для:

149.76.1.0
255.255.255.0 - fddi0
149.76.2.0
255.255.255.0 149.76.1.2 fddi0
149.76.3.0
255.255.255.0 149.76.1.3 fddi0
149.76.4.0
255.255.255.0 - eth0
149.76.5.0
255.255.255.0 149.76.1.5 fddi0
0.0.0.0
0.0.0.0 149.76.1.2 fddi0

- -tcp-flags SYN,RST,ACK SYN

Когда Вы используете оператор отрицания, правило будет соответствовать всем пакетам, флажки SYN и ACK

которых вместе не установлены в 1.



Типы серверов имен


Сервера имен, которые содержат всю информацию относительно хостов в пределах данной зоны, названы авторитетными для этой зоны и иногда упоминаются как authoritative или master name servers. Любой запрос относительно хоста в пределах этой зоны будет в конце концов передан одному из этих серверов.


Типы серверов имен

Сервера имен, которые содержат всю информацию относительно хостов в пределах данной зоны, названы авторитетными для этой зоны и иногда упоминаются как authoritative или master name servers. Любой запрос относительно хоста в пределах этой зоны будет в конце концов передан одному из этих серверов.

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

Одна из причин наличия нескольких серверов имен состoит в том, чтобы распределить груз работы, другая в надежности. Когда одна машина с сервером имен ломается, все запросы будут посылаться другим серверам. Конечно, эта схема не защищает Вас от сбоев сервера, при которых он отсылает неправильные ответы на все запросы DNS, например, от ошибок в программе сервера.

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



Три способа фильтрации Рассмотрим


(1) IP-пакет откуда-то пришел.

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

(2) Если он для этой машины, то обработан в местном масштабе.

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

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

Исходящий IP-пакет будет исследован, чтобы определить, есть ли имеющий силу маршрут для него, если нет, он будет пропущен.

(5) IP-пакет куда-то отправится.

В этой схеме поток 1-3-5 представляет нашу машину, направляющую данные между компьютером в нашей сети Ethernet на другой доступный компьютер через какую-то связь (в дальнейших примерах это будет PPP). Потоки 1-2 и 4-5 представляют ввод данных и выходные потоки сетевой программы, работающей на нашем локальном компьютере. Поток 4-3-2 представляет передачу данных по кольцевому внутреннему интерфейсу (loopback connection).

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

В ipfwadm и ipchains

правило Input применяется к потоку 1, правило Forwarding к потоку 3 и правило Output к потоку 5. Позже, при обсуждении netfilter, мы увидим, какие точки перехвата изменились так, чтобы правило Input применилось в потоке 2 и правило Output в потоке 4. Это имеет важное значение для того, как Вы структурируете свой набор правил, но общий принцип остается верным для всех версий Linux firewall.

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



Тупой (Dummy) интерфейс


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

Тупой (Dummy) интерфейс

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

Проблема автономных хостов в том, что они имеют только одно активное сетевое устройство, loopback, которому обычно назначен адрес 127.0.0.1. Но в некоторых случаях, вы должны послать данные к "официальному" IP-адресу локального хоста. Например, рассмотрим laptop vlite, который был отсоединен от сети. Приложение на vlite может понадобиться послать данные другому приложению на том же самом хосте. Поиск vlite в файле /etc/hosts выдает IP-адрес 172.16.1.65, таким образом приложение пытается послать данные этому адресу. Поскольку интерфейс loopback в настоящее время единственный активный интерфейс на машине, ядро не имеет никаких идей относительно этого адреса! Как следствие, ядро отказывается от пакета и возвращает приложению ошибку.

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

# ifconfig dummy vlite

# route add vlite



Учет по адресам


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

Учет по адресам

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

Допустим, у нас есть Linux-роутер, который обслуживает два департамента Virtual Brewery. Он имеет два устройства Ethernet, eth0 и eth1, по одному на департамент, и одно устройство PPP, ppp0, для связи через быстродействующую последовательную связь с университетским городком Groucho Marx University.

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

Следующая таблица показывает используемые нами адреса и интерфейсы:

Интерфейс

Адрес

Сетевая маска

Для ответа на вопрос, сколько данных каждый отдел передает по PPP, мы могли бы использовать правило, которое напоминает:

eth0
172.16.3.0 255.255.255.0
eth1
172.16.4.0 255.255.255.0

# ipfwadm -A both -a -W ppp0 -S 172.16.3.0/24 -b

# ipfwadm -A both -a -W ppp0 -S 172.16.4.0/24 -b

или:

# ipchains -A input -i ppp0 -d 172.16.3.0/24

# ipchains -A output -i ppp0 -s 172.16.3.0/24

# ipchains -A input -i ppp0 -d 172.16.4.0/24

# ipchains -A output -i ppp0 -s 172.16.4.0/24

или с iptables:

# iptables -A FORWARD -i ppp0 -d 172.16.3.0/24

# iptables -A FORWARD -o ppp0 -s 172.16.3.0/24

# iptables -A FORWARD -i ppp0 -d 172.16.4.0/24

# iptables -A FORWARD -o ppp0 -s 172.16.4.0/24

Первая половина каждого набора правил задает подсчет всех данных, передаваемых по интерфейсу ppp0 с исходным адресом или адресом назначения 172.16.3.0/24. Здесь полезна опция -b в ipfwadm и iptables. Вторая половина каждого набора правил задает то же самое, но для второй сети Ethernet.

Для ответа на вопрос, сколько трафика проходит между департаментами, нужно правило, которое выглядит следующим образом:

# ipfwadm -A both -a -S 172.16.3.0/24 -D 172.16.4.0/24 -b

или:

# ipchains -A forward -s 172.16.3.0/24 -d 172.16.4.0/24 -b

или:

# iptables -A FORWARD -s 172.16.3.0/24 -d 172.16.4.0/24

# iptables -A FORWARD -s 172.16.4.0/24 -d 172.16.3.0/24

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



Учет по пакетам ICMP


Протокол ICMP не использует сервисные номера портов, так что сбор статистики по нему труднее. ICMP использует ряд различных типов пакетов. Многие из их безобидны и нормальны, в то время, как другие появляются только при специальных обстоятельствах. Иногда пытаются обвалить систему, посылая огромное число пакетов ICMP. Эта атака называется ping flooding. Против такой атаки хорош IP firewall, а IP accounting позволит узнать, кто это сделал.

Учет по пакетам ICMP

Протокол ICMP не использует сервисные номера портов, так что сбор статистики по нему труднее. ICMP использует ряд различных типов пакетов. Многие из их безобидны и нормальны, в то время, как другие появляются только при специальных обстоятельствах. Иногда пытаются обвалить систему, посылая огромное число пакетов ICMP. Эта атака называется ping flooding. Против такой атаки хорош IP firewall, а IP accounting позволит узнать, кто это сделал.

ICMP не использует порты в отличие от TCP и UDP. Вместо них используются типы сообщений ICMP. Мы можем создать правила, чтобы учитывать каждый тип сообщений ICMP. Для этого нужно определить тип сообщения ICMP вместо номера порта в команде ipfwadm. Типы сообщений перечислены в разделе "Типы пакетов ICMP" главы 9.

Для сбора данных о передаче пакетов ICMP по всем типам сообщений используйте правило:

# ipfwadm -A both -a -P icmp -S 0/0 8

# ipfwadm -A both -a -P icmp -S 0/0 0

# ipfwadm -A both -a -P icmp -S 0/0 0xff

или в ipchains:

# ipchains -A forward -p icmp -s 0/0 8

# ipchains -A forward -p icmp -s 0/0 0

# ipchains -A forward -p icmp -s 0/0 -f

или в iptables:

# iptables -A FORWARD -m icmp -p icmp --sports echo-request

# iptables -A FORWARD -m icmp -p icmp --sports echo-reply

# iptables -A FORWARD -m icmp -p icmp -f

Первое правило собирает информацию относительно пакетов ICMP Echo Request (ping requests), второе правило собирает информацию относительно пакетов ICMP Echo Reply (ping replies). Третье правило собирает информацию относительно фрагментированных пакетов ICMP. Этот прием подобен описанному для фрагментированных пакетов TCP и UDP.

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



Учет по портам сервисов


Предположим, мы хотим также знать, какой именно трафик преобладает на связи через PPP. Например, надо выяснить, сколько данных проходит по протоколам FTP, smtp и World Wide Web.

Учет по портам сервисов

Предположим, мы хотим также знать, какой именно трафик преобладает на связи через PPP. Например, надо выяснить, сколько данных проходит по протоколам FTP, smtp и World Wide Web.

Для сбора этой информации пригоден такой скрипт с правилами:

#!/bin/sh # Collect FTP, smtp and www volume statistics for data carried on our # PPP link using ipfwadm # ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 ftp ftp-data ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 smtp ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 www

или:

#!/bin/sh # Collect ftp, smtp and www volume statistics for data carried on our # PPP link using ipchains # ipchains -A input -i ppp0 -p tcp -s 0/0 ftp-data:ftp ipchains -A output -i ppp0 -p tcp -d 0/0 ftp-data:ftp ipchains -A input -i ppp0 -p tcp -s 0/0 smtp ipchains -A output -i ppp0 -p tcp -d 0/0 smtp ipchains -A input -i ppp0 -p tcp -s 0/0 www ipchains -A output -i ppp0 -p tcp -d 0/0 www

или:

#!/bin/sh # Collect ftp, smtp and www volume statistics for data carried on our # PPP link using iptables. # iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport ftp-data:ftp iptables -A FORWARD -o ppp0 -m tcp -p tcp --dport ftp-data:ftp iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport smtp iptables -A FORWARD -o ppp0 -m tcp -p tcp --dport smtp iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport www iptables -A FORWARD -o ppp0 -m tcp -p tcp --dport www

Здесь есть пара интересных свойств. Во-первых, мы определили протокол. Когда мы определяем порты в наших правилах, мы должны также определить протокол потому, что TCP и UDP имеют отдельные наборы портов. Так как все эти услуги основаны на TCP, мы определяем именно этот протокол. Во-вторых, мы определили два сервиса, ftp и

ftp-data в одной команде. ipfwadm позволяет определять одиночные порты, диапазоны портов или произвольные списки портов. Команда ipchains позволяет определять любой одиночный порт или диапазон портов. Запись "ftp-data:ftp" означает "порты с ftp-data (20) по ftp (21)", так можно кодировать порты в ipchains и iptables. Когда вы имеете список портов в правиле учета, это означает, что любые данные для любого из портов в списке будут добавлены к общему количеству для этой записи. Поскольку FTP использует два порта, команды и данные, мы добавили их вместе к общему трафику FTP. Наконец, мы определили исходный адрес как 0/0, что соответствует всем адресам и требуется ipfwadm и ipchains для определения портов.




Теперь нас интересует соотношение полезного трафика по FTP, SMTP и World Wide Web к трафику по другим протоколам. Для этого зададим такие правила:
# ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 ftp ftp-data smtp www

# ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 1:19 22:24 26:79 81:32767

Если вы уже исследовали ваш файл /etc/services, вы увидите, что второе правило покрывает все порты за исключением (ftp, ftp-data, smtp и www).

Как сделать это с командами ipchains или iptables, ведь они позволяют только один параметр в спецификации порта? Мы можем эксплуатировать определяемые пользователем цепочки в учете так же легко, как в правилах firewall. Рассмотрим следующий подход:

# ipchains -N a-essent

# ipchains -N a-noness

# ipchains -A a-essent -j ACCEPT

# ipchains -A a-noness -j ACCEPT

# ipchains -A forward -i ppp0 -p tcp -s 0/0 ftp-data:ftp -j a-essent

# ipchains -A forward -i ppp0 -p tcp -s 0/0 smtp -j a-essent

# ipchains -A forward -i ppp0 -p tcp -s 0/0 www -j a-essent

# ipchains -A forward -j a-noness

Здесь мы создаем две определяемых пользователем цепочки: a-essent, где мы фиксируем данные для полезного трафика и a-noness, где мы собираем данные для всего остального. Затем добавим правила к цепочке forward, которые соответствуют полезным сервисам и задают переход в цепочку a-essent , которая только считает трафик. Последнее правило в нашей цепочке forward задает переход к цепочке a-noness, где тоже есть только одно правило, считающее трафик. Правило, которое переходит к цепочке a-noness, не будет достигнуто любым пакетом из полезных сервисов, поскольку они будут приняты в их собственной цепочке. Наши счетчики для полезных и остальных услуг будут доступны только в правилах внутри тех цепочек. Это только один подход, который вы могли бы избрать. Реализация того же самого подхода для iptables:

# iptables -N a-essent

# iptables -N a-noness

# iptables -A a-essent -j ACCEPT

# iptables -A a-noness -j ACCEPT

# iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport ftp-data:ftp -j a-essent

# iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport smtp -j a-essent

# iptables -A FORWARD -i ppp0 -m tcp -p tcp --sport www -j a-essent

# iptables -A FORWARD -j a-noness

<



/p>

Это выглядит достаточно простым. К сожалению, имеется маленькая, но неизбежная проблема при попытке делать учет сервисным типом. Мы обсуждали в одной из предыдущих глав роль MTU в работе с сетями TCP/IP. MTU определяет самый большой пакет, который будет передан на сетевое устройство. Когда пакет получен маршрутизатором, и этот пакет больше, чем MTU интерфейса, который должен его передать, маршрутизатор выполняет фрагментацию (fragmentation). Маршрутизатор разбивает большой пакет на маленькие части не больше, чем MTU интерфейса, и затем передает эти части. Маршрутизатор формирует новые заголовки для получившихся пакетов, по которым получатель сможет восстановить исходный пакет. К сожалению, в течение фрагментации значение порта будет потеряно для всего, кроме первого фрагмента. Это означает, что учет IP не может правильно считать фрагментированные пакеты, а только первые фрагменты или нефрагментированные пакеты. Имеется маленькая хитрость ipfwadm, которая позволяет считать пакеты, даже не зная порт второго и последующих фрагментов. Первая версия программного обеспечения Linux accounting назначала фрагментам поддельный номер порта 0xFFFF, который мы могли перехватывать для учета. Мы фиксируем вторые и последующие фрагменты, используя правило:

# ipfwadm -A both -a -W ppp0 -P tcp -S 0/0 0xFFFF

Реализация IP chains имеет немного более сложное решение, но результат тот же самый. При использовании команды ipchains надо использовать правило:
# ipchains -A forward -i ppp0 -p tcp -f

Для iptables подойдет правило:
# iptables -A FORWARD -i ppp0 -m tcp -p tcp -f

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

В ядрах 2.2 вы можете выбирать при настройке ядра опцию, которая решает эту проблему, если ваша Linux-машина действует как одиночная точка доступа к сети. Если вы включили при построении ядра опцию IP: always defragment, все пакеты будут повторно собраны маршрутизатором Linux перед маршрутизацией и передачей. Эта операция выполняется перед firewall, и учетный блок видит пакеты. Таким образом, фрагментов просто не будет. В ядрах 2.4 откомпилируйте и загрузите netfilter с модулем forward-fragment.


Учет по протоколам


Допустим, нам интересно, какие протоколы используются нашим трафиком: TCP, UDP или ICMP. Тут нам поможет правило:

# ipfwadm -A both -a -W ppp0 -P tcp -D 0/0

# ipfwadm -A both -a -W ppp0 -P udp -D 0/0

# ipfwadm -A both -a -W ppp0 -P icmp -D 0/0

или:

# ipchains -A forward -i ppp0 -p tcp -d 0/0

# ipchains -A forward -i ppp0 -p udp -d 0/0

# ipchains -A forward -i ppp0 -p icmp -d 0/0

или:

# iptables -A FORWARD -i ppp0 -m tcp -p tcp

# iptables -A FORWARD -o ppp0 -m tcp -p tcp

# iptables -A FORWARD -i ppp0 -m udp -p udp

# iptables -A FORWARD -o ppp0 -m udp -p udp

# iptables -A FORWARD -i ppp0 -m icmp -p icmp

# iptables -A FORWARD -o ppp0 -m icmp -p icmp

С этими правилами трафик через интерфейс ppp0 будет проанализирован, чтобы определить тип протокола: TCP, UDP или IMCP, и соответствующие счетчики будут модифицированы для каждого пакета.


Учет по протоколам

Допустим, нам интересно, какие протоколы используются нашим трафиком: TCP, UDP или ICMP. Тут нам поможет правило:

# ipfwadm -A both -a -W ppp0 -P tcp -D 0/0

# ipfwadm -A both -a -W ppp0 -P udp -D 0/0

# ipfwadm -A both -a -W ppp0 -P icmp -D 0/0

или:

# ipchains -A forward -i ppp0 -p tcp -d 0/0

# ipchains -A forward -i ppp0 -p udp -d 0/0

# ipchains -A forward -i ppp0 -p icmp -d 0/0

или:

# iptables -A FORWARD -i ppp0 -m tcp -p tcp

# iptables -A FORWARD -o ppp0 -m tcp -p tcp

# iptables -A FORWARD -i ppp0 -m udp -p udp

# iptables -A FORWARD -o ppp0 -m udp -p udp

# iptables -A FORWARD -i ppp0 -m icmp -p icmp

# iptables -A FORWARD -o ppp0 -m icmp -p icmp

С этими правилами трафик через интерфейс ppp0 будет проанализирован, чтобы определить тип протокола: TCP, UDP или IMCP, и соответствующие счетчики будут модифицированы для каждого пакета.



Удаление набора правил Одна последняя


Параметр -f в команде ipfwadm удалит все правила заданного типа. ipchains

использует параметр -F, который делает то же самое:

# ipfwadm -A -f

или:

# ipchains -F

или:

# iptables -F

Это удаляет все Ваши правила, избавляя от необходимости убирать каждое в отдельности. Обратите внимание, что в ipchains эта операция не уничтожает заданных пользовательских цепочек, а только вычищает из них правила.



UDP-расширения: использование с опциями -m udp -p udp


- -sport [!] [port[:port]]

Определяет порт, который должен использовать источник пакетов, чтобы соответствовать этому правилу. Можно задать диапазон, указав верхние и нижние границы, например: 20:25 задает все порты с 20 по 25 включительно. Символ ! переворачивает значение.


UDP-расширения: использование с опциями -m udp -p udp

- -sport [!] [port[:port]]

Определяет порт, который должен использовать источник пакетов, чтобы соответствовать этому правилу. Можно задать диапазон, указав верхние и нижние границы, например: 20:25 задает все порты с 20 по 25 включительно. Символ ! переворачивает значение.

- -dport [!] [port[:port]]

Задает порт, который должны использовать исходящие пакеты. В остальном аналогичен - -sport.



Упаковка статей Упаковщик новостей


count

Где count задает число байтов в статье. Когда используется пакетное сжатие, возникающий в результате файл сжат в целом и содержать другую строку в соответствии c сообщением, которое нужно использовать для распаковки. Стандартное средство сжатия compress, которое отмечен как

#! cunbatch

Иногда при необходимости посылать пакеты через программное обеспечение почты, которое удаляет восьмой бит всех данных, сжатый пакет может быть защищен, используя c7-encoding;; эти пакеты будут отмечены как c7unbatch.

Когда пакет приходит на удаленную машину, rnews

проверяет эти маркеры и обрабатывает пакет соответственно. Некоторые абоненты также используют другие инструментальные средства сжатия, подобные gzip. Такие файлы будут помечены как zunbatch. C-News не распознает подобные ненормативные заголовки; Вы должны изменить исходный код, чтобы поддерживать их.

В C-News пакетирование статьи выполняется командой /usr/lib/news/batch/sendbatches, которая берет список статей из файла site/togo и помещает их в отдельный newsbatches. Это должно быть выполнено раз в час или даже более часто, в зависимости от объема трафика. Операция управляется файлом batchparms в /var/lib/news . Этот файл описывает максимальный размер пакета для каждого сервера, программу пакетирования, необязательную программу сжатия и транспорт для доставки к этому удаленному серверу. Вы можете определять параметры пакетирования, также как набор заданных по умолчанию параметров для абонента.

При установке C-News Вы, вероятно, найдете файл

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

site size max batcher muncher transport

site

site

имя сервера, для которого применяется запись. Файл togo для этого сервера должен постоянно находится в out.going/togo. Имя /default/ обозначает заданный по умолчанию сервер.

size




size

максимальный размер созданных пакетов статей (перед сжатием). Для одиночных статей больших, чем этот размер, C-News делает исключение и помещает их в одиночный пакет.

max

max

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

C-News определяет число поставленных в очередь пакетов, используя скрипт queuelen в /usr/lib/news . Если вы установили C-News в формате prepackaged, скрипт не должен нуждаться в редактировании, но если Вы должны использовать другую разновидность spool-каталогов, например, Taylor UUCP, Вам может быть необходимо написать Ваш собственный. Если Вы не заботитесь относительно числа spool-файлов (например, Вы единственный пользователь данного компьютера, и Вы не пишете статьи по мегабайту каждая), Вы можете заменить содержимое скрипта просто на команду exit 0.

batcher

Поле batcher

содержит команду, используемую для создания пакета из списка статей в файле togo. Обычно это batcher. Для других целей можно использовать альтернативные команды. Например, протокол ihave/sendme требует, чтобы список статей был превращен в сообщения управления ihave или sendme, которые зарегистрированы в группе новостей to.site . Это выполняется batchih и

batchsm.

muncher

Поле muncher

определяет команду, используемую для сжатия. Обычно это compcun, команда, которая создает сжатый пакет. В качестве альтернативы, Вы могли бы использовать muncher, который использует gzip, скажем

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

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

uncompress, Вы можете определить nocomp, который не выполняет сжатие.

transport

Последнее поле, transport, описывает транспорт, который нужно использовать. Доступно несколько стандартных команд для различных транспортов, чьи имена начинаются с via. sendbatches передает им имя машины адресата в командной строке. Если запись



batchparms не /default/, sendbatches получает имя машины из поля site, удаляя все последующее, включая первую точку или наклонную черту вправо. Если запись batchparms была /default/, используются имена каталогов в

out.going.

Чтобы выполнять пакетирование для специфического сервера, Вы вызываете это как:

# su news -c "/usr/lib/news/batch/sendbatches site"

Когда вызов происходит без аргументов, sendbatches

обрабатывает все пакетные очереди. Интерпретация понятия “все” зависит от присутствия заданной по умолчанию записи в

batchparms. Если она найдена, проверяются все каталоги в /var/spool/news/out.going, иначе циклически просматриваются все записи в batchparms. Обратите внимание, что sendbatches при просмотре каталога out.going берет только те каталоги, которые не содержат точку или знак @ как имя сервера.

Имеются две команды, которые используют uux, чтобы выполнить rnews на удаленной системе; viauux и viauuxz. Последняя устанавливает флаг –z для того, чтобы отменить сообщения об успехе для каждой переданной статьи. Другая команда, viamail, посылает пакеты статей пользователю rnews в удаленной системе по почте. Полный список транспорта есть на man-странице newsbatch.

Все команды из последних трех полей нужно расположть или в out.going/site, или в

/usr/lib/news/batch. Большинство их сделаны так, чтобы Вы могли легко приспосабливать новые инструментальные средства для Ваших потребностей. Они вызываются как канал. Список статей подается дозатору на стандартном вводе, который создает пакет на стандартном выводе. Он канально передается в muncher и так далее.

Пример файла:

# batchparms file for the brewery # site | size |max |batcher |muncher |transport #-------------+--------+-------+---------+-----------+----------- /default/ 100000 22 batcher compcun viauux swim 10000 10 batcher nocomp viauux


Управление очередями печати


Команда pqlist показывает все очереди печати, доступные Вам на указанном сервере. Если Вы не определяете сервер в командной строке, используя опцию -S или логин с паролем, они будут приниматься из заданной по умолчанию записи в файле /.nwclient:


Управление очередями печати

Команда pqlist показывает все очереди печати, доступные Вам на указанном сервере. Если Вы не определяете сервер в командной строке, используя опцию -S или логин с паролем, они будут приниматься из заданной по умолчанию записи в файле /.nwclient:

# pqlist -S vbrew_f1 -U guest -n

Server: ALES_F1 Print queue name Queue ID --------------------------- TEST AA02009E Q2 EF0200D9 NPI223761_P1 DA03007C Q1 F1060004 I-DATA 0D0A003B NPI223761_P3 D80A0031

Пример показывает список очередей печати, доступных пользователю guest на сервере ALES_F1.

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

$ pqstat -S ALES_F1 NPI223761_P1

Server: ALES_F1 Queue: NPI223761_P1 Queue ID: 6A0E000C Seq Name Description Status Form Job ID ---------------------------------------------------------------------- 1 TOTRAN LyX document - proposal.lyx Active 0 02660001

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

Команда pqrm используется, чтобы удалить задания по выводу на печать из определенной очереди печати. Чтобы удалить работу в очереди, скомандуйте:

$ pqrm -S ALES_F1 NPI223761_P1 02660001

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



Установка Ethernet Сейчас Linux


Когда-то раньше в руководствах по Linux пытались перечислить все допустимые карты. Сейчас такой список займет слишком много места. К счастью, Paul Gortmaker поддерживает Ethernet HOWTO, в котором есть список всех карт и информация о том, как заставить их работать в Linux. Документ рассылается в группу новостей comp.os.linux.answers и доступен на зеркалах Linux Documentation Project.

Даже если Вы уверены, что знаете, как установить специфический тип платы Ethernet на своей машине, все равно стоит ознакомиться с Ethernet HOWTO на предмет возможных хитростей. Это поможет сэкономить немало сил для DMA-карт Ethernet, которые используют тот же канал DMA, что и контроллер Adaptec 1542 SCSI. Если их не разделить, Вы получите карту Ethernet, записывающую данные пакетов в произвольное место на Вашем жестком диске.

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



Установка Hostname Большинство


Обычной практикой является использование локального имени (без имени домена). Например, машины Virtual Brewery (описаны в

приложении A) могут иметь имена vale.vbrew.com и vlager.vbrew.com. Эти имена полные, то есть с именем домена (fully qualified domain names, FQDNs. Их локальные имена будут первыми компонентами полных, например, vale. Однако, поскольку локальные имена часто используется, чтобы искать IP-адрес компьютера, Вы должны удостовериться, что сервер имен способен найти адрес по имени. Это обычно означает, что Вы должны внести имя в файл /etc/hosts.

Некоторые люди предлагают использовать команду

domainname, чтобы сообщить ядру оставшуюся часть FQDN. Этим путем Вы могли бы объединять вывод из hostname и domainname для получения FQDN. Однако, это в самом лучшем случае только наполовину верно. domainname

вообще используется, чтобы установить домен NIS, который может полностью отличаться от домена DNS, к которому компьютер принадлежит. Вместо этого, чтобы гарантировать, что короткая форма пригодна к использованию в поиске, все новые версии hostname добавляют соответствующую запись в сервер имен или пишут полное доменное имя в файл /etc/hosts. Затем можно использовать параметр --fqdn в команде

hostname для получения полного имени.



Установка IP-адресов Если Вы конфигурируете


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

Компьютеры в локальной сети обычно должны совместно использовать адреса из той же самой логической IP-сети. Следовательно, Вы должны назначить сетевой адрес IP. Если Вы имеете несколько физических сетей, Вы должны назначить им различные сетевые адреса или использовать подсети, чтобы разделить адресный интервал IP на несколько подсетей. Последний способ подробно рассмотрен в разделе "Создание подсетей".

При выборе сетевого IP-адреса многое зависит от того, предполагаете ли Вы выходить в Internet в ближайшем будущем. Если да, получите официальный IP-адрес сейчас, чтобы потом не перенастраивать систему. Попросите, чтобы Ваш провайдер помог Вам. Если Вы хотите получить сетевой адрес на всякий случай, запросите Сетевое Заявление: анкету адреса с hostmaster@internic.net или Network Information Center Вашей страны, если он имеется.

Если Ваша сеть не связана с Internet и не будет связана в ближайшем будущем, Вы свободны выбрать любой допустимый сетевой адрес. Только убедитесь, что никакие пакеты не могут из Вашей сети попасть в Internet! Чтобы быть уверенным в том, что даже в случае их попадания в Internet, они не создадут проблем, используйте один из сетевых адресов, зарезервированных для частного использования. Internet Assigned Numbers Authority (IANA) отложил несколько сетевых адресов из классов A, B и C, которые Вы можете использовать без регистрации. Эти адреса имеют силу только внутри частной сети и непригодны для сетевого взаимодействия в Internet. Они определены в RFC 1597 и перечислены в

таблице 2-1 в главе 2. Обратите внимание, что вторые и третьи блоки содержат 16 и 256 подсетей соответственно.

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

В дальнейшем мы предполагаем, что используется сеть класса B, скажем 172.16.0.0. Конечно, сети класса C определенно удовлетворит почти всех, но я использую именно сеть класса B ради простоты; это сделает примеры подсетей в следующем разделе этой главы немного более интуитивными.



Установка исполняемых модулей


Если Вы хотите компилировать и устанавливать сетевые прикладные программы стандарта TCP/IP самостоятельно, Вы можете получать их исходные тексты с большинства Linux FTP серверов. Все современные дистрибутивы Linux включают богатый набор сетевых прикладных программ TCP/IP, например, браузеры World Wide Web, программы telnet и ftp и второстепенные сетевые утилиты, вроде talk. Все это компилируется довольно просто, при условии пунктуального следования инструкциям в пакете исходного кода.



Установка параметров синхронизации для IP Masquerade


Когда новое подключение установлено, программное обеспечение IP masquerade создает ассоциацию в памяти между компьютерами, связанными с подключением. Вы можете рассматривать эти ассоциации в любое время в файле /proc/net/ip_masquerade Эти ассоциации имеют время ожидания бездеятельности. После окончания этого времени связь удаляется.

Установка параметров синхронизации для IP Masquerade

Когда новое подключение установлено, программное обеспечение IP masquerade создает ассоциацию в памяти между компьютерами, связанными с подключением. Вы можете рассматривать эти ассоциации в любое время в файле /proc/net/ip_masquerade Эти ассоциации имеют время ожидания бездеятельности. После окончания этого времени связь удаляется.

Вы можете устанавливать время ожидания, используя

ipfwadm. Синтаксис в общем виде такой:

ipfwadm -M -s

Для ipchains:

ipchains -M -S

Реализация iptables использует намного более длинные значения по умолчанию для таймеров и не позволяет Вам устанавливать их. Каждое из этих значений представляет таймер, используемый программным обеспечением IP masquerade. Следующая таблица описывает таймеры и их назначение:

Имя

Описание

Время ожидания сеанса TCP. Задает как долго TCP-подключение может оставаться неактивным до того, как ассоциация для него удалится.

Время ожидания TCP после FIN. Как долго ассоциация останется после того, как TCP-подключение было разъединено.

Время ожидания сеанса UDP. Как долго UDP-подключение может оставаться неактивным перед тем, как ассоциация для него удалится.



Устаревшие новости В Bnews, устаревание


Иногда Вы хотите сохранять статьи из некоторых групп даже после того, как они устарели; например, программы, зарегистрированные в comp.sources.unix. Это называется архивированием. Файл explist разрешает Вам отмечать группы для архивирования.

Записи в explist имеют следующий формат:

tcp
tcpfin
udp

grouplist perm times archive

grouplist представляет собой разделенный запятыми список newsgroups (групп новостей), к которым применяется эта запись. Иерархии могут быть определены префиксом имени группы, необязательно добавляется ключ all. Например, для записи, обращающейся ко всем группам ниже иерархии comp.os, Вы могли бы ввести comp.os или

comp.os.all.

При устаревании новости из группы, имя будет проверено для всех записей в explist в данном порядке. Применяется первая соответствующая запись. Например, чтобы отбросить большую часть comp через четыре дня, кроме comp.os.linux.announce, которую Вы хотите хранить в течение недели, Вы просто должны иметь запись для comp.os.linux.announce, которая определяет семидневный период хранения, сопровождаемую записью для comp, которая определяет четыре дня.

Поле perm задает детали, если запись применяется к модерируемой или другой группе с особым статусом. Оно может принимать значения m, u или x, которые обозначают модерируемый, немодерируемый или любой тип.

Третье поле, times, обычно содержит только одно число. Это число дней, после которых статьи будут устаревать, если им не были назначены особые даты в поле Expires: в заголовке статьи. Обратите внимание, что это число дней подсчитывается с момента поступления

на Вашу машину, а не с даты отправки статьи в группу!

Поле times может быть и более сложным. Оно может быть комбинацией до трех чисел, отделяемых от друг друга тире. Первое обозначает число дней, которые должны пройти прежде, чем статья будет рассматривается кандидатом на устаревание. Использовать значение отличное от нуля редко бывает нужно. Второе поле определяет вышеупомянутое заданное по умолчанию число дней, после которых статья будет устаревать. Третья часть определяет число дней, после которых статья устареет безоговорочно независимо от того, имеет ли она поле Expires: или нет. Если задано только среднее число, другие два принимают значения по умолчанию. Они могут быть определены, используя специальную запись /bounds/, которая описана ниже.




Четвертое поле, archive, обозначает, должна ли newsgroup быть заархивирована и, если да, то где. Если никакого архивирования не нужно, должно использоваться тире. Иначе Вы либо используете полное имя (указывающее на каталог), либо знак (@). Знак обозначает заданный по умолчанию каталог архивов, который должен быть задан doexpire, используя параметр

–a в командной строке. Каталог архивов должен принадлежать news. Когда doexpire

архивирует статью из, скажем, comp.sources.unix , он сохраняет ее в подкаталоге comp/sources/unix в каталоге архивов, создавая его если он не существует. Но сам каталог архивов не будет создан автоматически.

Имеется две специальных записи в файле explist, на которые полагается doexpire. Вместо списка newsgroups, они имеют ключевые слова /bounds/ и /expired/. Запись /bounds/ содержит значения по умолчанию для трех значений поля times, описанного выше.

Поле /expired/ определяет, как долго C-News будет хранить строки в файле хронологии. Это необходимо, потому что C-News не будет удалять строку из файла хронологии, если соответствующая статья устарела, но будет хранить ее в случае, если дубликат должен прибыть после этой даты. Если Вы подпитываетесь новостями с одного сайта, можете задать небольшое значение. Иначе установите порядка двух недель, в зависимости от времени хранения статей (особенно в UUCP-сетях).

Простой файл explist воспроизведен ниже:
# keep history lines for two weeks. No article gets more than three months /expired/ x 14 - /bounds/ x 0-1-90 - # groups we want to keep longer than the rest comp.os.linux.announce m 10 - comp.os.linux x 5 - alt.folklore.computers u 10 - rec.humor.oracle m 10 - soc.feminism m 10 - # Archive *.sources groups comp.sources,alt.sources x 5 @ # defaults for tech groups comp,sci x 7 - # enough for a long weekend misc,talk x 4 - # throw away junk quickly junk x 1 - # control messages are of scant interest, too control x 1 - # catch-all entry for the rest of it all x 2 -

С устареванием в C News имеется ряд потенциальных проблем при чистке. Например, Ваша программа чтения новостей (newsreader) могла бы полагаться на третье поле файла active, которое содержит номер самой старой статьи. При устаревании статьи C-News не модифицирует это поле. Если Вы хотите, чтобы это поле представляло реальную ситуацию, Вы должны выполнить программу, называемую updatemin, после каждого выполнения doexpire. В старых версиях C-News аналогичные задачи возложены на скрипт upact.

Кроме того, C-News не сканирует каталоги новостей в поисках устаревших. Вместо этого он анализирует файл хронологии (файл

history). А ведь совсем не факт, что этот файл соответствует реальному положению дел! Например, если он оказался неправильным, на диске появятся "вечные" статьи, которые не удалятся никогда, а вот место занимать будут. Для борьбы с ними есть скрпт addmissing в каталоге /usr/lib/news/maint, который добавляет потерянные статьи в файл, или mkhistory, который просто заново создает файл history. Эти команды должны выполняться от имени пользователя news, иначе Вы получите еще худшую ситуацию, когда C-News вообще не может прочитать или обновить файл history.


Утилита ipchains


Аналогично ipfwadm, утилита

ipchains может несколько сбивать с толку, пока к ней не привыкнешь. Она обеспечивает всю гибкость ipfwadm с упрощенным синтаксисом и дополнительно обеспечивает механизм наборов или цепочек (“chaining”), который позволяет Вам управлять множеством правил и связывать их друг с другом. Я рассмотрю формирование цепочки правил в отдельном разделе чуть позже.


Утилита ipchains

Аналогично ipfwadm, утилита

ipchains может несколько сбивать с толку, пока к ней не привыкнешь. Она обеспечивает всю гибкость ipfwadm с упрощенным синтаксисом и дополнительно обеспечивает механизм наборов или цепочек (“chaining”), который позволяет Вам управлять множеством правил и связывать их друг с другом. Я рассмотрю формирование цепочки правил в отдельном разделе чуть позже.

Команда ipchains появилась в дистрибутивах Linux на ядрах серии 2.2. Исходники можно взять на

http://www.rustcorp.com/linux/ipchains. В этот пакет исходников входит скрипт ipfwadm-wrapper, который имитирует работу ipfwadm, используя возможности

ipchains. Это существенно упрощает к новой версии firewall.



Утилита ipfwadm


Утилита ipfwadm (IP Firewall Administration) нужна для управления правилами в ядрах до версии 2.2.0. Ее синтаксис очень сложен, но я приведу несколько наиболее простых примеров.

Утилита ipfwadm

Утилита ipfwadm (IP Firewall Administration) нужна для управления правилами в ядрах до версии 2.2.0. Ее синтаксис очень сложен, но я приведу несколько наиболее простых примеров.

Утилита ipfwadm есть во всех современных дистрибутивах Linux, но, возможно, не ставится по умолчанию. Может иметься специальный сетевой пакет, который надо поставить отдельно. Найти исходный код можно на ftp.xos.nl в каталоге /pub/linux/ipfwadm.



Утилита iptables


Синтаксис iptables очень похож на синтаксис ipchains. Разница в поддержке модулей расширения и ряде новшеств в фильтрации пакетов. Разумеется, я приведу пример и для iptables, так что Вы сможете сравнить эти две утилиты.


Утилита iptables

Синтаксис iptables очень похож на синтаксис ipchains. Разница в поддержке модулей расширения и ряде новшеств в фильтрации пакетов. Разумеется, я приведу пример и для iptables, так что Вы сможете сравнить эти две утилиты.

Утилита iptables входит в пакет netfilter, исходники которого можно скачать с http://www.samba.org/netfilter. Она также входит в дистрибутивы Linux на ядре 2.4. Правда, поскольку это ядро еще находится на стадии тестирования, я пока не встречал дистрибутивов на нем.

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



Утилиты настройки интерфейса IPX


Greg Page разработал набор утилит настройки IPX, который является обычным пакетом в современных дистрибутивах и может быть также получен в исходной форме по anonymous FTP с http://metalab.unc.edu/

(файл /pub/Linux/system/filesystems/ncpfs/ipx.tgz).


Утилиты настройки интерфейса IPX

Greg Page разработал набор утилит настройки IPX, который является обычным пакетом в современных дистрибутивах и может быть также получен в исходной форме по anonymous FTP с http://metalab.unc.edu/

(файл /pub/Linux/system/filesystems/ncpfs/ipx.tgz).

Скрипт rc обычно выполняет инструментальные средства IPX при загрузке.



Uucico сообщает, что сайт уже заблокирован


Это означает, что uucico обнаружил файл блокировки для удаленной системы в /var/spool/uucp. Файл блокировки может остаться от прошлого обращения к системе, если ее работа была прервана некорректно. Однако, также правдоподобно, что есть другой процесс uucico, который пробует вызвать удаленную систему, но по какой-то причине связь пока не установил. Если этот процесс не преуспел в соединение с удаленной системой, уничтожьте его и удалите все файлы блокировки, которые он оставил.


Uucico сообщает, что сайт уже заблокирован

Это означает, что uucico обнаружил файл блокировки для удаленной системы в /var/spool/uucp. Файл блокировки может остаться от прошлого обращения к системе, если ее работа была прервана некорректно. Однако, также правдоподобно, что есть другой процесс uucico, который пробует вызвать удаленную систему, но по какой-то причине связь пока не установил. Если этот процесс не преуспел в соединение с удаленной системой, уничтожьте его и удалите все файлы блокировки, которые он оставил.



Самое лучшее решение проблем маршрутизации


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

UUCP и RFC-822

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

Это очень хорошо работает со схемой smart-host routing

маршрутизации, описанной выше. Глобальная информация маршрутизации поддерживается шлюзом, а машины внутри области получают только маленький файл paths, который перечисляет маршруты внутри их области и маршрут к хабу почты. Даже шлюз почты не должен иметь информации маршрутизации для каждой UUCP-машины в мире. Например, запись pathalias, показанная ниже направляет всю почту для абонента в домене sub.org на машину smurf:

.sub.org swim!smurf!%s

Любая почта, адресованная claire@jones.sub.org будет послана на машину swim с адресом smurf!jones!claire.

Иерархическая организация области имен позволяет серверам почты смешивать более специфические маршруты с менее специфическими. Например, система во Франции может иметь специфические маршруты для подобластей fr, но направлять любую почту для машин в области США на некоторую систему в США. Таким образом, основанная на областях маршрутизация значительно уменьшает размер баз данных маршрутизации и административные затраты.



Основная польза от применения имен области в UUCP-среде в том, что согласие с RFC 822 разрешает простой переход между UUCP-сетями и Internet. Многие UUCP области в настоящее время имеют связь со шлюзами Internet, которые действуют как их smart-host routing. Посылка сообщений через Internet быстрее, и информация маршрутизации намного более надежна, потому что машины Internet могут использовать DNS вместо карт Usenet.

Чтобы быть доступными из Internet, uucp-домены обычно имеют шлюз в Internet и объявляют запись MX для них (MX-записи были описаны выше). Например, допустим, что moria принадлежит к домену orcnet.org. Машина gcc2.groucho.edu действует как шлюз в Internet. Следовательно, moria использовала бы gcc2 как smart-host так, чтобы вся почта для иностранных областей была передана через Internet. С другой стороны, gcc2 объявил бы запись MX для *.orcnet.org и передавал всю входящую почту для абонентов orcnet через машину moria.

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

Следовательно, некоторое отображение между именами RFC 822 и UUCP hostname необходимо. Один общий способ отображения FQDN на имена UUCP состоит в том, чтобы использовать для этого файл pathalias:

moria.orcnet.org ernie!bert!moria!%s

Это создаст чистый путь uucp-стиля из адреса, который определяет имя домена. Некоторые почтовые программы имеют для этого специальные файлы: sendmail, например, использует

uucpxtable.

Обратное преобразование (domainizing)) иногда требуется при посылке почты из UUCP-сети в Internet. Как только отправитель почты использует имя домена в адресе назначения, этой проблемы можно избежать. не удаляя имя области из адреса конверта при пересылке сообщения на smart-host. Однако, все еще есть абоненты UUCP, которые не являются частью домена. Они обычно определяются добавлением псевдодомена uucp.



База данных pathalias обеспечивает направляющую информацию в uucp-сетях. Типичная запись походит на эту (имя сервера и путь отделяются метками табуляции):

moria.orcnet.org ernie!bert!moria!%s moria ernie!bert!moria!%s

Это направляет любое сообщение к moria через ernie и bert . Полное доменное имя moria и его имя в UUCP должны быть заданы, если почтовая программа не имеет отдельного способа связи имен.

Если Вы хотите направлять все сообщения на машины внутри некоторой области на сервер почты, Вы можете также определять путь в базе данных pathalias, давая имя области как целевой с предшествующей точкой. Например, если все машины в sub.org могут быть достигнуты через swim!smurf, запись pathalias могла бы выглядеть следующим образом:

.sub.org swim!smurf!%s

Запись в файл pathalias является допустимой только, когда Вы имеете сервер, который не должен делать много маршрутизации. Если Вы должны делать маршрутизацию для большого количества машин, лучший способ использовать команду pathalias, чтобы создать файл из файлов карты. Карты могут поддерживаться намного проще, потому что Вы можете просто добавлять или удалять систему, редактируя запись карты системы, и вновь создавать файл карты. Хотя карты, изданные Usenet Mapping Project, не очень хороши для маршрутизации, UUCP-сети могут обеспечивать информацию маршрутизации в их собственном наборе карт.

Файл карты в основном состоит из списка абонентов, печатая абонентов каждого опроса системы. Имя системы начинается в первом столбце и сопровождается отделенным запятой списком связей. Список может быть продолжен через символ перевода строки, если следующая строка начинается с метки табуляции. Каждая связь состоит из имени машины, сопровождаемого стоимостью, данной в скобках. Доступность определяется выражением, состоящим из чисел с ключевыми словами, например, DAILY или WEEKLY. Строки, начинающиеся знаком #, игнорируются.

Например, рассмотрим moria, который опрашивает swim.twobirds.com два раза в день, и bert.sesame.com только раз в неделю. Кроме того, связь с bert использует медленный модем на 2400bps. Машина moria издаст следующую запись карты:



moria.orcnet.org bert.sesame.com(DAILY/2), swim.twobirds.com(WEEKLY+LOW) moria.orcnet.org = moria

Последняя строка делает moria известной под именем UUCP. Обратите внимание, что для этой связи должно быть DAILY/2, при вызове два раза в день.

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

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

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

#N monad, monad.swb.de, monad.swb.sub.org #S AT 486DX50; Linux 0.99 #O private #C Olaf Kirch #E okir@monad.swb.de #P Kattreinstr. 38, D-64295 Darmstadt, FRG #L 49 52 03 N / 08 38 40 E #U brewhq #W okir@monad.swb.de (Olaf Kirch); Sun Jul 25 16:59:32 MET DST 1993 # monad brewhq(DAILY/2) # Domains monad = monad.swb.de monad = monad.swb.sub.org

Незаполненное пространство после первых двух символов представляет собой метку табуляции. Значение большинства полей довольно очевидно; Вы получите детализированное описание в любой области, в которой Вы регистрируетесь. Поле L наиболее забавно: оно задает Вашу географическую позицию в latitude/longitude и используется, чтобы рисовать карты postscript, которые показывают всех абонентов для каждой страны.


UUCP поверх TCP


В первый момент это может показаться абсурдом, но на самом деле UUCP поверх TCP не такая уж плохая идея, особенно при пересылке большого количества данных, типа новостей Usenet. На TCP-узлах новостями в основном обмениваются, используя NNTP протокол, в котором статьи запрашиваются и посылаются индивидуально, без сжатия и прочей оптимизации. Хотя и подходящая для больших узлов с большим объемом новостей, эта методика не подходит для небольших участков сети, которые получают новости медленным соединением типа ISDN. Им удобней объединить качества TCP с преимуществами посылки новостей в больших пакетах, которые могут быть сжаты и таким образом перемещаться с очень низкими затратами. Стандартный способ передать эти пакеты состоит в том, чтобы использовать UUCP поверх TCP.


UUCP поверх TCP

В первый момент это может показаться абсурдом, но на самом деле UUCP поверх TCP не такая уж плохая идея, особенно при пересылке большого количества данных, типа новостей Usenet. На TCP-узлах новостями в основном обмениваются, используя NNTP протокол, в котором статьи запрашиваются и посылаются индивидуально, без сжатия и прочей оптимизации. Хотя и подходящая для больших узлов с большим объемом новостей, эта методика не подходит для небольших участков сети, которые получают новости медленным соединением типа ISDN. Им удобней объединить качества TCP с преимуществами посылки новостей в больших пакетах, которые могут быть сжаты и таким образом перемещаться с очень низкими затратами. Стандартный способ передать эти пакеты состоит в том, чтобы использовать UUCP поверх TCP.

В файле sys Вы определяете систему, которую нужно вызвать через TCP.

system gmu address news.groucho.edu time Any port tcp-conn chat ogin: vstout word: clouseau

Команда address задает IP-адрес машины или ее полное доменное имя. Соответствующий участок файла port выглядел бы так:

port tcp-conn type tcp service 540

Этот пример говорит, что TCP-соединение должно использоваться, когда файл sys ссылается на tcp-conn , и что uucico должен пытаться соединяться с TCP-портом 540 на удаленной машине. Это заданный по умолчанию номер порта для обслуживания UUCP. Вместо номера порта, Вы можете также давать символическое имя порта командой service. Номер порта, соответствующий этому имени будет найден в файле

/etc/services. Общее имя для UUCP-сервиса uucpd .



Вернемся к нашему примеру


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


Вернемся к нашему примеру

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

Если наша сеть имеет 24-битную маску подсети (класс C) и имеет сетевой адрес 172.16.1.0, следует использовать такое правило

ipchains:

# ipchains -F forward

# ipchains -P forward DENY

# ipchains -A forward -s 0/0 80 -d 172.16.1.0/24 -p tcp -y -j DENY # ipchains -A forward -s 172.16.1.0/24 -d 0/0 80 -p tcp -b -j ACCEPT

Первая команда удаляет все правила из набора forward , вторая устнавливает действие по умолчанию для

forward в DENY. Третья и четвертая команды делают специфическую фильтрацию, которую мы хотим. Четвертая команда разрешает доступ к web-серверам, а третья запрещает входящие TCP-подключения с порта 80.

Если мы теперь хотим добавить правила, которые предоставят только пассивный режим доступа к FTP-серверу снаружи сети, мы добавим правила:

# ipchains -A forward -s 0/0 20 -d 172.16.1.0/24 -p tcp -y -j DENY # ipchains -A forward -s 172.16.1.0/24 -d 0/0 20 -p tcp -b -j ACCEPT # ipchains -A forward -s 0/0 21 -d 172.16.1.0/24 -p tcp -y -j DENY # ipchains -A forward -s 172.16.1.0/24 -d 0/0 21 -p tcp -b -j ACCEPT



Вернемся к нашим примерам


Теперь используя netfilter, Вы могли бы просто загружать модуль ipchains.o и работать с ним, как с ipchains. Вместо этого, мы повторно напишем наши правила, используя iptables.


Вернемся к нашим примерам

Теперь используя netfilter, Вы могли бы просто загружать модуль ipchains.o и работать с ним, как с ipchains. Вместо этого, мы повторно напишем наши правила, используя iptables.

Как и раньше, мы предполагаем, что есть сеть некоей организации, на Linux-машине запущен firewall. Все внутренние пользователи имеют доступ к WWW-серверам в Internet, но и только.

Если сеть использует сетевую маску в 24 бита (класс C) и имеет адрес сети 172.16.1.0, нужно использовать правила iptables:

# modprobe ip_tables # iptables -F FORWARD # iptables -P FORWARD DROP # iptables -A FORWARD -m tcp -p tcp -s 0/0 --sport 80 -d 172.16.1.0/24 / --syn -j DROP # iptables -A FORWARD -m tcp -p tcp -s 172.16.1.0/24 --sport / 80 -d 0/0 -j ACCEPT # iptables -A FORWARD -m tcp -p tcp -d 172.16.1.0/24 --dport 80 -s 0/0 -j / ACCEPT

В этом примере iptables работает точно как команда ipchains. Вся разница в том, что надо предварительно загрузить модуль ip_tables.o. Обратите внимание, что iptables не поддерживает опцию

-b, так что мы должны отдельно задать правило для каждого направления.



Все про ifconfig Имеются еще несколько


interface имя интерфейса и address IP-адрес, который требуется назначить интерфейсу. Это может быть IP-адрес или имя, которое ifconfig будет искать в файле /etc/hosts.

Если ifconfig используется только с именем интерфейса, он показывает конфигурацию этого интерфейса. Когда он вызывается без параметров, он показывает все интерфейсы, которые Вы отконфигурировали; опция –a вынуждает его показать и бездействующие. Вывод для Ethernet-интерфейса eth0

может напоминать это:

# ifconfig eth0

eth0 Link encap 10Mbps Ethernet HWaddr 00:00:C0:90:B3:42 inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0 UP BROADCAST RUNNING MTU 1500 Metric 0 RX packets 3136 errors 217 dropped 7 overrun 26 TX packets 1752 errors 25 dropped 0 overrun 0

Поля MTU и Metric

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

Строки RX и TX

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

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

up

Эта опция делает интерфейс доступным для IP-уровня. Она подразумевается, когда задается IP-адрес. Также используется для перезапуска интерфейса, который временно выключен опцией down.

Соответствует флагам UP и

RUNNING.

down

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

netmask mask




Назначает маску подсети для использования интерфейсом. Здесь можно задавать как любое шестнадцатиричное число с 32 битами, которому предшествует 0x, так и десятичные числа, разделенные точками.

pointopoint address

Эта опция используется для point-to-point IP-соединений. Необходима, чтобы отконфигурировать, например, SLIP или PLIP интерфейсы. Если адрес для point-to-point был установлен, ifconfig показывает флаг POINTOPOINT.

broadcast address

Широковещательный адрес обычно создается из сетевого адреса установкой всех бит части машины. Некоторые реализации IP используют другую схему, эта опция помогает приспособиться к этим странным средам. Если широковещательный (broadcast) адрес был установлен, ifconfig показывает флаг BROADCAST .

irq

Задает номер IRQ для устройства. Обычно используется для PLIP, но может пригодиться и для некоторых карт Ethernet.

metric number

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

mtu bytes

Эта опция устанавливает Maximum Transmission Unit (максимальную длину передаваемого пакета). Для Ethernet MTU по умолчанию 1500, для SLIP интерфейсов 296.

arp

Это опция определена для широковещательных сетей типа пакетного радио или Ethernet. Она позволяет использовать ARP, протокола поиска адреса, используемый для определения физического адреса машины, включенной в сеть. Для широковещательных сетей, включен по умолчанию. Если ARP выключен, ifconfig отобразит флаг NOARP.

-arp

Запрещает использование ARP на этом интерфейсе.

promisc

Помещает интерфейс в состояние promiscuous. В широковещательной сети это заставляет интерфейс получать все пакеты независимо от того, были ли они предназначены для этой машины или нет. Это позволяет, используя фильтры пакетов, анализировать сетевой трафик. Обычно, это хорошая техника охоты на сетевые проблемы, которые иначе трудно отловить. Здесь весьма полезна утилита tcpdump. С другой стороны, это позволяет хакерам исследовать движение паролей по сети и делать другие черные дела. Одна защита против этого типа нападения: не позволять присоединяться к сети чужим компьютерам. Другой способ: использовать безопасные опознавательные протоколы, типа Kerberos, или SRA login. Эта опция соответствует флагу PROMISC.

–promisc

Запрещает режим promiscuous.

allmulti

Multicast-адреса представляют собой особый подвид широковещательных адресов позволяющих обращаться к группе машин, которые не обязательно должны быть в той же самой подсети. Они весьма полезны при сетевых голосовых переговорах и видеоконференциях. Поддерживаются многими, но не всеми картами Ethernet. Эта опция соответствует флагу ALLMULTI.

-allmulti

Запрещает multicast-адреса.


Введение в Taylor UUCP


Сказать, что конфигурация UUCP является тяжелой, было бы замалчиванием фактов. Это, действительно, запутанная тема, и иногда краткий формат файлов конфигурации не делает вещи проще (хотя формат Talyor читается очень просто по сравнению с более старыми форматами в HDB или Version 2).


Введение в Taylor UUCP

Сказать, что конфигурация UUCP является тяжелой, было бы замалчиванием фактов. Это, действительно, запутанная тема, и иногда краткий формат файлов конфигурации не делает вещи проще (хотя формат Talyor читается очень просто по сравнению с более старыми форматами в HDB или Version 2).

Чтобы дать Вам понять, как взаимодействуют все эти файлы, представим наиболее важное и будем просматривать типовые записи этих файлов. Мы не будем объяснять все подробно; более точные сведения даны в отдельных разделах ниже. Если Вы хотите установить на Вашу машину UUCP, лучше всего начать с типовых файлов и адаптировать их постепенно. Вы можете выбирать из предложенного ниже набора примеров или того, что есть в Вашем дистрибутиве Linux.

Все файлы, описанные в этом разделе хранятся в

/etc/uucp или в его подкаталогах. Некоторые дистрибутивы Linux содержат код UUCP, который поддерживает HDB и Taylor конфигурации, и используют различные подкаталоги для каждого набора файлов конфигурации. Обычно есть файл README в каталоге

/usr/lib/uucp.

Чтобы UUCP работал правильно, эти файлы должны принадлежать пользователю uucp. Некоторые из них содержат пароли и номера телефона, и следовательно, должны иметь права доступа 600. Обратите внимание, что хотя большинство команд UUCP должно иметь бит setuid на имя uucp, Вы должны удостовериться, что программа uuchk такого бита не имеет. Иначе, пользователи будут способны отобразить пароли системы даже при том, что файлы имеют режим доступа 600.

Центральный файл конфигурации UUCP называется

/etc/uucp/config. Он используется, чтобы установить общие параметры. Наиболее важный из них (и теперь единственный), является именем UUCP Вашей системы. Для нашей модельной сети Virtual Brewery использован vstout в качестве шлюза UUCP:





# /etc/uucp/config - UUCP main configuration file nodename vstout
Следующий важный файл конфигурации называется sys . Он содержит всю системно-специфическую информацию об участках сети, с которыми Вы связаны. Она включает имя участка и информацию относительно связи, например, номера телефонов при использовании связи по модему. Типичный скрипт для модемной связи с машиной pablo:

# /usr/lib/uucp/sys - name UUCP neighbors # system: pablo system pablo time Any phone 555-22112 port serial1 speed 38400 chat ogin: vstout ssword: lorca
Ключевое слово port задает порт, который нужно использовать, time определяет время, в которое система может вызываться. chat описывает сценарии входа в систему: последовательность строк, которыми нужно обменяться, чтобы uucico зарегистрировали на pablo. Мы опишем сценарий входа позже. Команда port не называет конкретный файл устройства, например, /dev/cua1, она указывает на файл с соответсвующими записями. Вы можете назначить любое походящее имя.
Файл port содержит информацию о связи непосредственно. Для модемной связи он описывает специальный файл устройства, который нужно использовать, скорость и тип оборудования, соединенного с портом. Пример ниже описывает /dev/ttyS1 (он же COM2), с которым соединен модем NakWell способный к передаче на скорости до 38400bps. Имя порта должно соответствовать имени, заданному в файле sys.

# /etc/uucp/port - UUCP ports # /dev/ttyS1 (COM2) port serial1 type modem device /dev/ttyS1 speed 38400 dialer nakwell
Информация, имеющая отношение к программам набора номера, cохраняется в другом файле, называемом dial. Для каждого типа программы набора номера он содержит последовательность команд, которые требуются, чтобы вызвать удаленную машину по номеру телефона. Все это называется chat script (сценарий дружеской системы). Пример для вышеупомянутого NakWell мог бы выглядеть следующим образом:

# /etc/uucp/dial - per-dialer information # NakWell modems dialer nakwell chat "" AT&F OK ATDT\T CONNECT
<


/p>
Строка, начинающаяся с chat, определяет скрипт модема, который является последовательностью команд, посланных и полученных от модема, чтобы инициализировать его и набрать желательный номер. Последовательность \T будет заменена на номер телефона uucico.
Чтобы в общем показать Вам, как uucico работает с этими файлами конфигурации, предположим, что Вы дали команду:

$ uucico -s pablo
Первым делом uucico ищет pablo в файле sys. Из строки в файле sys для pablo она видит, что должна использовать порт serial1 для установки соединения. Файл port сообщает uucico, что serial1 является портом модема, и что есть подключенный модем NakWell.
uucico теперь ищет запись dial , описывающую модем NakWell, и найдя первую такую запись, открывает последовательный порт /dev/cua1 и выполняет "дружескую беседу" программы набора номера. То есть, посылает AT&F, ждет в ответ OK и т.д. При столкновении со строкой \T, она заменяет эту строку на номер телефона (555-22112), извлеченный из файла sys.
После того, как соединение будет установлено (модем вернет CONNECT), uucico возвращается к файлу sys и выполняет дружескую беседу входа в систему (login chat). В нашем примере она ждет приглашения login: затем посылает имя пользователя (vstout), ждет приглашения password: и посылает пароль (lorca).
После завершения авторизации удаленная система активизирует собственный uucico. Две копии uucico
проводят фазу рукопожатия (handshake phase), описанную в предыдущем разделе. Я прекрасно понимаю, что термины "фаза рукопожатия" и "дружеская беседа входа в систему" звучат не очень удачно, но эквивалентная русская терминология в этой области отсутствует.

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


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


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

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



Вы регистрируетесь, но происходит сбой авторизации


Может быть ряд проблем. Посмотрите, какими протоколами пользуется удаленная система (она посылает строку P protlist

в течение авторизации). Обе стороны должны поддерживать по крайней мере один общий протокол, так что проверьте, что они делают.


Вы регистрируетесь, но происходит сбой авторизации

Может быть ряд проблем. Посмотрите, какими протоколами пользуется удаленная система (она посылает строку P protlist

в течение авторизации). Обе стороны должны поддерживать по крайней мере один общий протокол, так что проверьте, что они делают.

Если удаленная система посылает RLCK, имеется просроченный lockfile (файл блокировки) для Вас на удаленной системе. Если Вы еще не соединены с удаленной системой на другой линии, попросите удалить его.

Если удаленная система посылает RBADSEQ, она проверила Ваш логин, но числа опознания не совпали. Если она посылает RLOGIN, Вам не разрешили входить в систему под этим идентификатором.



Выбор IP-адресов


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


Выбор IP-адресов

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

Некоторые PPP-серверы, которые обрабатывают множество клиентов, приписывают адреса динамически: адреса назначены системам только, когда существует обращение и освобождаются после того, как сеанс связи закончен. Это позволяет ограничить число требуемых адресов числом линий dialup. В то время, как ограничение удобно для администраторов PPP dialup-сервера, оно часто куда менее удобно для пользователей. Мы обсуждали путь, которым имена преобразуются в адреса, в главе 6. Когда происходит соединение с таким сервером, вы должны удостовериться, что pppd не запрашивает какой-либо IP-адрес с него, но когда адрес будет выдан, сервер попросит вас, чтобы вы использовали именно его. Это означает, что если кто-то пытается связаться с вашим компьютером, он должен будет знать его текущий адрес, а обеспечить это не так-то просто.

В примере выше, у нас был pppd, связывающейся с c3po и устанавливающий IP-связь. Никакие условия не принимались для того, чтобы выбрать частный адрес IP на любом конце связи. Взамен мы выбрали адрес vlager как локальный адрес IP и позволили c3po обеспечить себя собственным. Иногда полезно иметь контроль над тем, какой адрес используется на одном или другом конце связи.

Чтобы просить о частных адресах, вы вызываете pppd

со следующеми опциями:

local_addr:remote_addr

local_addr и remote_addr могут быть определены в dotted quad notation или как имена машин. Это заставит

pppd попытаться использовать первый адрес как собственный адрес IP, а второй как адрес удаленной машины. Если удаленная машина отклоняет любой из них в течение IPCP-переговоров, связь IP не будет установлена.

Если вы звоните на сервер и ожидаете, что он назначит вам IP-адрес, надо гарантировать отсутствие неожиданных инициатив со стороны

pppd. Чтобы сделать это, используйте опцию noipdefault и оставьте поле local_addr пустым. Опция noipdefault избавит от попытки pppd использовать адрес IP, связанный с именем машины как локальный адрес.

Если Вы хотите устанавливать только локальный адрес, но удаленный адрес примете любой, просто не указывайте remote_addr . Чтобы vlager использовал IP-адрес 130.83.4.27 вместо своего, укажите 130.83.4.27: в командной строке. Точно так же, чтобы установить только удаленный адрес, оставьте пустым поле local_addr. По умолчанию pppd использует адрес, связанный с вашим именем машины (hostname).



Выполнение заданий NetWare на


Единственная требуемая опция для nprint имя файла для печати. Если имя файла не задано, nprint примет задание по выводу на печать из stdin. Наиболее важные параметры nprint определяют сервер и очередь. Таблица 15-4

перечисляет наиболее важные параметры.



Взаимодействие nntpd и C-News


Чтобы правильно выполнить протокол ihave/sendme, nntpd должен обратиться к файлу history. Во время компиляции, Вы должны удостовериться, что путь установлен правильно. Вы должны также удостовериться, что C-news и nntpd

договорятся о формате вашего файла history. C-news использует dbm-функции, чтобы обратиться к нему, однако, имеются несовместимые реализаций библиотеки dbm . Если C-news был связан с одной библиотекой dbm , а ваша библиотека libc с другой, они точно передерутся. Значит, Вы должны пересобрать nntpd с правильной библиотекой.

Типичный признак того что nntpd и C-news не соглашаются относительно формата базы данных, это сообщения об ошибках в файле регистрации системы о том, что nntpd не может открыть его правильно, или двойные статьи, полученные через NNTP. Хороший тест: выбрать статью из вашей области spool, сделать telnet к порту nntp и попробовать обратиться к

nntpd как показано в примере ниже. Конечно, вы должны заменить msg@id на ID-сообщение статьи, которую хотите передать nntpd:

$ telnet localhost nntp

Trying 127.0.0.1... Connected to localhost Escape characters is '^ ]'. 201 vstout NNTP[auth] server version 1.5.11t (16 November 1991) ready at Sun Feb 6 16:02:32 1194 (no posting)

IHAVE msg@id

435 Got it. QUIT

Этот диалог показывает реакцию nntpd. Сообщение Got it покажет, что эта статья уже имеется. Если вы получаете сообщение 335 Ok, поиск в файле history потерпел неудачу. Завершите диалог нажатием Ctrl-D. Вы можете проверять, что пошло неправильно, проверяя файл регистрации системы:

nntpd регистрирует все виды сообщений в syslog. Несовместимая библиотека dbm обычно проявляется в сообщении о том, что dbminit потерпел неудачу.



Xerox, Novell и немного истории


Novell Corporation создала свой набор протоколов на основе протоколов XNS. Novell слегка расширила IDP и SPP и переименовала их соответственно в IPX (Internet Packet eXchange) и SPX (Sequenced Packet eXchange). Novell добавила новые протоколы, типа NetWare Core Protocol (NCP), который обеспечил свойства разделения файлов и принтеров по сети IPX, и Service Advertisement Protocol (SAP), который давал возможность компьютерам в Novell-сети знать, который компьютер какие услуги обеспечивает.

Таблица 15-1 показывает связь между наборами XNS, Novell и TCP/IP в терминах функций. Связи только приблизительные, но они должны помочь вам понять, что там происходит, когда мы займемся этими протоколами позже.



Запуск Exim Для запуска Exim


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

smtp 25/tcp # Simple Mail Transfer Protocol

Это определяет номер порта TCP для протокола SMTP. Он определен как 25 в "Assigned Numbers" RFC (RFC-1700).

При запуске в режиме демона Exim переходит в фоновый режим и ждет соединений через SMTP-порт. Когда подключение происходит, он разветвляется, и порожденный процесс проводит сеанс связи SMTP с таким же процессом на удаленной машине. Exim daemon обычно вызывается из rc скрипта при загрузке командой:

/usr/sbin/exim -bd -q15m

Параметр –bd включает режим daemon, а –q15m заставляет обрабатывать любые сообщения, накопленные в очереди сообщений, каждые 15 минут.

Если нужно использовать inetd, впишите в файл /etc/inetd.conf такую строку:

smtp stream tcp nowait root /usr/sbin/exim in.exim -bs

Помните, что после изменений этого файла нужно сообщить inetd, чтобы он перечитал

inetd.conf. Для этого после внесения изменений пошлите ему сигнал HUP.

Режимы daemon и inetd взаимоисключающие. Если Вы запускаете Exim в режиме daemon, удостоверьтесь, что в

inetd.conf закомментированы все строки для протокола smtp. Аналогично, при запуске Exim через inetd проверьте, чтобы в скриптах rc не было команды на загрузку Exim как daemon.

Вы можете проверять, что Exim правильно установлен для получения входящих SMTP-сообщений, соединяясь программой telnet с SMTP-портом на Вашей машине. При нормальной работе системы Вы увидите примерно следующее:

$ telnet localhost smtp

Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 richard.vbrew.com ESMTP Exim 3.13 #1 Sun, 30 Jan 2000 16:23:55 +0600 quit

221 richard.brew.com closing connection Connection closed by foreign host.

Если этот тест не выдаст приглашение SMTP (строка, начинающаяся с кода 220), проверьте правильно ли запущен Exim. Если все в порядке, смотрите протоколы Exim (описаны ниже) в случае, если имеется ошибка в файле конфигурации Exim.



Запуск named Пакет named обеспечивает


Этот раздел требует понимания принципов работы DNS. Если такого понимания нет, обратитесь к разделу "Как работает DNS".

Пакет named обычно запускается при начальной загрузке системы. Реализации BIND до Version 8 берут информацию из файла конфигурации /etc/named.boot и различных файлов, которые отображают имена домена к адресам. Последние называются зональными файлами (zone files). Версии BIND после Version 8 используют /etc/named.conf вместо /etc/named.boot.

Для запуска named скомандуйте:

# /usr/sbin/named

Пакет named запустится и прочитает named.boot и заданные в нем зональные файлы. Он пишет свой process ID в файл /var/run/named.pid в ASCII, загружает все зональные файлы с первичного сервера и начинает слушать порт 53 в ожидании запросов DNS.



Запуск NFS Прежде, чем Вы сможете


Если nfs отсутствует в этом списке, Вы должны скомпилировать собственное ядро с включенным NFS. Конфигурирование сетевых опций ядра объяснено в разделе "Настройка ядра" главы 3.



Защита от перехватчиков почты


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


Защита от перехватчиков почты

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

Вы должны принять меры против самозванцев! Для этого необходимо потребовать, чтобы каждая система использовала имя входа в Вашу систему, заданное called-login в sys. Например:

system pablo ... usual options ... called-login Upablo

В результате этого всякий раз, когда система говорит, что она pablo, uucico

проверит, регистрировалась ли она как Upablo. Если нет, вызов будет отвергнут, а соединение разорвано. Вы должны сделать привычкой добавлять команду called-login к каждой записи системы, которую Вы добавляете к Вашему файлу sys . Важно, что Вы делаете это для всех систем, независимо от того, будут ли они когда-либо вызывать Вас или нет. Для тех машин, которые никогда не вызывают Вас, Вы, возможно, должны установить called-login на некоторое полностью поддельное имя пользователя, типа neverlogsin , дабы никто точно не мог зайти.

.



Знакомство с NIS NIS хранит информацию


Карты обычно генерируются из текстовых файлов типа /etc/hosts или /etc/passwd . Для некоторых файлов будет создано несколько карт, по одной для каждого типа ключа поиска. Например, Вы можете искать в файле hosts имя машины или ее IP-адрес. Соответственно, из этого файла будут получены две NIS-карты hosts.byname и hosts.byaddr . Таблица 13-1 перечисляет наиболее распространенные карты и файлы, из которых они сгенерированы.