|
# route -n
Kernel routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.1 * 255.255.255.255 UH 1 0 112 lo 172.16.1.0 * 255.255.255.0 U 1 0 10 eth0
Детальное значение этих полей объясняется ниже. Колонка Flags содержит список флагов, устанавливаемых для каждого интерфейса. U всегда установлен для активных интерфейсов, а H сообщает, что адрес места назначения обозначает машину (хост). Если флаг H установлен для маршрута, который вы считаете сетевым маршрутом, тогда вы должны использовать опцию -net с командой route. Чтобы проверить, используется ли маршрут, который вы ввели, посмотрите на поле Use, которое находится между двумя сообщениями ping.
Интерфейсы SLIP и PPP
Хотя SLIP и PPP всего лишь простые point-to-point связи, подобные PLIP-соединениям, о них есть дополнительная информация. Обычно при установке SLIP-соединения требуется дозвониться до удаленной машины через модем и отрегулировать последовательную линию для SLIP. PPP используется подобным образом. Инструменты, требуемые для создания SLIP или PPP-связи, будут описаны в главе 7 и главе 8.
Интерфейсы SLIP и PPP
Хотя SLIP и PPP всего лишь простые point-to-point связи, подобные PLIP-соединениям, о них есть дополнительная информация. Обычно при установке SLIP-соединения требуется дозвониться до удаленной машины через модем и отрегулировать последовательную линию для SLIP. PPP используется подобным образом. Инструменты, требуемые для создания SLIP или PPP-связи, будут описаны в главе 7 и главе 8.
Internet Control Message Protocol
ICMP-протокол обеспечивает несколько различных сообщений, многие из которых имеют дело с условиями ошибки. Однако, имеется очень интересное сообщение, названное Redirect. Оно генерируется модулем маршрутизации, когда он обнаруживает, что другой компьютер использует его как шлюз, несмотря на наличие намного более короткого маршрута. Например, после загрузки таблица маршрутизации sophus не была завершена. Она могла бы содержать маршруты к сети Mathematics network, к каналу FDDI и заданному по умолчанию маршруту, указывающему на Groucho Computing Center (gcc1). Таким образом, пакеты для quark были бы посланы gcc1, а не niels, шлюзу кафедры физики. При получении такого пакета gcc1 обратит внимание, что это неправильная маршрутизация и передаст пакет на niels , одновременно возвращая сообщение ICMP Redirect на sophus.
Это, кажется, очень умный способ избежать настройки маршрутов, кроме базисных, вручную. Однако помните, что доверять сообщениям Redirect протоколов RIP и ICMP можно не всегда! ICMP Redirect и RIP не дают возможности проверить подлинность информации. Эта ситуация позволяет злонамеренному человеку сделать очень многое. Код работы с сетями Linux обрабатывает сообщения Network Redirect, как будто они были сообщениями Host Redirects. Это минимизирует повреждение при нападении, ограничивая их одной машиной, а не целой сетью.
IP-адреса Как сказано в главе
Для более легкого чтения, IP-адреса разбивают на четыре 8-битовых числа, названных octets. Например, quark.physics.groucho.edu имеет IP-адрес 0x954C0C04, который записывается как 149.76.12.4. Этот формат часто называют dotted quad notation (запись с точками-разделителями).
Другая причина такой записи в том, что IP-адреса разбиваются на адрес сети (network), который написан в первых octets, и адрес машины (хоста, host), который является остатком. При обращении к NIC за адресами, вы не получаете адрес для каждого отдельного хоста, который вы планируете поставить. Вместо этого Вам дают сетевой адрес и позволяют назначать машинам любые IP-адреса из заданного таким образом диапазона.
В зависимости от размера сети машинная часть адреса может быть меньшей или большей. В зависимости от различных потребностей имеются несколько классов сетей, определяющих различное разбиение IP-адресов:
Класс A
Класс A включает сети от 1.0.0.0 до 127.0.0.0. Сетевой адрес содержится в первом octet, что предусматривает 24-разрядную хост-часть, сеть приблизительно из 1.6 миллиона хостов. Большая.
Класс B
Класс B содержит сети от 128.0.0.0 до 191.255.0.0. Сетевой адрес находится в первых двух octets. Это предполагает 16320 подсетей с 65024 хостами в каждой.
Класс C
Класс C включает диапазон сетей от 192.0.0.0 до 223.255.255.0. Адрес сети содержится в первых трех octets. Это предполагает почти 2 миллиона подсетей по 254 хоста каждая.
Классы D, E и F
Адреса в диапазоне от 224.0.0.0 до 254.0.0.0 являются экспериментальными или сохранены для будущего использования и не определяют какую-либо сеть. IP Multicast, сервис, который позволяет транслировать в internet данные из одной точки на несколько, может быть связан с этим диапазоном.
Если мы вернемся к примеру в главе 1, увидим, что 149.76.12.4, адрес quark, относится к хосту 12.4 в сети 149.76.0.0 класса B.
Вы можете заметить, что в вышеупомянутом списке для каждого octet в части хоста возможны не все значения. Это потому, что адреса хоста со всеми octets равными 0 и 255 сохранены для специальных целей. Адрес, в котором все биты хост-части выставлены в 0, относится ко всей сети, а адрес, где все биты хост-части выставлены в 1, назван
broadcast address (широковещательным адресом). Он относится ко всем хостам указанной сети. Таким образом, 149.76.255.255 не существующий адрес хоста, он относится ко всем хостам сети 149.76.0.0.
Имеются еще два зарезервированных адреса: 0.0.0.0 и 127.0.0.0. Первый назван default route (путь по умолчанию), последний loopback address (кольцевой адрес). default route используется при маршрутизации IP-пакетов, с которым мы будет иметь дело чуть позже.
Сеть 127.0.0.0 сохранена для работы IP внутри хоста. Обычно адрес 127.0.0.1 будет назначен специальному интерфейсу на вашем хосте, так называемому интерфейсу loopback interface, который действует подобно кольцу. Любой IP-пакет, переданный ему от TCP или UDP, будет возвращен к ним, как будто он только что прибыл из некоторой сети. Это позволяет тестировать сетевое программное обеспечение без использования реальной сети. Также он полезен, когда вы хотите использовать сетевое программное обеспечение на автономном компьютере (в терминах сети, хосте). Например, большое количество UUCP-участков не имеют IP связи вообще, но все же хотят управлять системой новостей INN. Однако для правильной работы под Linux, INN требует интерфейса loopback.
Некоторые диапазоны адресов каждого из сетевых классов были отложены и обозначены “reserved” или “private”. Эти адреса зарезервированы для использования частными сетями и не направлены на Internet. Они обычно используются организациями, формирующими их собственный intranet (локальные сети с архитектурой и логикой Internet), но даже маленькие сети часто находят их полезными. Зарезервированные сетевые адреса показаны в таблице 2-1 .
IP Firewall Chains (ядра 2.2)
IP Firewall Chains разработан Paul Russell и Michael Neuling. Paul описал IP Firewall Chains в IPCHAINS-HOWTO.
IP Firewall Chains позволяет Вам разрабатывать классы правил firewall, к которым Вы можете затем добавлять и удалять компьютеры или сети. Такой подход может улучшать эффективность firewall в конфигурациях, в которых имеется большое количество правил.
IP Firewall Chains поддерживается серией ядер 2.2 и доступен как патч для серии 2.0.* ядер. HOWTO описывает, где получить патч и дает большое количество полезных советов относительно того, как использовать утилиту конфигурации ipchains.
IP-псевдонимы (IP-Alias)
Новые ядра поддерживают свойство, которое может полностью заменить dummy-интерфейс, и имеет другие полезные функции. IP Alias позволяет конфигурировать много IP-адресов на одно физическое устройство. В самом простом случае Вы могли бы копировать функцию dummy-интерфейса, конфигурируя адрес как псевдоним для loopback, и полностью избежать применения интерфейса dummy. В более сложных случаях Вы могли бы конфигурировать ваш компьютер, чтобы он выглядел как несколько машин с разными IP-адресами. Эта конфигурация иногда называется "Virtual Hosting".
IP-псевдонимы (IP-Alias)
Новые ядра поддерживают свойство, которое может полностью заменить dummy-интерфейс, и имеет другие полезные функции. IP Alias позволяет конфигурировать много IP-адресов на одно физическое устройство. В самом простом случае Вы могли бы копировать функцию dummy-интерфейса, конфигурируя адрес как псевдоним для loopback, и полностью избежать применения интерфейса dummy. В более сложных случаях Вы могли бы конфигурировать ваш компьютер, чтобы он выглядел как несколько машин с разными IP-адресами. Эта конфигурация иногда называется "Virtual Hosting".
Чтобы конфигурировать псевдоним для интерфейса, вы должны сначала гарантировать что ядро компилировалось с поддержкой для IP Alias (проверьте файл /proc/net/ip_alias, если его нет, ядро придется перестроить). Конфигурация IP-псевдонима фактически идентична конфигурированию реального сетевого устройства. Вы используете специальное имя, чтобы указать, что это псевдоним. Например:
|
# ifconfig lo:0 172.16.1.1
Эта команда создаст псевдоним для кольцевого интерфейса с адресом 172.16.1.1. IP aliases используют переменную n для каждого устройства, где "n" является целым числом. В нашем примере сетевое устройство, на котором мы создаем псевдоним, lo и создается псевдоним номер ноль для него. Этим путем одно физическое устройство может поддерживать ряд псевдонимов.
Каждый псевдоним может обрабатываться как отдельное устройство, однако, оно будет совместно использовать аппаратные средства с другим интерфейсом.
IP-сети
Когда вы пишете письмо, вы обычно помещаете на конверте полный адрес. После того, как вы опускаете его в почтовый ящик, почта доставит его по месту назначения: оно будет послано в обозначенную страну, чья национальная почта пошлет его в требуемый регион и т.д. Преимущество этой иерархической схемы довольно очевидно: везде, где вы отправляете по почте письмо, местный начальник почтового отделения будет точно знать, куда передать это письмо и не должен заботиться, каким путем письмо будет путешествовать.
IP-сети
Когда вы пишете письмо, вы обычно помещаете на конверте полный адрес. После того, как вы опускаете его в почтовый ящик, почта доставит его по месту назначения: оно будет послано в обозначенную страну, чья национальная почта пошлет его в требуемый регион и т.д. Преимущество этой иерархической схемы довольно очевидно: везде, где вы отправляете по почте письмо, местный начальник почтового отделения будет точно знать, куда передать это письмо и не должен заботиться, каким путем письмо будет путешествовать.
IP-сети построены подобным образом. Весь Inetrnet состоит из набора сетей, названных автономными системами (autonomous systems). Каждая такая система производит всю маршрутизацию между своими членами так, что задача посылки пакетов сведена к обнаружению пути к сети с требуемым хостом. Это означает, что как только пакет вручен любому хосту, который находится в нужной сети, обработка выполняется исключительно данной сетью.
Использование dip Хотелось бы
dip это сокращение от Dialup IP. Она написана Fred van Kempen, и исправлена большим количеством людей. На сегодняшний день с большинством дистрибутивов Linux поставляется версия dip337p-uri, которая также доступна на FTP-архиве metalab.unc.edu.
dip обеспечивает интерпретатор простого языка, который обрабатывает модем, переводя линию в SLIP-режим и конфигурируя сеть. Этот язык довольно примитивен и ограничен, но вполне подходит для большинства случаев.
Чтобы сконфигурировать SLIP-интерфейс, dip требует привелегий root. Соблазнительно сделать dip
setuid к root, чтобы Все пользователи могли соединиться с некоторым сервером SLIP без необходимости предоставления им root-доступа. Это очень опасно, потому что при установке фиктивных интерфейсов и заданных по умолчанию маршрутов dip
может разрушить маршрутизацию в Вашей сети. Даже еще хуже, это даст пользователям приоритет на подсоединение к любым SLIP-серверам и начать атаку на Вашу сеть. Так, если Вы хотите позволить Вашим пользователям запустить SLIP-связь, напишите маленькие программки для каждого предполагаемого SLIP-сервера и вызовите dip с соответствующим скриптом, который установит связь. Эти программы могут быть безопасно сделаны setuid root. В качестве альтерантивы предлагается команда sudo.
Использование ipchains
Имеются два пути, которыми Вы можете использовать
ipchains. Первый путь состоит в том, чтобы использовать скрипт ipfwadm-wrapper, который является заменой ipfwadm, управляющий программой
ipchains в фоновом режиме. Если Вы хотите сделать именно это, то не читайте дальнейшее описание, а вернитесь к описанию
ipfwadm, и подставьте везде ipfwadm-wrapper. Это будет работать, но нет никакой гарантии, что скрипт будет поддерживаться, и Вы не будете пользоваться каким-либо из продвинутых свойств, которые может предложить IP Firewall Chains.
Использование ipchains
Имеются два пути, которыми Вы можете использовать
ipchains. Первый путь состоит в том, чтобы использовать скрипт ipfwadm-wrapper, который является заменой ipfwadm, управляющий программой
ipchains в фоновом режиме. Если Вы хотите сделать именно это, то не читайте дальнейшее описание, а вернитесь к описанию
ipfwadm, и подставьте везде ipfwadm-wrapper. Это будет работать, но нет никакой гарантии, что скрипт будет поддерживаться, и Вы не будете пользоваться каким-либо из продвинутых свойств, которые может предложить IP Firewall Chains.
Второй способ использовать ipchains состоит в том, чтобы узнать новый синтаксис и изменить любые существующие конфигурации. Вы должны использовать новый синтаксис вместо старого. При ближайшем изучении выяснится, что при переписывании конфигурации, ее можно оптимизировать. Синтаксис в ipchains проще, чем был у ipfwadm, так что это хорошая идея.
ipfwadm управлял тремя наборами (цепочками) правил с целью конфигурирования firewall. В IP Firewall Chains Вы можете создавать произвольные наборы (цепочки), связанные друг с другом, но имеется три предопределенных набора. Это прямые эквиваленты тех, которые использовались в ipfwadm, за исключением того, что они имеют имена: input, forward и output.
Давайте сначала рассматривать общий синтаксис команды
ipchains, затем рассмотрим, как использовать ipchains вместо ipfwadm без проблем с каким-либо из продвинутых свойств формирования цепочки. Будем делать это, повторно рассматривая предыдущие примеры.
Использование iptables
Утилита iptables используется для настройки правил netfilter. Синтаксис заимствован у ipchains, но имеет важное отличие: он расширяемый. Это означает, что функциональные возможности могут быть расширены без перекомпиляции пакета. Для этого используются разделяемые библиотеки. Имеются стандартные расширения, ряд которых мы сейчас изучим.
Использование iptables
Утилита iptables используется для настройки правил netfilter. Синтаксис заимствован у ipchains, но имеет важное отличие: он расширяемый. Это означает, что функциональные возможности могут быть расширены без перекомпиляции пакета. Для этого используются разделяемые библиотеки. Имеются стандартные расширения, ряд которых мы сейчас изучим.
Перед использованием команды iptables Вы должны загрузить модуль ядра netfilter, который позволяет ей работать. Проще всего сделать это командой modprobe:
|
# modprobe ip_tables
Команда iptables используется для настройки IP filter и Network Address Translation. Для этого используются две таблицы: filter и nat. Если не задана опция -t, используется таблица filter. Доступны пять встроенных цепочек (наборов правил): INPUT и FORWARD для таблицы filter, PREROUTING и POSTROUTING
для таблицы nat и OUTPUT
для всех таблиц. В этой главе я расскажу только о таблице
filter, таблица nat описана в главе 11.
Синтаксис команд iptables в общем виде таков:
|
iptables command rule-specification extensions
Теперь мы будем рассмотрим некоторые параметры подробно, после чего перейдем к примерам.
Использование nprint с Line Printer Daemon
Раньше я упомянул, что опция -c программы ncpmount полезна для печати.
Использование nprint с Line Printer Daemon
Раньше я упомянул, что опция -c программы ncpmount полезна для печати.
Linux обычно использует программное обеспечение принтера BSD-стиля. Line printer daemon (lpd) является демоном, который проверяет локальный каталог буфера в поисках поставленных в очередь работ, которые должны быть напечатаны. Пакет lpd читает имя принтера и некоторые другие параметры из указанного файла форматирования и пишет данные на принтер, факультативно передавая данные через фильтр, чтобы трансформировать их или управлять печатью.
Демон lpd использует простую базу данных, названную /etc/printcap, чтобы сохранить конфигурацию принтера, включая то, какие фильтры должны выполняться. lpd обычно выполняется с правами специального системного пользователя lp.
Вы могли бы конфигурировать nprint как фильтр для lpd, который позволяет пользователям Вашей Linux-машины выводить данные непосредственно на удаленные принтеры, которые установлены на сервере NetWare. Чтобы сделать это, пользователь lp должен быть способен писать запросы на NCP-подключение к серверу.
Простой способ достичь этого: определить lp как владельца подключения, установленного другим пользователем. Полный пример того, как устанавливать Linux-печать, чтобы обработать задания по выводу на печать клиентов NetWare состоит из трех шагов:
Написать скрипт-обертку (wrapper script).
Файл /etc/printcap не разрешает передавать параметры фильтрам. Следовательно, Вы должны написать короткий скрипт, вызывающий команду, которую Вы хотите выполнить, с нужными параметрами:
|
#!/bin/sh # p2pslaser - simple script to redirect stdin to the # PSLASER queue on the REDS01 server # /usr/bin/nprint -S REDS01 -U stuart -q PSLASER #
Сохраните его в файле /usr/local/bin/p2pslaser.
Введите новую запись в /etc/printcap.
Мы будем должны конфигурировать p2pslaser как выходной фильтр в /etc/printcap. Это делается так:
|
pslaser|Postscript Laser Printer hosted by NetWare server:\ :lp=/dev/null:\ :sd=/var/spool/lpd/pslaser:\ :if=/usr/local/bin/p2pslaser:\ :af=/var/log/lp-acct:\ :lf=/var/log/lp-errs:\ :pl#66:\ :pw#80:\ :pc#150:\ :mx#0:\ :sh:
Добавьте опцию -c к команде ncpmount.
|
ncpmount -S REDS01 .... -c lp ....
Наш локальный пользователь stuart должен определить пользователя lp как владельца подключения, когда он устанавливает связь с сервером NetWare.
Теперь любой пользователь Linux может указать pslaser как имя принтера при вызове lp. Задание по выводу на печать будет послано на указанный сервер NetWare и помещено в очередь для печати.
Использование прямого соединения
Допустим, что Вы используете прямое соединение своей системы vstout с системой tiny. Как и в случае с модемом, Вы должны описать вход в систему в файле sys. Команда port
идентифицирует последовательный порт tiny.
|
system tiny time Any port direct1 speed 38400 chat ogin: cathcart word: catch22
Использование прямого соединения
Допустим, что Вы используете прямое соединение своей системы vstout с системой tiny. Как и в случае с модемом, Вы должны описать вход в систему в файле sys. Команда port
идентифицирует последовательный порт tiny.
|
system tiny time Any port direct1 speed 38400 chat ogin: cathcart word: catch22
В файле port Вы должны описать последовательный порт для прямого соединения. Описание программы набора номера (dialer) не нужно, так как нет никакой потребности в наборе.
|
port direct1 type direct speed 38400 device /dev/ttyS1
История Usenet Идея сетевых новостей
Первоначально трафик обрабатывался рядом команд оболочки (позже переписанных на C), но они никогда не были выпущены как пакет. Вместо этого их быстро заменили на A-News, первый публичный выпуск программного обеспечения новостей.
A-News не был разработан, чтобы обработать больше, чем несколько статей на группу в день. Когда объем вырос, пакет был переписан Мark Horton и Matt Glickman и назван B-News. Впервые B-News (версия 2.1) был опубликован в 1982. Он непрерывно расширялся с добавлением отдельных новых возможностей. Текущая версия B-News 2.11. Она медленно устаревает.
Geoff Collyer и Henry Spencer переписали B-News и опубликовали свою разработку в 1987. Она называется C-News. Все выпуски до C-News прежде всего направлены на сети UUCP, хотя они могут использоваться в других средах также. Эффективная передача новостей по сетям TCP/IP и DECNet требует новой схемы. Это было причиной, по которой в 1986 появился сетевой протокол передачи новостей (Network News Transfer Protocol, NNTP). Он основан на сетевых соединениях и определяет ряд команд, чтобы в интерактивном режиме передавать статьи. Мы поговорим о C-News подробно в главе 21.
Имеется ряд NNTP-программ, доступных из Сети. Одна из них пакет nntpd (авторы Brian Barber и Phil Lapsley), который Вы можете использовать, чтобы обеспечить сервис новостей на компьютерах в локальной сети. Пакет nntpd был разработан, чтобы дополнить пакеты новостей, подобные B-News или C-News, дать им свойства NNTP. Если Вы хотите использовать NNTP с сервером C-News, Вы должны прочитать главу 22, которая объясняет, как конфигурировать nntpd daemon и использовать его с C-News.
Альтернативный пакет, обеспечивающий NNTP, INN или Internet News. Это не только внешний интерфейс, а своя система новостей. Он включает сложные новости и демон передачи, который может эффективно поддерживать несколько параллельных связей NNTP. Подробно он будет описан в главе 23.
Энциклопедия сетевого администратора
Энциклопедия сетевого администратора Linux
версия 2.0
(LNAGR, Linux Network Administrators Guide Russian)
Как обычно, Вы можете загрузить архив
или перейти к оглавлению для чтения в он-лайн.
Вы можете также заказать книгу
Руководство сетевого администратора ОС Linux, которая представляет собой это руководство, но переработанное с учетом российской специфики.
Как доставляется почта? Вообще
Локальное получение почты, конечно, больше чем присоединение входящего сообщения к mailbox получателя. Обычно локальный MTA поймет совмещение имен (установка локальных адресов получателя, указывающих на другие адреса), и пересылку (переназначение почты пользователя другому адресату). Также сообщения, которые не могут быть переданы, должны обычно быть bounced, то есть возвращены отправителю с сообщением об ошибке.
Для удаленного получения используемое программное обеспечение зависит от характера связи. Если почта должна быть передана по сети, используя TCP/IP, обычно используется SMTP. SMTP (Simple Mail Transfer Protocol) определен в RFC 821. SMTP обычно соединяется с машиной получателя непосредственно.
В UUCP-сетях почта обычно не будет передана непосредственно, а будет послана на машину адресата рядом промежуточных систем. Чтобы послать сообщение по UUCP, MTA будет обычно выполнять rmail на системе пересылки, используя uux с подачей письма на стандартный ввод программы.
Так как команда uux выполняется для каждого сообщения отдельно, этот подход может вызвать значительную загрузку главного узлового хаба почты, также как сотни малых файлов, занимающих непропорциональное количество дискового пространства. Некоторые MTA позволяют Вам собирать отдельные сообщения для удаленной системы в одном файле. Командный файл содержит команды SMTP, которые локальная машина выдала бы, если бы использовалось прямое SMTP-соединение. Это называется BSMTP или пакетирование (batched) SMTP. Пакет передается программе rsmtp или bsmtp на удаленной системе, которая будет работать, как будто бы произошло нормальное SMTP-соединение.
Как набирать номер: файл dial
Файл dial описывает способ, которым используются различные программы набора номера. Традиционно, переговоры программ набора номера UUCP быстрее, чем модемы, потому что раньше было обычной практикой иметь одно (дорогое) автоматическое устройство набора, обслуживающее целый набор модемов. Сегодня большинство модемов имеют встроенную поддержку набора, так что это различие становится более размытым.
Как набирать номер: файл dial
Файл dial описывает способ, которым используются различные программы набора номера. Традиционно, переговоры программ набора номера UUCP быстрее, чем модемы, потому что раньше было обычной практикой иметь одно (дорогое) автоматическое устройство набора, обслуживающее целый набор модемов. Сегодня большинство модемов имеют встроенную поддержку набора, так что это различие становится более размытым.
Однако различные программы набора номера или модемы могут требовать различной настройки. Вы можете описать каждый из них в файле dial. Куски в файле dial
начинаются с команды dialer, которая определяет имя программы набора номера (звонилки).
Наиболее важная часть, скрипт модема (modem chat), определяется командой chat. Подобно скрипту входа в систему (login chat), он состоит из последовательности строк uucico, посылаемых программе набора номера и ответов, которые требуется получить. Они обычно используются, чтобы сбросить модем к известному состоянию, и набирать номер. Вот пример для Hayes-совместимого модема:
|
# NakWell modem; connect at high speed dialer nakwell # dialer name chat "" AT&F OK\r ATH1E0Q0 OK\r ATDT\T CONNECT chat-fail BUSY chat-fail ERROR chat-fail NO\sCARRIER dtr-toggle true
Скрипт модема начинается с "", пустой ожидаемой строки. Cледовательно, uucico пошлет команду (AT&F) сразу же. Команда Hayes
AT&F нужна для сброса модема. Затем uucico
ждет, пока модем не пошлет OK, и посылает следующую команду, которая выключает локальное эхо, и т.п. После того, как модем снова возвращает OK, uucico
посылает команду набора ATDT (для России ATDP). Escape-последовательность
\T в этой строке заменяется на номер телефона, получаемый из файла sys. Затем uucico ждет, пока модем не возвратит CONNECT, который говорит о том, что соединение с удаленным модемом было установлено успешно.
Часто модем будет не в состоянии соединиться с удаленной системой, например, если другая система общается с кем-то еще, и линия занята. В этом случае модем вернет сообщение об ошибке, указывающее на причину отказа. Скрипт модема не способен обнаружить такие сообщения;
uucico будет ждать требуемую строку, пока не выйдет время ожидания. В файле регистрации UUCP (log file) будет записано "timed out in chat script" вместо истинной причины.
Однако, Taylor UUCP позволяет Вам поставить в известность uucico об этих сообщениях, используя команду chat-fail, как показано выше. Когда uucico обнаруживает строку chat-file при выполнении скрипта модема, то прерывает обращение и регистрирует сообщение об ошибках в файле регистрации UUCP (log файле).
Последняя команда в показанном выше примере говорит UUCP переключить строку DTR перед запуском скрипта модема. Большинство модемов может быть сконфигурировано так, чтобы при обнаружении изменений в строке DTR перейти в командный режим. Вы также можете сконфигурировать модем на сброс при обнаружении перехода на DTR. Некоторые из них, однако, не понимают таких вещей и зависают.
Как работает DNS DNS организует
Так возникает древовидная структура. Запись в корне этого дерева, которая обозначена единственной точкой, весьма точно названа корневым доменом (root domain), и она связана со всеми другими доменами. Чтобы показать, что в данном месте пишется полное имя хоста, а не имя относительно локальной области, иногда после имени ставят точку. Это значит, что последний компонент имени принадлежит корневому домену.
В зависимости от местоположения в иерархии имени, домен может быть назван top-level, second-level или third-level (верхнего уровня, второго уровня или третьего уровня). Большее количество уровней встречается относительно редко. Вот несколько верхних областей, которые вы можете часто увидеть:
Домне
Описание
edu |
|
Образовательные учреждения, подобные университетам (главным образом США, хотя регистрироваться в этом домене могут ВУЗы любой страны).
com |
|
Коммерческие организации, компании. В Москве много таких доменов.
org |
|
Некоммерческие организации. Часто частные UUCP-сети находятся в этом домене. К конкретной стране не привязан.
net |
|
Шлюзы и другие административные хосты в сети. Часто сетевые сервисы, справочники и т.п. Например, автор данной работы в свое время хотел зарегистрировать домен RussianLDP.net и отказался от этого лишь из-за оплаты домена. Но в последнее время в нем стало можно регистрировать имена за рекламу, так что, может, еще и соберусь...
mil |
|
Американские военные учреждения.
gov |
|
Американские правительственные учреждения (хотя в последнее время наметились сдвиги в плане того, чтобы сделать этот домен международным правительственным).
uucp |
|
Официально, все имена сайтов, прежде используемые как UUCP-имена без доменов, были перемещены в этот домен.
ru |
|
Российский национальный домен. Все машины с этим доменом находятся в России.
Технически первые четыре из них принадлежат американской части Internet, но там встречаются и не американские сайты. Это особенно верно для доменов .net и .org. Однако, .mil и .gov пока используются исключительно в США. Сейчас идут бурные дебаты о международных доменах.
Вне США каждая страна использует собственный домен, названный по имени страны и состоящий из двух букв определенных в ISO-3166. Финляндия, например, использует домен fi, fr используется Францией, de Германией, au Австралией и т.д.. Ниже этого высокопоставленного домена, NIC каждой страны может свободно раздавать имена хостам. Австралия, например, имеет домены второго уровня подобные международным доменам, названные com.au и edu.au . Другие, подобно Германии, не используют этот дополнительный уровень, но используют довольно длинные имена, которые непосредственно относятся к организациям, управляющим специфическим доменом, например, ftp.informatik.uni-erlangen.de.
Конечно, эти национальные домены (кроме России) не подразумевают, что хост, расположенный ниже, фактически расположен в той же стране. Это только сигнализирует, что хост регистрировался в NIC этой страны. Шведский изготовитель мог бы иметь отделение в Австралии, и все же регистрировать все хосты в домене se.
Теперь организация пространства имен в виде иерархии имен доменов приятно решает проблему уникальности имен: с DNS, имя хоста должно быть уникально только в пределах одной области (домена). Кроме того, полностью квалифицированные имена весьма легко запомнить. Но DNS делает не только это: он позволяет вам передать работу с подобластями местным администраторам. Например, администратор в вычислительном центре Groucho мог бы создать поддомен для каждого отдела: мы уже столкнулись с подобластями физиков и математиков. Когда он решит, что сеть в отделе физики слишком большая и хаотичная, чтобы справиться с ней, он может просто передать контроль над physics.groucho.edu администраторам этой сети, пусть у них головы поболят. Тогда они свободны использовать любые имена хостов и назначать их IP-адреса в пределах подсети без всякого вмешательства сверху.
Таким образом, пространство имен раздроблено на зоны (
zones), каждая из которых управляется своим доменом. Обратите внимание на различие между зоной (zone) и доменом (domain): домен groucho.edu затрагивает все машины в университете Groucho Marx, в то время как зона groucho.edu включает только хосты, которые работают в непосредственно компьютерном центре, например в отделе математики. Хост в отделе физики принадлежат другой зоне, а именно physics.groucho.edu.
Как работает INN Основная программа
Другое важное свойство INN: всегда имеется только один экземпляр innd. Это также сильно повышает эффективность потому, что daemon может обрабатывать все статьи без необходимости синхронизации внутренних переменных с другими копиями. Поскольку важно, чтобы входящие новости были обработаны настолько быстро, насколько возможно, недопустимо, чтобы сервер занимался всякими побочными задачами, например, предоставлением доступа клиентам по NNTP или распаковкой пакетов новостей с каналов UUCP. Следовательно, эти задачи вынесены в отдельные программы поддержки.
Сегодня NNTP наиболее общее средство транспортировки статей, и innd непосредственно не поддерживает другие протоколы. Это означает, что innd ждет соединений по TCP (порт 119) и принимает статьи, использующие протокол ihave.
Статьи, прибывающие транспортом, отличным от NNTP, поддержаны косвенно при наличии другого процесса, принимающего статьи и передающего их innd по NNTP. Новости, поступающие по UUCP, например, традиционно обрабатываются программой rnews. Версия rnews из INN распаковывает пакет в случае необходимости, делит его на индивидуальные статьи, а затем передает innd.
Программы работы с новостями (newsreaders) могут доставлять новости, когда пользователь посылает статью. Так как обработка newsreaders заслуживает особого внимания, мы возвратимся к этому немного позже.
При получении статьи innd сначала ищет идентификатор сообщения (message ID) в файле history . Дубликаты статей игнорируются. То же произойдет со старыми статьями или статьями с неправильным заголовком. Если innd
находит, что статья приемлема, он рассматривает строку заголовка Newsgroups:, чтобы выяснить, в какой группе эта статья должна быть сохранена. Если группа или группы найдены в файле active, статья записывается на диск. Иначе, она попадает в спецгруппу junk.
Индивидуальные статьи сохраняются ниже каталога
/var/spool/news, также называемого news spool. Каждая группа новостей имеет отдельный каталог, в котором каждая статья будет сохранена в отдельном файле. Имена файлов представляют собой последовательные числа. Например, статья в группе comp.risks может иметь имя файла comp/risks/217. Если каталог, в котором требуется сохранить статью не существует, он будет создан автоматически innd.
Кроме сохранения статей Вы можете также передавать их своим подписчикам. Это управляется файлом newsfeeds, который вносит в список всех подписчиков наряду с группами новостей, которые должны быть посланы к ним.
Обработка исходящих новостей выполняется отдельным интерфейсом. Вместо того, чтобы делать всю транспортную обработку непосредственно, innd полагается на различные программы, которые управляют передачей статей на другие серверы новостей. Такие средства названы каналами (channels). В зависимости от цели канал может иметь различные атрибуты, которые определяют точно, какая информация проходит к этому кналу от innd.
Для исходящего трафика NNTP innd может порождать несколько процессов innxmit. Каждой копии этой программы передается имя файла статьи, ее размер и message ID через стандартный ввод. Для исходящего трафика UUCP данные о статье вносятся в файл протокола, обрабатываемый затем программой, которая собирает статьи в пакеты, сжимает их и отсылает по назначению.
Помимо этих двух примеров, имеются другие типы каналов. Они используются, например, при архивировании групп новостей или при подготовке краткого обзора. Информация краткого обзора предназначена, чтобы помочь программам работы с новостями обрабатывать потоки новостей. Раньше такая программа должна была просмотреть все статьи, чтобы получить информацию заголовка, требуемую для создания потоков. Это перегружало сервер новостей, особенно при использовании NNTP. Кроме того, этот подход был очень медленным. Механизм краткого обзора облегчает эту задачу, сохраняя все подходящие заголовки в отдельном файле (.overview) для каждой группы. Эта информация может быть поднята программой чтения новостей из каталога spool или командой XOVER протокола NNTP.
Как работает маршрутизация почты?
Имеется большое различие между способом маршрутизации дескрипторов пункта UUCP и способом маршрутизации в Internet. В Internet, основная работа направления данных на машину получателя (если только известен адрес IP) выполнен IP уровнем работы с сетями, в то время как в зоне UUCP, маршрут должен быть задан пользователем или сгенерирован средством передачи почты.
Как сказать UUCP о других системах: файл sys
Файл sys описывает системы, о которых Ваша машина знает. Запись представляется ключевым словом system; затем до следующей директивы system следуют детальные параметры, специфические для этой системы. Обычно, сведения системы определяют номер телефона, login chat и другие подобные параметры входа в систему.
Как сказать UUCP о других системах: файл sys
Файл sys описывает системы, о которых Ваша машина знает. Запись представляется ключевым словом system; затем до следующей директивы system следуют детальные параметры, специфические для этой системы. Обычно, сведения системы определяют номер телефона, login chat и другие подобные параметры входа в систему.
Параметры перед самой первой записью system задают значения по умолчанию для всех систем.
Наиболее важные элементы записи подробней описаны ниже.
Как скрыть пароль для логина NetWare
Указывать пароль в командной строке ncpmount
опасно. Например, его можно увидеть командами top или ps. Чтобы уменьшить риск, ncpmount может читать данные из файла в домашнем каталоге пользователя. Этот файл хранит имя входа пользователя в систему и пароль, связанный с каждым из файловых серверов. Файл называется /.nwclient и должен иметь права доступа 0600, чтобы гарантировать, что другие пользователи не могут его читать. Если права доступа заданы неправильно, ncpmount откажется использовать его.
Как скрыть пароль для логина NetWare
Указывать пароль в командной строке ncpmount
опасно. Например, его можно увидеть командами top или ps. Чтобы уменьшить риск, ncpmount может читать данные из файла в домашнем каталоге пользователя. Этот файл хранит имя входа пользователя в систему и пароль, связанный с каждым из файловых серверов. Файл называется /.nwclient и должен иметь права доступа 0600, чтобы гарантировать, что другие пользователи не могут его читать. Если права доступа заданы неправильно, ncpmount откажется использовать его.
Файл имеет очень простой синтаксис. Любые строки, начинающиеся символом #, обрабатываются как комментарии и игнорируются. Остальные строки имеют синтаксис:
|
fileserver/userid password
Здесь fileserver задает имя сервера файлов, userid имя входа в систему на этом сервере, password задает пароль и может отсутствовать. Если этого поля нет, ncpmount
запросит пароль при монтировании. Если поле password определено как -, пароль не используется, это эквивалентно параметру -n
командной строки.
Вы можете задать сколько угодно записей, но поле имени сервера должно быть уникальным. Первая запись задает сервер по умолчанию. Команда ncpmount использует для задания сервера, с которым надо связаться, параметр командной строки -S. Он задает то, какую запись в /.nwclient ++-¦ гL¦¦¦+-¦++L+. хL¦г + -S ++ -T+-++ L+T++T, гL¦¦¦+--+LLT -+-+++-¦ ¦¦ -=¦¦¦++гL.
Как в Usenet обрабатывают новости?
Новости распространяются по сети различными транспортами. Как историческая среда используется UUCP, но сегодня основной трафик несет Internet. Используемый алгоритм маршрутизации называется лавинной (flooding) маршрутизацией. Каждый сайт поддерживает ряд связей с другими абонентами. Любая статья, сгенерированная или полученная локальной системой новостей будет послана к ним (это называется подпиткой новостями, news feeds).
Чтобы отличать статьи и распознавать дубликаты, Usenet-статьи должны нести ID сообщения (заданный в поле заголовка Message-Id:), которое объединяет имя пункта регистрации и серийный номер в виде serial
@site. Для каждой обработанной статьи, система новостей регистрирует ее ID в файле history, в котором проверяются все прибывающие статьи.
Поток между любыми двумя сайтами может быть ограничен в соответствии с двумя критериями. Во-первых, статье назначается область распространения (в поле заголовка Distribution:), которая может использоваться, чтобы ограничить рассылку некоторой группой сайтов. С другой стороны обмен новостями может быть ограничен системами получения и передачи. Набор групп новостей (конференций) и областей рассылки обычно хранится в файле sys.
Реальное число статей обычно требует, чтобы к вышеупомянутой схеме были сделаны уточнения. На сетях UUCP обычно статьи за некоторый период времени объединяются в один файл, который сжимается и посылается удаленному сайту. Это вызывается пакетированием (batching).
Альтернативная методика: протокол ihave/sendme, который не дает пересылась статьи дважды. Вместо того, чтобы помещать все статьи в пакетные файлы и посылать их, только ID сообщений будут объединены в сообщении "ihave" и посланы. Удаленный сайт читает это сообщение, сравнивает с файлом history и возвращает список статей, которые ему нужны в сообщении "sendme". Только запрошенные статьи будут посланы.
Конечно, ihave/sendme имеет смысл только, если это включает два больших сайта, которые получают новости из нескольких независимых источников каждый и опрашивают друг друга достаточно часто для эффективного потока новостей.
Сайты, которые находятся в Internet, полагаются на TCP/ IP программное обеспечение, которое использует Network News Transfer Protocol (NNTP). NNTP описан в RFC-977. Он отвечает за передачу новостей между серверами новостей и обеспечивает Usenet-доступ одиночным пользователям.
NNTP знает три различных способа передать новости. Первый: версия ihave/sendme в реальном масштабе времени, также упоминаемого как выталкивание (pushing) новостей. Вторая методика названа pulling. Здесь пользователь запрашивает список статей в данной группе новостей (newsgroup) или иерархии, которые достигли сервера после определенной даты, и выбирает те, которых у него нет. Третья методика предназначена для интерактивных программ работы с новостями (newsreader). Она позволяет Вам или Вашему newsreader отыскивать статьи из определенных newgroups и передавать статьи с незавершенной информацией заголовка.
На кааждом сайте новости хранятся в иерархии каталога /var/spool/news, каждая статья в отдельном файле, и каждая newsgroup в отдельном каталоге. Имя каталога составлено из имени newsgroup с компонентами пути. Таким образом, статьи comp.os.linux.misc сохраняются в /var/spool/news/comp/os/linux/misc. Статьи получают номера в порядке поступления. Эти номера служат именами файлов. Диапазон номеров статей в настоящее время интерактивно сохраняется в файле active, который в то же время служит как список newsgroups, известных Вашему сайту.
Так как дисковое пространство конечный ресурс, Вы должны отбрасывать статьи после некоторого времени. Это называется expiring. Обычно статьи из некоторых групп и иерархий устаревают в течение фиксированного числа дней после того, как они прибывают. Это может быть изменено отправителем с помощью поля Expires: заголовка статьи.
Вы теперь имеете достаточно информации, чтобы выбрать, что читать дальше. Пользователи UUCP должны читать о C-News в главе 21. Если Вы используете TCP/IP сеть, читайте о NNTP в главе 22 . Если Вы должны передавать умеренные количества новостей по TCP/IP, сервера, описанного в этой главе может быть достаточно для Вас. Чтобы установить сверхпрочный сервер новостей, который может обрабатывать огромные объемы, прочитайте о InterNet News в главе 23.
Клиентская сторона NIS Если Вы
NIS-реализация этих функций изменяет это поведение и использует обращение RPC к серверу NIS, который ищет логин или user ID. Функция может обрабатывать NIS-данные, как если бы они были добавлены к оригинальному файлу passwd, так что оба набора информации доступны прикладной программе и будут использованы. Есть второй вариант: информация в локальном passwd игнорируется вообще, и используются только NIS-данные.
Для традиционных реализаций NIS имелись некоторые соглашения на предмет того, какие карты как обрабатывать. Но иногда это позволяло модифицировать файл passwd и открывало дыры в защите. Для обхода этих ловушек NYS и GNU libc используют общую схему конфигурации, которая определяет, использует ли специфический набор функций пользователя оригинальные файлы, NIS или NIS+, а также в каком порядке. Эта схема будет рассмотрена чуть ниже.
Кольцевой интерфейс (Loopback)
Самый первый интерфейс, который нужно сформировать и активизировать, это интерфейс loopback:
|
# ifconfig lo 127.0.0.1
Кольцевой интерфейс (Loopback)
Самый первый интерфейс, который нужно сформировать и активизировать, это интерфейс loopback:
|
# ifconfig lo 127.0.0.1
Иногда Вы будете видеть фиктивное имя localhost, используемое вместо IP-адреса. ifconfig будет искать имя в файле hosts, где должна быть запись, объявляющая его как имя для адреса 127.0.0.1:
|
# Sample /etc/hosts entry for localhost localhost 127.0.0.1
Чтобы просмотреть информацию о конфигурации интерфейса, Вы можете вызвать ifconfig, передав как аргумент имя интерфейса:
|
$ ifconfig lo
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Collisions:0
Как Вы можете видеть, интерфейс loopback получил сетевую маску 255.0.0.0, так как адрес 127.0.0.1 принадлежит к классу A.
Теперь Вы можете начать работать с вашей мини-"сетью". Единственное, чего не хватает, это записи в таблице маршрутизации, которая говорит IP, что этот интерфейс можно использовать как маршрут к месту назначения 127.0.0.1. Это делается с помощью команды:
|
# route add 127.0.0.1
Здесь тоже можно использовать localhost вместо IP-адреса, если он задан в файле /etc/hosts.
Затем вы должны проверить правильность работы, например, используя ping. ping сетевой эквивалент звукового устройства и используется для проверки того, доступен ли IP-адрес и измерения интервала времени между посылкой пакета и получением ответа. Время, требуемое для этого, часто называется round-trip time:
|
# ping localhost
PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.4 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.4 ms 64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.4 ms ^C --- localhost ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.4/0.4/0.4 ms
<
/p>
При вызове ping он будет испускать пакеты, пока пользователь его не остановит. ^C отмечает место, где я нажал Ctrl-C для прерывания.
Вышеупомянутый пример показывает, что пакеты доставлены к 127.0.0.1, и ответ пришел к ping почти мгновенно. Это показывает, что вы преуспели во введении вашего первого сетевого интерфейса.
Если вывод который вы получаете от ping не походит на показанный выше, вы нарвались на неприятности. Проверьте ошибки в установочных файлах. Проверьте чтобы ifconfig и route, которые вы используете, были совместимы с ядром, которым Вы пользуетесь, и что ядро вообще компилировалось с разрешенной сетью (если сеть запрещена, вы увидите это по отсутствию каталога /proc/net). Если Вы получаете сообщение об ошибке, "Network unreachable", значит вы неправильно использовали команду route. Удостоверьтесь, что используете тот же самый адрес, что дали ifconfig.
Описанных выше шагов достаточно, чтобы использовать сетевые приложения на автономном компьютере. После добавления вышеупомянутых строк к скрипту запуска, вы можете перезагрузить вашу машину и попытаться использовать различные приложения. Например, telnet localhost
должен установить telnet-соединение с вашей машиной и вывести приглашение login:.
Однако, интерфейс loopback полезен не только как пример в книгах о сетях или как система отладки, он фактически используется некоторыми приложениями в течение нормальной работы. Поэтому вы всегда должны конфигурировать его независимо от того, присоединена ли ваша машина к сети или нет.
Команда echo
Команда echo служит как помощь в отладке. Использование echo on просит dip пересылать копию диалога с последовательным устройством на консоль. Эхо можно выключить командой echo off.
Команда echo
Команда echo служит как помощь в отладке. Использование echo on просит dip пересылать копию диалога с последовательным устройством на консоль. Эхо можно выключить командой echo off.
dipтакже позволяет Вам временно выключить режим скрипта и выйти в режим терминала. В этом режиме Вы можете использовать dip точно так же, как и обычную программу-терминал, пишущую в последовательную линию и читающую из нее. Чтобы выйти из этого режима, введите Ctrl-].
Команда get
Команда get представляет собой способ установки переменных в dip. Самая простая форма: установить переменную как константу, как это делалось в вышеупомянутом примере. Вы можете также спросить значение у пользователя, определяя ключевое слово ask вместо значения:
|
DIP> get $local ask
Enter the value for $local:
Команда get
Команда get представляет собой способ установки переменных в dip. Самая простая форма: установить переменную как константу, как это делалось в вышеупомянутом примере. Вы можете также спросить значение у пользователя, определяя ключевое слово ask вместо значения:
|
DIP> get $local ask
Enter the value for $local:
Третий метод состоит в том, чтобы попробовать получить значение с удаленного хоста. Причудливо на первый взгляд, но это очень полезно в некоторых случаях: некоторые серверы-SLIP не позволяют Вам использовать Ваш собственный IP-адрес на SLIP-связи, а будут приписывать Вам один из своих адресов всякий раз, когда Вы набираете номер, печатая сообщение, которое информирует Вас относительно адреса, который был назначен. Если есть сообщение вроде "Your address: 192.168.5.74", то следующий фрагмент кода dip его примет в Вашей системе:
|
# finish login wait address: 10 get $locip remote
Команда ipx_configure
Каждый интерфейс IPX должен знать, к которой IPX-сети принадлежит, и какой тип пакета использовать для IPX. Каждый компьютер, обеспечивающий IPX, имеет по крайней мере один интерфейс, известный как первичный (primary), который остальная часть сети использует, чтобы обратиться к нему. IPX-поддержка ядра Linux обеспечивает средства автонастройки их параметров. Команда ipx_configure
включает или выключает это автоматическое свойство конфигурации.
Команда ipx_configure
Каждый интерфейс IPX должен знать, к которой IPX-сети принадлежит, и какой тип пакета использовать для IPX. Каждый компьютер, обеспечивающий IPX, имеет по крайней мере один интерфейс, известный как первичный (primary), который остальная часть сети использует, чтобы обратиться к нему. IPX-поддержка ядра Linux обеспечивает средства автонастройки их параметров. Команда ipx_configure
включает или выключает это автоматическое свойство конфигурации.
Без параметров ipx_configure отображает текущие настройки флажков автоконфигурации:
|
# ipx_configure
Auto Primary Select is OFF Auto Interface Create is OFF
Флажки Auto Primary и Auto Interface по умолчанию выключены. Для их включения и запуска автоконфигурации, задайте параметры:
|
# ipx_configure --auto_interface=on --auto_primary=on
Когда параметр --auto_primary установлен в on, ядро автоматически гарантирует, что как минимум один активный интерфейс функционирует как первичный интерфейс для компьютера.
Когда параметр --auto_interface установлен в on, IPX-драйвер ядра будет слушать все пакеты, полученные на активных сетевых интерфейсах, и пытаться определить сетевой адрес IPX и используемый тип пакета.
Механизм автоматического определения работает хорошо на правильно управляемых сетях. Есть примеры настройки сети IPX так, чтобы по Ethernet шли пакеты разных типов, что технически недопустимо. Настроенный как 802.2 компьютер не может непосредственно связываться с сетью Ethernet-II и, следовательно, не может быть в той же самой IPX-сети. Linux IPX-поддержка слушает на сегменте IPX-пакеты. Из них она пытается вычислить адрес и тип пакета, если типы пакетов разные, или они идут на несколько интерфейсов сразу, это будет понято как сетевая проверка на пересечение адреса. Определить правильный тип пакета в такой ситуации едва ли получится. В файле протокола в такой ситуации появится нечто вроде:
|
IPX: Network number collision 0x3901ab00 eth0 etherII and eth0 802.3
Если Вы видите эту проблему, отключите автоматическое определение и настройте интерфейсы вручную, используя команду ipx_interface, как сказано ниже.
Команда ipx_interface
Команда ipx_interface используется, чтобы вручную добавить, изменить и удалить параметры IPX существующего устройства сети. Вы должны использовать ipx_interface, когда автоматический метод конфигурации не работает. ipx_interface позволяет определять сетевой адрес IPX, первичное состояние интерфейса и тип пакета IPX, который это сетевое устройство использует. Если Вы создаете несколько IPX-интерфейсов, Вы нуждаетесь в одной команде ipx_interface для каждого.
Команда ipx_interface
Команда ipx_interface используется, чтобы вручную добавить, изменить и удалить параметры IPX существующего устройства сети. Вы должны использовать ipx_interface, когда автоматический метод конфигурации не работает. ipx_interface позволяет определять сетевой адрес IPX, первичное состояние интерфейса и тип пакета IPX, который это сетевое устройство использует. Если Вы создаете несколько IPX-интерфейсов, Вы нуждаетесь в одной команде ipx_interface для каждого.
Синтаксис команды, чтобы добавить IPX на существующее устройство Ethernet:
|
# ipx_interface add -p eth0 etherII 0x32a10103
Параметры означают: -p
Определяет, что этот интерфейс должен быть первичным интерфейсом. Этот параметр факультативный
eth0
Имя сетевого устройства, на которое мы добавляем поддержку IPX.
etherII
Тип пакета, в даноом случае Ethernet-II. Это значение также может быть кодировано как 802.2, 802.3
или SNAP.
0x32a10103
Сетевой адрес IPX, которому этот интерфейс принадлежит.
Следующая команда удаляет IPX из интерфейса:
|
# ipx_interface del eth0 etherII
Наконец, чтобы отобразить текущую конфигурацию IPX для сетевого устройства используйте:
|
# ipx_interface check eth0 etherII
Команда ipx_interface подробно описана на ее man-странице.
Команда print
Отображает текст на консоли из dip. Любые переменные dip могут быть использованы в таких командах. Например:
|
DIP> print Using port $port at speed $speed
Using port ttyS3 at speed 38400
Команда print
Отображает текст на консоли из dip. Любые переменные dip могут быть использованы в таких командах. Например:
|
DIP> print Using port $port at speed $speed
Using port ttyS3 at speed 38400
Команда setserial
Ядро при запуске само пытается определить настройки устройств, но из-за их большого разнообразия это не всегда возможно. Хороший пример того, где это является проблемой, внутренние модемы, о которых мы говорили ранее. UART, который они используют, имеет 16-байтовый буфер FIFO, но он похож на UART 16450. Если мы определенно не сообщаем драйверу, что этот порт является устройством UART 16550, ядро не будет использовать расширенный буфер. Еще одним примером являются четырехпотровые карты, которые позволяют поделить один IRQ между несколькими устройствами. Нам, вероятно, придется сообщать ядру, который IRQ-порт предполагается использовать, и что IRQ может быть разделен несколькими устройствами.
Команда setserial
Ядро при запуске само пытается определить настройки устройств, но из-за их большого разнообразия это не всегда возможно. Хороший пример того, где это является проблемой, внутренние модемы, о которых мы говорили ранее. UART, который они используют, имеет 16-байтовый буфер FIFO, но он похож на UART 16450. Если мы определенно не сообщаем драйверу, что этот порт является устройством UART 16550, ядро не будет использовать расширенный буфер. Еще одним примером являются четырехпотровые карты, которые позволяют поделить один IRQ между несколькими устройствами. Нам, вероятно, придется сообщать ядру, который IRQ-порт предполагается использовать, и что IRQ может быть разделен несколькими устройствами.
setserial была создана, чтобы конфигурировать последовательный драйвер во время выполнения. Команда
setserial обычно выполняется при начальной загрузке из скрипта, который в одних дистрибутивах называется 0setserial, а в других rc.serial. Этот скрипт обязан инициализировать последовательный драйвер, чтобы разместить любые нестандартные или необычные последовательные аппаратные средства в машине.
Общий синтаксис для команды setserial:
|
setserial device [parameters]
Здесь device является одним из последовательных устройств, типа ttyS0.
Команда setserial имеет большое количество параметров. Наиболее важные из них описаны в таблице 4-1. Остальные можно найти на man-странице по setserial.
Команда stty
Имя stty, возможно, произошло от сокращения "set tty", но команда stty может также использоваться, чтобы отобразить конфигурацию терминала. Возможно, даже больше, чем setserial, команда stty
обеспечивает изумительное число характеристик, которые Вы можете легко настроить. stty обычно используется, чтобы конфигурировать параметры терминала, типа того, будут ли символы отображены на экране, или какая клавиша должна генерировать сигнал прерывания. Мы объяснили ранее, что последовательные устройства являются tty-устройствами, а значит, команда stty применима к ним.
Команда stty
Имя stty, возможно, произошло от сокращения "set tty", но команда stty может также использоваться, чтобы отобразить конфигурацию терминала. Возможно, даже больше, чем setserial, команда stty
обеспечивает изумительное число характеристик, которые Вы можете легко настроить. stty обычно используется, чтобы конфигурировать параметры терминала, типа того, будут ли символы отображены на экране, или какая клавиша должна генерировать сигнал прерывания. Мы объяснили ранее, что последовательные устройства являются tty-устройствами, а значит, команда stty применима к ним.
Одно из важнейших применений stty заключается в управлении аппаратным подтверждением связи на устройстве. Мы кратко говорили ранее относительно аппаратного подтверждения связи. Значение по умолчанию конфигурация для последовательных устройств: аппаратное подтверждение заблокировано. Эта установка позволяет работать последовательным кабелям “three wire”. Они не поддерживают необходимые сигналы для аппаратного подтверждения связи, и если оно включено по умолчанию, они будут не способны передать сигнал, чтобы изменить это.
Удивительно, но некоторые программы не допускают аппаратное подтверждение связи, так что если Ваш модем эту функцию поддерживает, Вы должны конфигу- рировать его так, чтобы ее использовать (проверьте руководство по модему, чтобы узнать, какую команду применить) и сконфигурировать последовательное устройство, чтобы учитывать это подтверждение. Команда stty имеет параметр crtscts, который включает аппаратное подтверждение связи на устройстве. Вам придется использовать его. Команда лучше всего должна быть выдана из rc.serial файла (или его эквивалента) при начальной загрузке. Образец показан в примере 4-3.
Команды
Команды позволяют управлять правилами и наборами правил iptables. К IP firewall относятся:
-A chain
Добавляет одно или большее количество правил к концу назначенной цепочки. Если имя машины задано для источника или адресата, и оно соответствует нескольким IP-адресам, правило будет добавлен для каждого адреса.
Команды
Команды позволяют управлять правилами и наборами правил iptables. К IP firewall относятся:
-A chain
Добавляет одно или большее количество правил к концу назначенной цепочки. Если имя машины задано для источника или адресата, и оно соответствует нескольким IP-адресам, правило будет добавлен для каждого адреса.
-I chain rulenum
Добавляет одно или большее количество правил в начало назначенной цепочки. Если имя машины задано для источника или адресата, и оно соответствует нескольким IP-адресам, правило будет добавлен для каждого адреса.
-D chain
Удаляет одно или несколько правил из определенной цепочки, которая соответствует заданной спецификации правил.
-D chain rulenum
Удаляет правило в позиции rulenum
указанной цепочки. Нумерация начинается с 1.
-R chain rulenum
Заменяет правило в позиции rulenum
указанной цепочки заданным правилом.
-C chain
Проверяет пакет спецификацией правила по заданной цепочке. Эта команда возвратит сообщение, описывающее, как пакет обработан цепочкой. Это очень полезно для тестирования Вашей конфигурации firewall, и мы рассмотрим это подробно чуть позже.
-L [chain]
Выведет список правил в наборе, или всех правил, если конкретный набор не задан.
-F [chain]
Стирает правила в наборе или во всех наборах, если конкретный набор не задан.
-Z [chain]
Обнуляет счетчикик пакетов и байтов для всех правил в наборе или для всех наборов, если конкретный набор не задан.
-N chain
Создает новую цепочку с заданным именем. Таким способом создаются задаваемые пользователем цепочки.
-X [chain]
Удаляет определенную пользовательскую цепочку или все цепочки, если никакая конкретная цепочка не задана. На удаляемую цепочку не должно быть ссылок из других цепочек, иначе она не будет удалена.
-P chain policy
Задает стратегию по умолчанию для указанной цепочки. Допустимые стратегии: ACCEPT, DROP, QUEUE и RETURN. ACCEPT пропускает пакет. DROP отбрасывает пакет. QUEUE передает пакет пользовательской цепочке для дальнейшей обработки. RETURN заставляет IP firewall вернуться к цепочке, правило которой вызвало эту ситуацию, и предписывает продолжить ее обработку со следующего правила.
Команды dip
В этом разделе мы рассмотрим команды языка скриптов dip . Вы можете получить краткий обзор всех команд, вызывая dip в тестовом режиме и вводя команду help. Для того, чтобы выяснить синтаксис конкрентой команды, Вы можете набрать команду без каких-либо аргументов; увы, это не сработает с командами, которым не нужны аргументы. Ниже показано действие команды help:
Команды dip
В этом разделе мы рассмотрим команды языка скриптов dip . Вы можете получить краткий обзор всех команд, вызывая dip в тестовом режиме и вводя команду help. Для того, чтобы выяснить синтаксис конкрентой команды, Вы можете набрать команду без каких-либо аргументов; увы, это не сработает с командами, которым не нужны аргументы. Ниже показано действие команды help:
|
# dip -t
DIP: Dialup IP Protocol Driver version 3.3.7p-uri (25 Dec 96) Written by Fred N. van Kempen, MicroWalt Corporation. Debian version 3.3.7p-2 (debian).
DIP> help
DIP knows about the following commands:
beep bootp break chatkey config databits dec default dial echo flush get goto help if inc init mode modem netmask onexit parity password proxyarp print psend port quit reset securidfixed securid send shell skey sleep speed stopbits term timeout wait
DIP> echo
Usage: echo on|off DIP>
Во всех примерах, в которых есть приглашение DIP>, имеется в виду ввод команды в тестовом режиме. Примеры, в которых такого приглашения нет, показывают скрипты.
Команды if и goto
Команда if полноценная команда if, без которой нет ни одного языка программирования. Ее синтаксис:
|
if var op number goto label
Команды if и goto
Команда if полноценная команда if, без которой нет ни одного языка программирования. Ее синтаксис:
|
if var op number goto label
где выражение должно быть простым сравнением с одной из переменных $errlvl, $locip и$rmtip.
var должен быть целым числом; оператор op может быть одним из ==, !=, , >, и >=.
Команда goto передает управление на строку с меткой label. Метка должна быть первым словом в строке и оканчиваться двоеточием.
Команды модема
dip имеет ряд команд для настройки последовательной линии и модема. Некоторые из них очевидны, например, port выбирает последовательный порт, speed, databits , stopbits и parity, которые задают соответствующие параметры линии. Команда modem задает тип модема. Пока поддерживается только HAYES (именно БОЛЬШИМИ буквами!). Вы должны сообщить dip тип модема, иначе он не будет выполнять команды dial и reset. Команда reset посылает в модем строку рестарта. Для Hayes-совместимых модемов это ATZ.
Команды модема
dip имеет ряд команд для настройки последовательной линии и модема. Некоторые из них очевидны, например, port выбирает последовательный порт, speed, databits , stopbits и parity, которые задают соответствующие параметры линии. Команда modem задает тип модема. Пока поддерживается только HAYES (именно БОЛЬШИМИ буквами!). Вы должны сообщить dip тип модема, иначе он не будет выполнять команды dial и reset. Команда reset посылает в модем строку рестарта. Для Hayes-совместимых модемов это ATZ.
Код flush может использоваться для того, чтобы убрать все реакции, которые модем посылает в ответ на команды. Иначе скрипт после reset может запутаться потому, что он читает OK реакции на более ранние команды модема.
Команда init посылает в модем строку инициализации перед дозвоном. Для Hayes-модемов это обычно "ATE0Q0V1X1".
Команда dial звонит на удаленную машину. Для Hayes-модемов это обычно ATD.
Краевые эффекты IP masquerade
Ни один из компьютеров в сети позади маршрутизатора masquerade никогда не проявится в сети непосредственно. Следовательно, вы нуждаетесь только в одном реальном адресе IP, чтобы позволить всем компьютерам делать сетевые подключения в Internet. Это имеет и плохую сторону: ни один из этих компьютеров не видим из Internet, и вы не можете непосредственно соединяться с ними из Internet. Единственный компьютер, видимый в masquerade-сети, это машина, которая обеспечивает masquerade. Это важно, когда используются услуги типа почты или FTP. Этот факт помогает определять то, что услуги нужно обеспечить masquerade-компьютером.
Второй момент: поскольку внутренние компьютеры ни при каких обстоятельствах не будут видны из внешней сети, резко падают требования к их защите, иногда на шлюзе даже не нужен firewall! Однако, лучше его все же использовать, поскольку надежность всей сети определяется надежностью шлюза.
Третье, IP masquerade будет иметь некоторое воздействие на эффективность вашей работы с сетями. При большом числе машин такое явление начнет проявляться. IP masquerade должен делать много работы для каждого пакета. Так что ставьте на шлюз машину помощнее.
Наконец, некоторые сетевые сервисы либо вообще не работают через masquerade, либо требуют немало работы по их настройке. Обычно это сервисы, которым нужны входящие соединения: Direct Communications Channels (DCC), IRC, разные видео и аудио трансляций. Некоторые из этих услуг имеют модули для своей работы в такой ситуации, другие вообще не могут быть использованы.
Login chat
Выше мы уже сталкивались со скриптом входа в систему (login chat script), который сообщает uucico, как регистрироваться в удаленной системе. Он состоит из списка лексем, определяя строки, ожидаемые и посланные локальным процессом uucico. Проблема состоит в том, чтобы заставить uucico ждать, пока удаленная машина не пошлет приглашение входа в систему, затем послать имя входа в систему, ждать, пока удаленная система пошлет приглашение на ввод пароля, и посылать пароль. Ожидание и посылка строки чередуются. uucico автоматически добавляет символ возврата каретки (\r) к любой посылаемой строке. Таким образом, простой скрипт похож на:
|
ogin: vstout ssword: catch22
login chat
Выше мы уже сталкивались со скриптом входа в систему (login chat script), который сообщает uucico, как регистрироваться в удаленной системе. Он состоит из списка лексем, определяя строки, ожидаемые и посланные локальным процессом uucico. Проблема состоит в том, чтобы заставить uucico ждать, пока удаленная машина не пошлет приглашение входа в систему, затем послать имя входа в систему, ждать, пока удаленная система пошлет приглашение на ввод пароля, и посылать пароль. Ожидание и посылка строки чередуются. uucico автоматически добавляет символ возврата каретки (\r) к любой посылаемой строке. Таким образом, простой скрипт похож на:
|
ogin: vstout ssword: catch22
Обратите внимание, что поля записи не содержат текста приглашений. Удостоерьтесь, что вы войдете в систему , даже если система посылает Login: вместо login:.
uucico также учитывает некоторые виды условного выполнения, например, в случае, если getty удаленной машины должен быть сброшен перед посылкой приглашения. Для этого Вы можете присоединить под-дружескую (sub-chat) беседу к ожидающейся строке. Sub-chat выполняется только, если основное соединение не удалось, то есть произошла блокировка по времени. Один из способов использовать эту возможность состоит в том, чтобы послать BREAK, если удаленная система не отображает приглашение входа в систему. Следующий пример дает всесторонний скрипт дружеской беседы, который должен работать и в случае, если Вы должны нажать Enter прежде, чем войти в систему. Пустая строка ("") говорит UUCP ничего не ждать и продолжать посылать следующую строку немедленно.
|
"" \n\r\d\r\n\c ogin:-BREAK-ogin: vstout ssword: catch22
Имеется несколько специальных строк и ESC-символов, которые могут включаться в скрипт:
""
Пустая строка сообщает, чтобы uucico не ждал ничего, а продолжил посылать следующую.
\t
Табуляция.
\r
Перевод каретки.
\s
Пробел. Вы нуждаетесь в нем, чтобы включить пробел в строку регистрации в скрипте.
\n
Перевод строки. В unix-системах понятия перевода (возврата) каретки и перевода строки разделены в отличие от DOS/Windows-систем.
\\
Обратный слэш (\).
В посылаемой строке в дополнение к вышеупомянутым допустимы следующие ESC-символы и последовательности:
EOT
Конец передачи (^D).
BREAK
Прерывание (Break).
\c
Возврат каретки в конце строки.
\d
Пауза в 1 секунду.
\E
Дает возможность эхо-проверки. Эхом (ECHO) называется возвращение копии всей переданной информации для контроля. Этот режим требует, чтобы uucico дождался ECHO всего, что он передает прежде, чем сможет продолжать регистрацию. Это удобно, когда используется в скриптах модема (с которыми мы столкнемся ниже). По умолчанию эхо выключено.
\e
Выключить эхо-контроль.
\K
Аналогично BREAK.
\p
Пауза на половину секунды.
Локальные пользователи
Локальный адрес обычно обозначает почтовый ящик пользователя. Ящик обычно размещается в /var/spool/mail и имеет имя пользователя, которому принадлежит файл. Если файл не существует, Exim его создаст сам.
Локальные пользователи
Локальный адрес обычно обозначает почтовый ящик пользователя. Ящик обычно размещается в /var/spool/mail и имеет имя пользователя, которому принадлежит файл. Если файл не существует, Exim его создаст сам.
В некоторых конфигурациях группа будет установлена в группу пользователя, а режим доступа к файлу в 0600. В этих случаях процессы доставки будут выполнены от имени пользователя, и пользователь может удалить почтовый ящик полностью. В других конфигурациях группа почтового ящика mail, режим доступа 660. Процессы доставки будут выполнены под системным uid и группой mail , пользователи не смогут удалять файлы почтовых ящиков, хотя они могут освобождать их.
Обратите внимание, что хотя в настоящее время стандартное место для размещения файлов почтовых ящиков /var/spool/mail, некоторое программное обеспечение почты может компилироваться, чтобы использовать другие места, например, /usr/spool/mail . Если доставка пользователям на Вашей машине терпит неудачу, попробуйте создать ссылку на /var/spool/mail.
Адреса MAILER-DAEMON и postmaster должны обычно появляться в Вашем файле псевдонимов, расширяясь в email-адрес администратора системы. MAILER-DAEMON используется Exim как адрес отправителя в сообщениях об ошибках. Также рекомендуется, чтобы root был установлен как псевдоним для администратора, особенно, когда доставки выполняются согласно правам пользователей-получателей, чтобы избежать доставок с правами root.
MAC-расширения: использование с опциями -m mac
- -mac-source [!] address
Задает, с какого адреса в сети Ethernet должен придти пакет для этого правила. Это имеет смысл только в правилах input или forward, поскольку любой передаваемый нами пакет должен соответствовать правилам output.
MAC-расширения: использование с опциями -m mac
- -mac-source [!] address
Задает, с какого адреса в сети Ethernet должен придти пакет для этого правила. Это имеет смысл только в правилах input или forward, поскольку любой передаваемый нами пакет должен соответствовать правилам output.
Маршрутизация через PPP-линию
После установки сетевого интерфейса, pppd установит маршрут только к своему серверу. Если удаленный хост находится в локальной сети (LAN), вы обязательно захотите соединяться с хостами в ней, то есть должен быть установлен сетевой маршрут.
Маршрутизация через PPP-линию
После установки сетевого интерфейса, pppd установит маршрут только к своему серверу. Если удаленный хост находится в локальной сети (LAN), вы обязательно захотите соединяться с хостами в ней, то есть должен быть установлен сетевой маршрут.
Мы уже видели, что pppd можно попросить уствновить заданный по умолчанию маршрут, используя опцию
defaultroute. Эта опция очень полезна, если PPP-сервер, с которым вы связались, будет действовать как Internet-шлюз.
Обратный случай является относительно простым: ваша система действует как шлюз для единственного хоста. Например, возьмите некоторых служащих в Virtual Brewery, чья локальная машина называется oneshot. При соединении с vlager через PPP, она использует адрес в подсети Brewery. В vlager мы можем теперь дать pppd опцию proxyarp, которая установит ARP-запись для oneshot. Это автоматически сделает oneshot доступным для всех в Brewery и в Winery.
Однако, вещи далеко не всегда так просты, как иногда кажется, например, когда Вы соединяете две LAN-сети. Это обычно требует добавления специального сетевого маршрута, потому что эти сети могут иметь свой маршрут по умолчанию. Кроме того, если на обоих машинах использование связи PPP задано как маршрут по умолчанию, получится цикл, где блоки к неизвестным адресатам будут перебрасываться между машинами до окончания их времени жизни.
Как пример, предположим, что Virtual Brewery открывает ветвь в каком-нибудь другом городе. Подразделение запускает собственную сеть Ethernet, используя сетевой адрес 172.16.3.0, который является подсетью 3 сети Brewery класса B. Они хотят соединиться с Brewery Ethernet по PPP для того, чтобы модифицировать базы данных заказчиков и т.п. Снова vlager действует как шлюз, другая машина называется vbourbon и имеет IP-адрес 172.16.3.1. Такая сеть показана в приложении A.
Когда vbourbon соединится с vlager, она примет заданный по умолчанию маршрут к vlager как обычно. На vlager мы должны установить сетевой маршрут для подсети 3, который проходит к vbourbon. Для этого мы используем особенность pppd, которая еще не обсуждалась: команду ip-up. Это программа, размещенная в /etc/ppp, которая будет выполнена после того, как PPP интерфейс будет сконфигурирован. Когда он существует, эта программа вызывается со следующими параметрами
|
ip-up iface device speed local_addr remote_addr
Следующая таблица описывает все параметры этой программы (в первой колонке указаны имена параметров, используемые в скрипте):
Аргумент
Имя
Описание
$1 |
iface |
| Используемый сетевой интерфейс, например ppp0
$2 |
device |
|
Имя используемого последовательного устройства (если используется stdin/stdout, это будет /dev/tty)
$3 |
speed |
|
Скорость устройства бит в секунду
$4 |
local_addr |
|
Локальный адрес IP
$5 |
|
remote_addr
|
Удаленный адрес IP
В нашем случае, скрипт ip-up может содержать следующий фрагмент кода:
|
#!/bin/sh case $5 in 172.16.3.1) # this is vbourbon route add -net 172.16.3.0 gw 172.16.3.1;; ... esac exit 0
В подобном режиме /etc/ppp/ip-down используется для того, чтобы отменить все действия ip-up после того, как связь PPP была завершена. В нашем скрипте
/etc/ppp/ip-down следует иметь команду route, которая отменит маршрут, созданный /etc/ppp/ip-up.
Однако схема матшрутов еще не полна. Мы установили записи таблицы маршрутов на оба PPP-хоста, но пока все другие хосты в обеих сетях не знают ничего относительно связи PPP. Это небольшая проблема, если все хосты в подразделении имеют свои, заданные по умолчанию маршруты в vbourbon, и все хосты в Brewery направляются по умолчанию на vlager. Если это не так, то ваш единственный выход в использованни демона динамической маршрутизации, например,gated. После создания сетевого маршрута на vlager он передаст новый маршрут всем хостам присоединенной подсети.
Маршрутизация через шлюз (Gateway)
В предыдущем разделе я рассмотрел только случай введения хоста с единственным Ethernet-интерфейсом. Достаточно часто приходится сталкиваться с сетями, соединенными с помощью gateway. Этот gateway может просто связывать два или больше Ethernet, а может обеспечивать связь с внешним миром (например, с Internet). Чтобы использовать сервис gateway, вы должны обеспечить сетевому уровню дополнительную информацию о маршрутизации.
Маршрутизация через шлюз (Gateway)
В предыдущем разделе я рассмотрел только случай введения хоста с единственным Ethernet-интерфейсом. Достаточно часто приходится сталкиваться с сетями, соединенными с помощью gateway. Этот gateway может просто связывать два или больше Ethernet, а может обеспечивать связь с внешним миром (например, с Internet). Чтобы использовать сервис gateway, вы должны обеспечить сетевому уровню дополнительную информацию о маршрутизации.
Например, Ethernet-сети Virtual Brewery и Virtual Winery связаны через такой gateway, а именно хост vlager. Предположим, что vlager уже был отконфигурирован, и нам осталось только добавить новую запись в таблицу маршрутизации vstout, которая сообщает его ядру, что он может достичь всех хостов сети Winery через vlager. Соответствующее описание маршрута показано ниже. Ключевое слово gw сообщает, что следующий аргумент обозначает gateway:
|
# route add wine-net gw vlager
Конечно, любой хост в сети Winery, с которым вы желаете работать должен иметь соответствующую запись в таблице маршрутизации для сети Brewery, иначе вы сможете только послать данные, но ответа не получите.
Этот пример описывает gateway, который только переключает пакеты между двумя изолированными Ethernet-сетями. Теперь предположим, что vlager также имеет соединение с Internet (работающее через дополнительную SLIP-связь). Тогда хотелось бы, чтобы пакеты для любой сети, отличной от Brewery, передавались vlager. Это может быть выполнено с помощью установки gateway по умолчанию для vstout:
|
# route add default gw vlager
Сетевое имя default (по умолчанию) связано с адресом 0.0.0.0, что обозначает маршрут, установленный по умолчанию. Вы не должны добавлять это имя к /etc/networks, потому что это построено в route.
Если используя ping, вы обнаружили большой процент потерь пакетов при их проходе через несколько gateway, это может говорить об очень большой нагрузке на сеть. Потеря пакетов в основном происходит не из-за технических проблем, а скорее, благодаря временной избыточной нагрузке на направляющие хосты, которые из-за этого задерживают или даже выбрасывают поступающие пакеты.
Маршрутизация и доставка почты
Маршрутизаторы находят удаленные адреса, определяя, на который компьютер должно быть послано сообщение, и какой транспорт должен использоваться. В связанных Internet компьютерах часто имеется только один маршрутизатор, который ищет домены в DNS. Может иметься один маршрутизатор, который обрабатывает адреса, предназначенные для компьютеров в локальной сети и передавать любые адреса удаленному "умному хосту", например, почтовому серверу провайдера.
Локальные адреса дают редиректорам, которых имеется обычно несколько, обрабатывать совмещение имен и пересылку также как и идентификацию локальных почтовых ящиков. Списки адресатов могут быть обработаны редиректорами пересылки или совмещением имен. Если адрес имеет псевдоним или перенаправление на другой (forward) любые сгенерированные адреса будут обработаны маршрутизаторами или редиректорами независимо по мере необходимости. Более общим случаем будет доставка в почтовоый ящик, но сообщения также могут быть пересланы в команду или добавлены к файлу, отличному от заданного по умолчанию почтового ящика.
Транспорт ответственен за реализацию метода доставки; например, при посылке сообщения через подключение SMTP или при добавлении его к специфическому почтовому ящику. Маршрутизаторы и редиректоры выбирают, какой транспорт использовать для каждого адреса получателя. Если есть транспортные сбои, Exim генерирует сообщение об ошибке или задерживает адрес для более позднего повторения.
С Exim Вы имеете много свободы в конфигурировании этих задач. Для каждой из них доступен ряд драйверов, из которого Вы можете выбирать те, в которых нуждаетесь. Вы описываете их Exim в различных разделах файла конфигурации. Транспорты определяются первыми, за ними редиректоры, а в конце маршрутизаторы. Нет никаких встроенных значений по умолчанию, хотя Exim распространяется с заданным по умолчанию файлом конфигурации, который охватывает простые случаи. Если Вы хотите изменить стратегию маршрутизации или изменить транспорт, самое простое начать с заданной по умолчанию конфигурации и делать изменения.
Маршрутизация почты
Когда дан адрес назначения, Exim сначала проверяет, является ли домен тем, который будет обработан на локальном компьютере, согласовывая адрес со списком в переменной конфигурации local_domains. Если эта опция не установлена, локальное имя используется как единственный локальный домен. Если домен локальный, адрес будет вручен редиректорам. Иначе адрес попадет к маршрутизаторам для выяснения пути, по которому письмо должно проследовать к адресату.
Маршрутизация почты
Когда дан адрес назначения, Exim сначала проверяет, является ли домен тем, который будет обработан на локальном компьютере, согласовывая адрес со списком в переменной конфигурации local_domains. Если эта опция не установлена, локальное имя используется как единственный локальный домен. Если домен локальный, адрес будет вручен редиректорам. Иначе адрес попадет к маршрутизаторам для выяснения пути, по которому письмо должно проследовать к адресату.
Маршрутизация почты в Internet
В Internet от машины адресата зависит полностью, выполняется ли любая специфическая маршрутизация почты вообще. По умолчанию сообщение должно быть передано машине адресата непосредственно, что оставляет фактическую маршрутизацию данных транспортому уровню IP.
Маршрутизация почты в Internet
В Internet от машины адресата зависит полностью, выполняется ли любая специфическая маршрутизация почты вообще. По умолчанию сообщение должно быть передано машине адресата непосредственно, что оставляет фактическую маршрутизацию данных транспортому уровню IP.
Большинство машин будет обычно направлять всю почту доступному серверу почты, который способен обработать все это движение. Чтобы объявить это обслуживание, сервер создает так называемую запись MX для их локальной области в базе данных DNS. MX замещает обменник почты (
Mail Exchanger) и заявляет, что серверная машина желает действовать как механизм продвижения данных почты для всех машин в этой области. MX-записи могут также использоваться, чтобы обработать трафик для машин, которые не соединены с Internet напрямую, подобно UUCP сетям или сетям компаний с машинами, хранящими конфиденциальную информацию.
MX-записи также имеют приоритет (preference), связанный с ними. Это положительное целое число, которое позволяет определить очередность посылки почты. Если для одной машины доступны несколько почтовых серверов, обмен будет производиться через тот, приоритет которого меньше. Сервер с большим приоритетом будет задействован только в случае неудачи. Если машина сама является почтовым сервером, она не будет посылать письма серверам с приоритетом выше, чем у нее. Такой подход позволяет избежать зацикливания передачи почты.
Предположим, что организация Foobar Inc хочет всю свою почту обрабатывать своей машиной mailhub. Они будут иметь примерно такую MX-запись в базе данных DNS:
|
green.foobar.com. IN MX 5 mailhub.foobar.com.
Это объявляет mailhub.foobar.com как обработчик почты для домена green.foobar.com со значением приоритета 5. Машина, которая хочет передать сообщение joe@green.foobar.com, проверит DNS и найдет MX-запись, указывающую на mailhub. Если нет никакого MX с приоритетом меньше, чем 5, сообщение будет передано на mailhub.
Дальнейшую информацию по маршрутизации почты (например, для случаев, когда не работают MX-записи) рекомендую посмотреть в RFC-974.
Маршрутизация почты в UUCP
Маршрутизация почты в UUCP-сетях намного более сложна, чем в Internet, потому что транспортное программное обеспечение не выполняет никакой маршрутизации. В более ранние времена вся почта должна была быть адресована, используя пути bang. Они определяли список машин для передачи сообщения, отделяемые метками восклицания, и с последующим именем пользователя. Чтобы адресовать письмо пользователю Janet на машине moria, Вы использовали бы путь eek!swim!moria!janet. Это послало бы почту с Вашей системы на eek, оттуда на swim и в заключение на moria.
Маршрутизация почты в UUCP
Маршрутизация почты в UUCP-сетях намного более сложна, чем в Internet, потому что транспортное программное обеспечение не выполняет никакой маршрутизации. В более ранние времена вся почта должна была быть адресована, используя пути bang. Они определяли список машин для передачи сообщения, отделяемые метками восклицания, и с последующим именем пользователя. Чтобы адресовать письмо пользователю Janet на машине moria, Вы использовали бы путь eek!swim!moria!janet. Это послало бы почту с Вашей системы на eek, оттуда на swim и в заключение на moria.
Очевидный недостаток этой методики состоит в том, что требуется, чтобы Вы помнили многое о сетевой топологии. Намного хуже то, что изменения в сетевой топологии, подобные удаляемым связям или удаляемым машинам, могут привести к прекращению хождения почты просто потому, что Вы не знали об изменении. И в заключение, в случае, если Вы посылаете письма в различные места, Вы должны модифицировать все эти маршруты.
Первым шагом в идентификации имен машин было основание The UUCP Mapping Project. Он размещен в Rutgers University и регистрирует все официальные UUCP-имена, наряду с информацией относительно их соседей UUCP и их географическего расположения, создавая уверенность, что никакой hostname не используется дважды. Информация, собранная Mapping Project, издана как Usenet Maps, которые распространяются регулярно через Usenet. Типичная запись в карте (при удалении комментариев) походит на это:
|
moria bert(DAILY/2), swim(WEEKLY)
Эта запись говорит, что moria имеет связь с bert, которую она вызывает дважды в день, и со swim, которую она вызывает еженедельно. Мы вернемся к формату файлов карты позже.
Используя информацию связности, обеспеченной картами, Вы можете автоматически генерировать полные пути от Вашей машины до любого пункта адресата. Эта информация обычно сохраняется в файле
paths, также называемом базой данных pathalias. Если карты устанавливают, что Вы можете достигать bert через ernie, то запись pathalias для moria, сгенерированная из отрывка карты выше, выглядит следующим образом:
|
moria ernie!bert!moria!%s
Если Вы теперь дадите адрес janet@moria.uucp Вашему MTA, он выберет маршрут, показанный выше, и пошлет сообщение на ernie с адресом bert!moria!janet.
Формирование файла paths из полных карт Usenet не очень хорошая идея. Информация в них обычно искажается и иногда устаревает. Следовательно, только ряд систем использует полные всемирные карты-UUCP, чтобы формировать свой файл paths. Многие сайты хранят только данные о своем окружении и посылают данные системам с более полными картами сети для дальнейшей передачи. Такая схема называется smart-host routing.
Методы атаки Важно, что Вы, как
Несанкционированный доступ
Это значит, что к Вашим системам подключается тот, кому делать этого не следует. Например, кто-то пытается смонтировать Ваши каталоги NFS.
Имеются различные способы избежать этого нападения. Тщательно определяя, кто может получать доступ через эти услуги, Вы можете предотвращать сетевой доступ кого угодно, за исключением допущенных пользователей.
Эксплуатация известных слабостей в программах
Некоторые программы и сетевые услуги первоначально не были разработаны с сильной защитой. Пример этого: BSD remote services (rlogin, rexec и другие r-сервисы). Термин "эксплойт" появился как раз из этого вида атак.
Самый лучший способ защищать себя против этого типа нападения состоит в том, чтобы отключить любые уязвимые услуги или поискать их поздние версии, в которых такие ошибки часто исправлены.
Denial of service
Так называемые Denial of service attacks (атаки отрицания обслуживания) заставляют сервис или программу перестать работать или не дают другим их использовать. Они могут выполняться в сетевом уровне, посылкой тщательно подготовленных пакетов, которые сервис обработать не сможет. Они могут также выполняться в уровне прикладной программы, где тщательно подготовленные команды должны перегрузить избранный сервис.
Предотвращение подозрительного сетевого трафика и подозрительных команд программ, это самые лучшие пути уменьшения риска таких атак. Полезно знать детали метода нападения, так что Вы должны изучать новые разработки в этой области. Сайты хакерской ориентации весьма популярны среди администраторов сетей именно по этой причине.
Spoofing
Этот тип нападения заставляет компьютер или прикладную программу работать не так, как от него ожидается. Например, во многих защитах используется проверка по IP-адресу. Вражеский компьютер прекрасно может выдать себя за машину с правильным адресом, что позволит пакетам с него проникнуть в Вашу систему. Например, такой тактики придерживается хорошо известный эксплойт для сервиса BSD rlogin.
Защита против этого типа атак проста: надо тщательно отслеживать, откуда на самом деле пришел пакет, и соответствует ли его внутренняя информация тому окружению, которое ему сопутствует.
Eavesdropping
Это самый простой тип нападения. Некий компьютер сконфигурирован так, чтобы "слушать" и собирать данные, не принадлежащие ему. Грамотно написанный шпион может получить имя пользователя и его пароль для входа в систему. Широковещательные сети, например Ethernet, очень подвержены этой атаке, ведь в них все пакеты проходят через все машины в сети, а выбором нужных ей пакетов занимается каждая конкретная машина.
Здесь помогает шифрование трафика.
IP firewall очень полезен в предотвращении или уменьшении несанкционированного доступа, атак отрицания обслуживания и IP spoofing. Он не очень полезен в уходе от эксплуатации слабостей в сетевых сервисах или программах, а также при защите от подслушивания.
Метрические значения
Динамическая маршрутизация, основанная на RIP, выбирает самый лучший маршрут к некоторому хосту или сети, основываясь на наборе hops (переходов), то есть пакетов, рассылаемых перед передачей основной информации. Чем более короткий маршрут, тем лучше RIP его оценивает. Очень длинные маршруты с 16 или больше hops рассматриваются как неподходящие и отвергаются.
Метрические значения
Динамическая маршрутизация, основанная на RIP, выбирает самый лучший маршрут к некоторому хосту или сети, основываясь на наборе hops (переходов), то есть пакетов, рассылаемых перед передачей основной информации. Чем более короткий маршрут, тем лучше RIP его оценивает. Очень длинные маршруты с 16 или больше hops рассматриваются как неподходящие и отвергаются.
Чтобы использовать RIP для управления информацией, маршрутизируемой внутри вашей сети, вы должны запустить gated на всех хостах. Во время загрузки gated проверяет все активные сетевые интерфейсы. Если имеется больше одного активного интерфейса (не считая loopback), он предполагает, что хост передает пакеты между несколькими сетями и будет активно обмениваться маршрутной информацией. Иначе, он будет только пассивно получать RIP-пакеты и модернизировать локальную таблицу маршрутизации.
Получив информацию из локальной таблицы маршрутизации,
gated вычисляет длину маршрута по так называемому метрическому значению (metric value), связанному с записью в таблице. Это метрическое значение задается администратором системы при конфигурировании маршрута и должно отражать фактическую трудоемкость использования этого маршрута. Поэтому размер маршрута к подсети, с которой хост непосредственно связан, должен всегда быть установлен в ноль, в то время как маршрут, проходящий через два шлюза, должен иметь размер два. Обратите внимание на то, что Вы не должны беспокоиться относительно метрического значения, когда не используете RIP или gated.
Mode и default
Эти команды нужны для того, чтобы переключить последовательную линию в SLIP-режим и сконфигурировать интерфейс.
mode и default
Эти команды нужны для того, чтобы переключить последовательную линию в SLIP-режим и сконфигурировать интерфейс.
Команда mode является последней выполняемой dip перед переходом в режим демона. Она ничего не возвращает до появления ошибки.
mode принимает как аргумент имя протокола. dip сейчас распознает SLIP , CSLIP, SLIP6, CSLIP6, PPP и TERM как имена протоколов. Текущая версия dip не понимает adaptive SLIP.
После запуска на последовательной линии режима SLIP dip выполняет ifconfig для настройки интерфейса и вызывает route для установки маршрутизации на удаленную машину.
Если скрипт выполняет команду default перед командой mode, dip создает маршрут по умолчанию для SLIP-связи.