(пособие для начинающего администратора)
Сеть Internet с ее протоколами изначально задумывалась как протяженная (WAN - Wide Area Network), состоящая из большого количества машин, соединенных с помощью разных сред обмена данными (как локальных сетей, так и "дальнобойных" соединений). Теоретически в Internet могут напрямую работать друг с другом около четырех миллиардов машин (2^32 за вычетом некоторых специальных номеров), а через Proxy-серверы и того больше.
В силу этих причин Internet - сегментированная сеть. Сегментом является либо прозрачный участок широковещательной (Ethernet) или маркерной (Arcnet, TokenRing) сетИ, либо соединение точка-точка (модемное).
Пара слов о терминах, употребленных в заголовке. Начну с конца.
- "Маршрутизация" - это технология, позволяющая доставить информацию в пункт назначения, передавая ее от одного маршрутизатора до другого. В этой статье, собственно, на примерах описывается, как настроить IP-маршрутизаторы для того, чтобы они правильно передавали друг другу пакеты.
- "IP" - кроме IP маршрутизируемыми протоколами являются IPX и DecNet, но в них я практически не разбираюсь.
- "Статическая" - кроме нее бывает динамическая маршрутизация, когда таблицы маршрутизации составляются/задаются не администратором-человеком, а программами, обменивающимися информацией о состоянии каналов свЯзи и о доступности сетей. Впрочем, таблицы, составленные этими программами, ничем принципиально не отличаются от статических таблиц...
Теперь - обозначения.
- IP-номер - четырехбайтное число, записываемое либо в шестнадцатеричном виде типа 0xC0A80E05, либо в десятичном виде, где байты разделены точками типа 192.168.14.5 (в качестве примера в обоих случаях использовался один и тот же номер).
- Маска - тоже четырехбайтное число, но все старшие биты, начиная с некоторого, всегда установлены в единицу, а все младшие - в ноль. Примеры: 255.255.255.0 - маска сетИ класса C на 256 номеров; 255.255.255.192 - маска маленькой сетИ на 64 номера (192=256-64). Если мне надо указать сочетание номера и маски, я буду использовать запись номер/число_установленных_битов_в_маске - так сочетание номера 192.168.14.5 и маски 255.255.255.0 будет записано в виде 192.168.14.5/24.
- Номером сетИ называют число, получаемое из номера интерфейса применением побитовой операции AND с маской, т.е. в номере интерфейса обнуляются биты на тех местах, на которых стоят нулевые биты в маске.
Следует помнить, что IP-номер присваивается не компьютеру, а интерфейсу (сетевому выходу либо последовательному порту). В принципе, можно дать нескольким интерфейсам один номер, но это может вызвать сложности. Можно также присвоить несколько адресов одному интерфейсу.
В сегменте сетИ все машины имеют IP-номера с одинаковым номером сетИ и одинаковой маской. В одной локальной сетИ можно совместить две и больше разных IP-сетей, они даже могут знать друг о друге и нормально общаться, но это все-таки будут две разные сЕти.
Принято следующее деление в зависимости от значения старшего байта IP-адреса:
- 0..127 - сЕти класса A по 2^24 адресов с маской 0xFF000000;
- 128..191 - сЕти класса B по 2^16 адресов с маской 0xFFFF0000;
- 192..223 - сЕти класса C по 2^8 адресов с маской 0xFFFFFF00;
- 224..239 - сЕти класса D для multicast (групповой) рассылки;
остальные пока зарезервированы.
Многие программы по адресу автоматически определяют класс сетИ, хотя это можно поправить вручную. В принципе никто не мешает разбить сеть на две или больше подсетей с любыми масками, но организациям, как правило, выделяют адреса блоками, соответствующими классам A, B и C - это связано с системой DNS, позволяющей узнать доменное имя машины по ее IP-адресу.
Сеть класса A с номером 127 - loopback, т.е. предназначена для общения компьютера с собой. В любой сетИ номер (IP-номер AND маска) является номером всей сетИ и не может быть присвоен никому конкретно. Номер (IP-номер OR NOT маска), являющийся последним номером в сетИ, предназначен для broadcasting (широковещательных) сообщений, которые доставляются всем машинам сегмента сетИ. Соответственно, при выделении группы адресов в сеть два адреса становятся недоступны.
Рассмотрим маршрутизацию в терминах FreeBSD (будет также дан перевод в нотацию System'V (Linux, SCO) и MS-Windows'3.x/9x/NT). В Unix команды настройки сетевых интерфейсов, как правило, запускаются из файла /etc/rc или запускаемых из него файлах, а в MS-Windows - загрузчиком операционной системы в соответствие с system.ini или registry.
Главному шлюзу в сетИ я всегда присваиваю первый (наименьший) номер в сетИ (нулевой, как я уже говорил, недоступен). Если в сетИ присутствует второй шлюз, через который подсоединен другой сегмент, то этому шлюзу (промежуточному маршрутизатору) будет присваиваться последний (наибольший) номер в сетИ. Для этого нет никаких разумных причин - так мне хочется.
Построим первый сегмент сетИ:
Сконфигурируем рабочую станцию:
ifconfig ep0 inet 192.168.1.5 netmask 255.255.255.0
ifconfig lo0 inet 127.0.0.1 netmask 255.0.0.0
route add default 192.168.1.1
На самом деле в современных (начиная с 2.1.*) версиях FreeBSD это оформляется немного совсем :-) по другому.
Рассмотрим внимательнее, что делают эти команды: <
ifconfig ep0 inet 192.168.1.5 netmask 255.255.255.0
присвоила интерфейсу ep0 номер 192.168.1.5, а также создала в таблице маршрутизации запись о том, что все пакеты с номером сетИ 192.168.1.0/24 будут направляться прямо через этот интерфейс с использованием протокола ARP.
ifconfig lo0 localhost
конфигурирует интерфейс loopback, т.е. "петлю". Этот интерфейс должен иметь адрес 127.0.0.1 и маску 255.0.0.0 на любой машине, имеющей IP, поэтому некоторые системы (например, MS-Windows) делают это автоматически, не требуя от администратора (или пользователя, если он сам настраивает систему) задавать параметры loopback. Так как этот интерфейс настраивается на каждой машине одинаково, я не буду писать эту строчку каждый раз. localhost определяется по файлу /etc/hosts, в котором содержится
127.0.0.1 localhost.домен localhost
а маска берется по умолчанию - 255.0.0.0.
route add default 192.168.1.1
замечу, что маршрутизация "default" на самом деле есть "inet 0x0 netmask 0x0" и это надо прописывать, если старая версия команды route не понимает слова "default". Эта команда создала запись, в соответствии с которой все пакеты (все, потому что любой адрес подходит под 0.0.0.0/0) будут отправляться на машину, имеющую интерфейс 192.168.1.1. Информация о том, как можно добраться до интерфейса 192.168.1.1 содержится в предыдущей команде, которая определила способ доступа ко всем машинам 192.168.1.* через интерфейс ep0.
Таким образом, у нас сложилась примерно такая ситуация:
Вообще система маршрутизации (за исключением предельно вырожденных случаев) древовидна, т.е. одни записи включают в себя другие. Частичное пересечение невозможно, ибо границы адресного пространства, на которое действует каждая запись, выровнены на размер этого пространства. Порядок хранения и просмотра таблицы может быть разный, но должен обеспечивать приоритет записей с маленьким пространством перед записями с большим пространством. В данном случае обращение к машине 192.168.1.9 попадает под юрисдикцию обеих записей, но обращаться к ней наша рабочая станция будет в соответствии с 192.168.1.0/24->ep0.
Собственно, так ненавязчиво мы познакомились с тремя видами IP-маршрутизации:
- "На себя" - все IP-пакеты с адресом назначения, совпадающим с одним из IP-адресов машины, передаются выше по стеку TCP/IP-протоколов и в конечном счете информация, передаваемая в них, достигает приложений, выполняющихся на данной машине, что и является конечной целью работы IP-сетИ.
- "В локальную сеть" - при отправке пакета он упаковывается в пакет локальной сети (в Ethernet это называется "кадр", в ATM - "ячейка") и отсылается нужной станции. Для того, чтобы узнать, какой MAC-адрес соответствует данному IP-адресу, используется ARP.
- "Следующему марщрутизатору". В простейших случаях в сети стоит единственный шлюз наружу, через который передается все, кроме предназначенного в локальную сеть; рабочие станции (и серверы) в сетИ не интересуются устройством сетИ вне локальной и предоставляют этому шлюзу самому решить, куда отправить тот или иной IP-пакет. В большинстве случаев шлюз из локальной сети наружу тоже имеет единственный шлюз "еще более наружу", с которым связан либо выделенным каналом (физическим модемным или виртуальным в сети X.25 или FrameRelay) либо, реже, локальной сетью.
Интерфейс шлюза надо сконфигурировать так:
ifconfig ed1 inet 192.168.1.1 netmask 255.255.255.0
На самом деле у нашего шлюза много интерфейсов, и они будут конфигурироваться по мере надобности. Еще раз обращаю внимание на то, что номер и маска сетИ совпадают для всех машин этого сегмента.
Второй сегмент содержит в себе машину, к которой по последовательной линии с помощью протокола SLIP подсоединен еще один компьютер.
Сконфигурируем ws.2.1:
slattach -S 0 [...]
ifconfig sl0 192.168.2.81 192.168.2.82 up
ifconfig ep0 inet 192.168.2.7 netmask 255.255.255.0
route add default 192.168.2.1
Сконфигурируем ws.2.2:
slattach -S 0 [...]
ifconfig sl0 192.168.2.82 192.168.2.81 up
route add default 192.168.2.81
Сконфигурируем шлюз:
ifconfig ed2 inet 192.168.2.1 netmask 255.255.255.0
route add host 192.168.2.81 192.168.2.7
route add host 192.168.2.82 192.168.2.7
Третий сегмент будет сочетать в одном сегменте локальной сетИ две IP-сетИ - сеть класса C 192.168.2.*/24 и сеть класса B 172.16.*.*/16.
Начнем с шлюза. Ему присвоим два адреса, по одному из каждой сетИ:
ifconfig ed3 inet 192.168.3.1 netmask 255.255.255.0
ifconfig ed3 inet 172.16.0.1 netmask 255.255.0.0 alias
Теперь ws.3.1 - ей дадим адрес только из первой сетИ:
ifconfig ep0 inet 192.168.3.7 netmask 255.255.255.0
route add default 192.168.3.1
В такой конфигурации ws.3.1 отлично сможет общаться с машинами из сетИ 192.168.3.0/24 и с машинами вне сегмента локальной сетИ. При попытке же обратиться к машине того же сегмента, но другой IP-сетИ, пакет будет послан на шлюз. Шлюз знает, что пакеты с этим адресом надо послать в ту локальную сеть; но некоторые операционные системы работают по алгоритму маршрутизации, в котором запрещено посылать пакет туда, откуда он пришел - это делается для того, чтобы избежать зацикливания пакетов.
Во избежание этого ws.3.2 мы настроим с учетом того, что в локальной сетИ работают машины с адресами из другой IP-сетИ:
ifconfig ep0 inet 172.16.8.14 netmask 255.255.0.0
route add -net 192.168.3.0 -netmask 255.255.255.0 172.16.8.14
route add default 172.16.0.1
Здесь мы присвоили интерфейсу номер из сетИ 172.16.*.*, а затем обьявили, что пакеты для сетИ 192.168.3.* надо отправлять в ту же локальную сеть.
Маршрутизация по умолчанию могла быть направлена и на адрес 192.168.3.1, но приведенная конструкция проще в том смысле, что обе маршрутизации опираются на интерфейс и не зависят друг от друга. Я не знаю, различаются ли эти варианты по эффективности, а если различаются, то насколько; но чем меньше зависимостей в конфигурации, тем проще ее настраивать и диагностировать при сбоях.
И наконец, любой машине можно присвоить два адреса - по одному из каждой IP-сетИ. Как правило, это делается в случае, когда часть машин имеет IP-адреса, выделенные провайдером, а остальные работают с Intranet'овскими номерами (для внутрикорпоративного использования ОргКомитет Internet выделил: одну сеть класса A с номерами 10.*.*.*, 16 сетей класа B с номерами 172.[16..31].*.*, 256 сетей класа C с номерами 192.168.*.* ) - их всегда в избытке.
Следующую сеть класса C сегментируем маршрутизатором, который отделит подсеть на 16 IP-номеров (14 машин, включая маршрутизатор).
Шлюз:
ifconfig ed4 inet 192.168.4.1 netmask 255.255.255.0
route add -net 192.168.4.128 -netmask 255.255.255.240 192.168.4.254
Рабочая станция ws.4.1:
ifconfig ep0 inet 192.168.4.7 netmask 255.255.255.0
route add default 192.168.4.1
Я не указал маршрутизацию
route add -net 192.168.4.128 -netmask 255.255.255.240 192.168.4.254
Ее можно не указывать и для маршрутизатора. Но! Если какая-нибудь из машин сегмента 192.168.4.128/28, например, 192.168.4.137, обратится к машине из основного (примыкающего к шлюзу) сегмента (в том числе к шлюзу), то протокол ARP зафиксирует приход пакета с сетевой карты, маршрутизатора, выходящей в основной сегмент (IP-номер 192.168.4.127) и далее будет посылать пакеты на эту сетевую карту, и это будет правильно.
Отдельную проблему представляет обращение машины из основного сегмента в 192.168.4.128/28. В отсутствие у ARP сведений об этом номере будет разослан широковещательный запрос и тут все зависит от сообразительности промежуточного маршрутизатора router.4 - если он догадается, что пакет предназначен в подсеть и протранслирует его туда, то ответ приведет к появлению записи в таблицах ARP, не догадается - придется прописывать маршрутизацию.
Маршрутизатор router.4:
ifconfig ep0 inet 192.168.4.254 netmask 255.255.255.0
ifconfig ep1 inet 192.168.4.129 netmask 255.255.255.240
route add default 192.168.4.1
Рабочая станция ws.4.2:
ifconfig ep0 inet 192.168.4.137 netmask 255.255.255.240
route add default 192.168.4.129
А эту сеть (тоже класса C) сегментируем маршрутизатором, который разобьет сеть на две равные части.
Шлюз:
ifconfig ed5 inet 192.168.5.1 netmask 255.255.255.128
route add -net 192.168.5.128 -netmask 255.255.255.128 192.168.5.126
Рабочая станция ws.5.1:
ifconfig ep0 inet 192.168.5.7 netmask 255.255.255.128
route add -net 192.168.5.128 -netmask 255.255.255.128 192.168.5.126
route add default 192.168.5.1
Маршрутизатор router.5:
ifconfig ep0 inet 192.168.5.126 netmask 255.255.255.128
ifconfig ep1 inet 192.168.5.129 netmask 255.255.255.128
route add default 192.168.5.1
Рабочая станция ws.5.2:
ifconfig ep0 inet 192.168.5.137 netmask 255.255.255.128
route add default 192.168.5.129
Разница с предыдущим случаем в том, что сеть разделена на сегменты, содержащие только "круглое" число IP-номеров (два в целой степени). Это особый случай, когда логичнее оформить каждую сеть отдельно.
Теперь сделаем две сетИ, соединенные с основной подсетью последовательной линией по протоколу PPP.
Шлюз:
ifconfig ed6 inet 192.168.6.1 netmask 255.255.255.0
route add -net 172.17.14.192 -netmask 255.255.255.252 192.168.6.7
route add -net 192.168.6.128 -netmask 255.255.255.224 192.168.6.7
Маршрутизатор rt.6.1:
ifconfig ep0 inet 192.168.6.7 netmask 255.255.255.128
pppd 172.17.14.193:172.17.14.194 netmask 255.255.255.252 [...]
route add -net 192.168.6.128 -netmask 255.255.255.224 172.17.14.194
route add default 192.168.6.1
pppd требует при запуске указать интерфейс, через который происходит соединение, и его параметры, но это не относится к теме и обозначено "[...]".
Маршрутизатор rt.6.2:
ifconfig ep0 inet 192.168.6.129 netmask 255.255.255.240
ifconfig ep1 inet 192.168.6.129 netmask 255.255.255.240
pppd 172.17.14.194:172.17.14.193 netmask 255.255.255.252 [...]
route add default 172.17.14.193
Рабочие станции ws.6.2.1 и ws.6.2.2 конфигурируются так же примитивно, как в сАмом первом рассмотренном сегменте, так что нет смысла их рассматривать. Но самое интересное здесь то, что никто, кроме подсоединенных к сегментам ws.6.2.1 и ws.6.2.2 машин (т.е. никто, кроме имеющих номера из диапазона 192.168.6.128/224), не знает, что это - две разные сетИ! Именно в этом проявляется вся мощь IP-маршрутизации - после того, как кому-то поручили маршрутизировать некоторый диапазон адресов, он имеет право распределять эти адреса между сегментами, причем никто вне этих сегментов не будет нуждаться в информации об этом распределении. Таким образом здесь наглядно проявляется масштабируемость IP-сетИ и ее способность к распределенному администрированию, а также возможность организовать эффективную работу в условиях сильной сегментированности. Вообще-то мы уже не раз сталкивались с этим явлением - каждый раз, когда использовалось `route add default [...]`, было понятно, что нас не интересуют подробности устройства внешнего мира, скрытого за обозначением "0.0.0.0/0"; просто здесь подчеркивается тот факт, что сокрытие структуры может производиться не только вверх по иерархии сетИ, но и вниз.
Как видите, самая простая конфигурация - у машин в сегменте с единственной IP-сетью и с единственным шлюзом (он же шлюз по умолчанию). Чем больше шлюзов в сегменте сетИ и чем сложнее их конфигурация, тем сложнее корректно настроить рабочие станции, а настраивать надо каждую. Немного выручает протокол DHCP, но:
- сервер DHCP должен находиться в том же сегменте локальной сетИ, что и его клиенты;
- сервер DHCP должен корректно конфигурировать клиентов, что опять же непросто в сложной сегментированной сетИ.
Таким образом, я рекомендую выводить все сегменты на один маршрутизатор (если он справляется с нагрузкой) либо пользоваться возможностями, предоставляемыми динамической маршрутизацией.
В дополнение я хотел бы рассмотреть взаимодействие Internet и Intranet в случае, когда имея один выделенный провайдером IP-номер, клиент подключает всю сеть через Proxy-сервер; причем его сеть вдобавок сама сегментирована маршрутизатором.
Я не просто так отделил чертой ppp0: от ep0: - форвардинг на proxy запрещен, ибо извне (от провайдера) никому, кроме 172.16.3.19/30 пакетов не придет, а значит, машины из нашей сети не должны посылать пакеты наружу в связи с полной бесполезностью этого дела.
Раб.станции в сегментах ws.1 и ws.2 конфигурируются без проблем, это уже не раз рассматривалось: номер/маска и default->router. Раб.станции в сегменте ws.0, как это ни покажется странным некоторым читателям, конфигурируются точно также: proxy - не маршрутизатор, для ws.0 есть единственный маршрутизатор, значит, он и будет default.
Конфигурируем router:
ifconfig ep0 inet 192.168.0.1 netmask 255.255.255.0
ifconfig ep1 inet 192.168.1.1 netmask 255.255.255.0
и так далее (обратите внимание на подчеркнутые цифры)
А вот `route add default [...]` у него нет и не должно быть - маршрутизатор в сети единственный, никому доверить маршрутизацию неизвестных ему номеров он не может.
Конфигурация proxy:
ifconfig ep0 inet 192.168.0.254 netmask 255.255.255.0
pppd 172.16.3.18:172.16.3.17 netmask 255.255.255.252 [...]
route add default 172.16.3.17
route add 192.168.0.0 netmask 255.255.0.0 192.168.0.1
Интерфейсы конфигурируются просто, мы это уже проходили. Очевидно, что default должен указывать на провайдера, который для нас представляет весь гигантский Internet. Но в этом случае пакеты, предназначенные для машин из других сегментов нашей локальной сетИ, будут отправлены провайдеру, что не есть хорошо. И тогда мы добавляем еще одну строку, которая указывает, что все Intranet'овские адреса, кроме находящихся в сегменте ws.0, доступны через маршрутизатор.
Вместо того, чтобы прописывать маршрутизацию, можно выставить на ep0 маску 255.255.0.0, расчитывая на ARP-proxy router'а. Если router не имеет ARP-proxy, это будет нормально работать при обращении машин в Internet (все такие обращения делаются по их инициативе), но будут проблемы при обращении proxy как раб.станции к серверу из другого сегмента нашей сети (например, за доступом к файлам или принтерам).
Поиск неисправностей
Допустим, Вы настроили IP-маршрутизацию, но связь между машинами не устанавливается. Причина может быть в неправильной настройке как IP-маршрутизации, так и приложений. Проверим доступность машины по IP:
ping машина
В зависимости от операционной системы эта программа работает по разному - в Unix она выдает сообщение о приходе отклика как только он пришел, а в MS-Windows ждет заданное время (по умолчанию - одна секунда), и если в течении этого времени ответ не пришел, то сообщает "Request timed out." и посылает следующий, а запоздавший ответ игнорирует. Чтобы увеличить время ожидания, используйте
ping машина -w время
(время задается в тысячных долях секунды).
Еще одно отличие: в Unix по умолчанию ping работает пока его не прервут, а в MS-Windows делает четыре запроса и прекращает работу. Короче говоря - читайте документацию!
Если ping работает, то проблема в настройке приложений. Если сообщает "Destignation host unrecable", то ответивший хост не знает, куда передать запрос; =>, проблема в настройке IP-маршрутизации на нем. (Не все версии ping выдают такое сообщение.)
Хочу обратить Ваше внимание на то, что для доступности машины IP-пакеты должны правильно проходить как туда, так и обратно; отсутствие отклика может говорить о неправильной маршрутизации как в ту, так и в другую сторону.
Если ping не прояснил ситуацию, используйте программу traceroute (в NS-Windows - tracert). Принцип ее работы в том, что сначала посылается IP-пакет с временем жизни "1", потом "2" и так далее; каждый роутер уменьшает это число на единицу, а по достижении нуля уничтожает пакет и сообщает отправителю об истечении времени жизни пакета - таким образом, мы получаем список роутеров на пути от нас до хоста назначения (у роутеров обычно по несколько IP-номеров; отвечает интерфейс, обращенный в сторону того, кому отвечают). Если же вместо ответа мы получаем звездочки - значит, очередной роутер не отвечает: недоступен из-за обрыва или сильной загрузки сетИ либо выключен или неправильно настроен.
При ошибке в настройке маршрутизации "туда" хост с ошибкой будет последним доступным, а при ошибке в маршрутизации "обратно" - первым недоступным в цепочке роутеров от нас до хоста назначения. Либо traceroute выявит хост, которого не должно быть в этой цепочке.
Если DNS-сервер недоступен, traceroute будет тратить много времени, дожидаясь ответа от него, чтобы сообщеить доменное имя ответившего хоста; ключ "-d" отменяет обращение к DNS. Tracert в MS-Windows в любом случае будет определять доменное имя по IP-адресу.
Примечания:
Прозрачный - Сегмент Internet сам может быть сегментирован на уровне MAC, например, коммутатором. Прозрачность проявляется в том, что маршрутизатор, работающий на уровне IP, не должен заботиться об этом; в частности, IP-маршрутизация не предусматривает прохождения broadcast-сообщения (в отличие от multicast), но broadcast сообщения должны свободно распространяться по всей локальной сетИ - это нужно, в частности, для протокола ARP.
Последовательным портом в данном случае называется любой порт, выдающий данные побайтно (асинхронный COM, синхронный RS-232, принтерный LPT) в отличие от сетевого интерфейса, выдающего данные пакетами. Отличается от сетевого тем, что с помощью последовательных интерфейсов можно связывать напрямую ровно два компьютера, а значит, такой способ не нуждается в адресации пакетов на MAC-уровне.
DNS - Domain Name Service, позволяющий узнать IP-номер и некоторую другую информацию о машине по доменному имени, а также доменное имя по IP-номеру. В частности, зона определения имени по номеру может быть делегирована только на сеть класса A, B или C и никак иначе. :-( Подробнее о DNS:
Перевод в нотацию System V (Linux, SCO)
и Windows 3.x/9x/NT
BSD: | ifconfig ep0 inet адрес netmask маска |
Linux: | ifconfig eth0 inet адрес netmask маска |
Windows'3.x/9x/NT | прописывается в "Свойствах TCP/IP" данного интерфейса |
|
BSD: | ifconfig интерфейс inet адрес netmask маска alias |
Linux: | ifconfig eth0:1 inet адрес netmask маска |
Windows'3.11 | прописывается в "Дополнительных свойствах" |
|
Windows'9x/NT4 | ставится еще один протокол на тот же интерфейс и прописывается в его "Свойствах" |
|
BSD, Linux: | route add default шлюз |
Windows'3.x/9x/NT | прописывается в "Свойствах TCP/IP" данного интерфейса |
|
BSD: | route add -net номер -netmask маска шлюз |
Linux: | route add -net номер netmask маска шлюз |
Windows'3.x/9x/NT | вводится с командной строки route add номер MASK маска шлюз
|
|
Соответствие в Linux между интерфейсом eth0 и парой Port/IRQ записано в /etc/lilo.conf; после изменения надо запустить lilo.
Эти команды реально выполняются, однако, как правило, они задаются иначе. В файле /etc/sysconfig пишется
network_interfaces="ep0 lo0"
ifconfig_ep0="inet 192.168.1.5 netmask 255.255.255.0"
ifconfig_lo0="inet localhost"
Эти строки обрабатываются файлом /etc/netstart
# Set up all the network interfaces, calling startup scripts if needed
for ifn in ${network_interfaces}; do
eval ifconfig_args=\$ifconfig_${ifn}
ifconfig ${ifn} ${ifconfig_args}
ifconfig ${ifn}
done
if [ -n "$defaultrouter" -a "x$defaultrouter" != "xNO" ] ; then
static_routes="default ${static_routes}"
route_default="default ${defaultrouter}"
fi
# Set up any static routes. This should be done before router discovery.
if [ "x${static_routes}" != "x" ]; then
for i in ${static_routes}; do
eval route_args=\$route_${i}
route add ${route_args}
done
fi
а localhost определяется по файлу /etc/hosts, в котором содержится
127.0.0.1 localhost.домен localhost
и некоторые другие адреса/имена, которые машина должна знать даже в случае недоступности DNS-сервера; как минимум, там кроме loopback содержатся адреса остальных интерфейсов данной машины, ассоциированные с ее доменным именем в полной и короткой форме.
Протокол ARP используется в локальных сетях, имеющих свою собственную нумерацию (Ethernet, TokenRing, X.25) и нужен для того, чтобы не прописывать вручную соответствие IP-адресов номерам сетевых адаптеров. После старта системы таблицы ARP пусты; если приходит IP-пакет от какой-либо станции, фиксируется соответствие ее IP-номера номеру ее сетевой карты. Если надо послать пакет по IP-номеру, для которого неизвестен номер сетевой карты, посылается широковещательное (в понимании локальной сетИ) сообщение.
Зацикливание пакета в некоторых алгоритмах рассматривается как результат неправильной маршрутизации. Каждый пакет имеет конечное время жизни, задаваемое отправителем и не превышающее 255 секунд, причем каждый маршрутизатор, через который проходил пакет, уменьшает это число как минимум на единицу, а значит пакет не может бесконечно метаться между маршрутизаторами - он умрет и о его смерти известят отправителя отдельным пакетом (на этом основана работа traceroute). Тем не менее некоторые маршрутизаторы во избежание засорения полосы пропускания сами убивают пакеты, которые, судя по их таблицам маршрутизации, следует отправлять через тот интерфейс, через который они пришли.
Протокол DHCP (Dynamic Host Configure Protocol) является подмножеством протокола BootP, который по запросу машины выдает ей IP-адрес, маску, номер DNS-сервера и т.д. вплоть до загружаемой через сеть операционной системы. Как правило, DHCP применяется в случае, когда запрашивающая машина не знает ни своего адреса, ни адреса DHCP-сервера; в этом случае она находит сервер, посылая широковещательный запрос, а значит, они должны быть в одном сегменте локальной сетИ.
См.также "IP-роутинг на W'95/98".
|