Setevaya_rabota_po_protokolu_TCP_linux (1084628), страница 5
Текст из файла (страница 5)
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'овскими номерами - их всегда в избытке.
Следующую сеть класса C сегментируем маршрутизатором, который отделит подсеть на 16 IP-номеров (14 машин, включая маршрутизатор).
Шлюз:
ifconfig ed3 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.127 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 ed3 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.127
Рабочая станция 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.127
route add default 192.168.5.1
Маршрутизатор router.5:
ifconfig ep0 inet 192.168.5.127 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 ed3 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.127
route add -net 192.168.6.128 -netmask 255.255.255.240 192.168.6.127
Маршрутизатор rt.6.1:
ifconfig ep0 inet 192.168.6.127 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.240 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
pppd 172.17.14.194:172.17.14.193 netmask 255.255.255.252 [...]
route add default 172.17.14.193
Рабочая станция ws.6.2:
ifconfig ep0 inet 192.168.6.137 netmask 255.255.255.240
route add default 192.168.6.129
Подсеть на 16 машин выделена аналогично примеру 4. Я надеюсь, разбиение сети на подсети "круглого" размера, соединенные по ppp, после усвоение прочитанного окажется под силу любому.
Как видите, самая простая конфигурация - у машин в сегменте с единственной IP-сетью и с единственным шлюзом (он же шлюз по умолчанию). Чем больше шлюзов в сегменте сети и чем сложнее их конфигурация, тем сложнее корректно настроить рабочие станции, а настраивать надо каждую. Немного выручает протокол DHCP, но:
-
сервер DHCP должен находиться в том же сегменте локальной сети, что и его клиенты;
-
сервер DHCP должен корректно конфигурировать клиентов, что опять же непросто в сложной сегментированной сети.
Таким образом, я рекомендую выводить все сегменты на один маршрутизатор (если он справляется с нагрузкой) либо пользоваться возможностями, предоставляемыми динамической маршрутизацией.
Примечания:
Прозрачный - Сегмент Internet сам может быть сегментирован на уровне MAC, например, коммутатором. Прозрачность проявляется в том, что маршрутизатор, работающий на уровне IP, не должен заботиться об этом; в частности, IP-маршрутизатор никогда не пропускает broadcast сообщения (в отличие от multicast), но broadcast сообщения должны свободно распространяться по всей локальной сети сети - это нужно, в частности, для протокола ARP.
Последовательным портом в данном случае называется любой порт, выдающий данные побайтно (асинхронный COM, синхронный RS-232, принтерный LPT) в отличие от сетевого интерфейса, выдающего данные пакетами. Отличается от сетевого тем, что с поиощью последовательных интерфейсов можно связывать напрямую ровно два компьютера, а значит, такой способ не нуждается в адресации пакетов на MAC-уровне.
DNS - Domain Name Service, позволяющий узнать IP-номер и некоторую другую информацию о машине по доменному имени, а также доменное имя по IP-номеру. В частности, зона определения имени по номеру может быть делегирована только на сеть класса A, B или C и никак иначе.
System V:
| ||||
| ||||
|
Соответствие между интерфейсом eth0 и парой Port/IRQ записано в /etc/lilo.conf
Gateways
Subnetting - не только организационная деление, но часто и
естественное следствие границ аппаратных средств. Знания хоста о
строении данной физической сети, типа Ethernet, являются очень
ограниченными: Единственные хосты, с которыми они способны говорить
непосредственно, те, что находятся в той же сети. Ко всем другим
хостам они могут обращаться только через так называемый gateways.
Gateway -- хост который связан с двумя или больше физическими сетями
одновременно и конфигурирован так, чтобы перекачивать пакеты между
ними.
IP достаточно легко распознать находится ли хост на местной
физической сети, различные физические сети должны принадлежать
различным IP сетям. Например сетевой номер 149.76.4.0 сохранен для
хостов в локальной сети математиков. При посылке дэйтаграм к quark,
сетевое программное обеспечение на erdos немедленно видит по IP
адресу, 149.76.12.4, что хост места назначения находится в другой
физической сети, и поэтому может быть достигнут только через gateway
(sophus по умолчанию).
Sophus непосредственно связан с двумя отличными подсетями:
отделом математики, и университетской магистралью. Они доступы через
различные интерфейсы (eth0 и fddi0 соответственно). Но какой IP адрес
мы ему назначаем? 149.76.1.0 или 149.76.4.0?
Ответ: оба. При разговоре с сервером в локальной сети
математиков, sophus использует IP адрес 149.76.4.1, а при разговоре с
хостом на магистраль, он должен использовать 149.76.1.4.
Таким образом, gateway получает по одному IP адресу на каждую
сеть, к которой он подключен. Эти адреса (вместе с netmask) привязаны
к интерфейсу через, который обращаются подсети. Таким образом,
интерфейсы и адреса sophus связаны так:
----------------------------------------
+-------+-------------+----------------+
| Интерфейс| адрес | Netmask |
+-------+-------------+----------------+
+-------+-------------+----------------+
| Eth0 | 149.76.4.1 | 255.255.255.0 |
| fddi0 | 149.76.1.4 | 255.255.255.0 |
| Lo | 127.0.0.1 | 255.0.0.0 |
+-------+-------------+----------------+
+-------+-------------+----------------+
Последняя запись описывает loopback интерфейс lo.
На картинке 3.4.3 изображена топология части сети Groucho Marx Университета
(GMU). Хосты, находящиеся в двух подсетях в то же самое время показываются с
обоими адресами.
Вообще, Вы можете не обращать внимание на различия между адресами
хоста и интерфейса. Относитесь к адресу хоста, который находятся
только в одной сети, как к адресу того и другого, хотя строго говоря
это Ethernet интерфейс имеет IP адрес. Однако, это различие ощутимо
только, когда Вы работаете с gateway.
Таблица маршрутизации
Теперь сосредоточим наше внимание на том, как IP выбирает gateway
при доставке дэйтаграм к определенной сети.
Как мы видели раньше erdos, когда передавал дэйтаграмы для quark,
проверил место назначения и нашел, что его нет в местной сети. Поэтому
он посылает ее gateway, sophus, который теперь сталкивается с той же
самой задачей. Sophus определяет, что quark не находится в сетях, с
которыми он непосредственно связан, так что он передает эту дэйтаграм
другому gateway, чтобы он перенаправил ее дальше. Правильный выбор был
бы niels (gateway Отдела Физики). Но sophus нуждается в некоторой
информации чтобы определить подходящий gateway.
Для этого используется таблица IP маршрутизации, которая
определяет какие сети присоединены с помощью каких gateways.
Обязательно должен быть указан маршрут по умолчанию (the default
route), по которому будут направляться все пакеты с адресами в
неизвестных сетях. Этот gateway связан с сетью 0.0.0.0.. На sophus,