Занятие 15.
Тема: Сетевое администрирование Linux. Протокол IP.
Вид занятия: лекция, практическое занятие.
Учебные вопросы:
1. Структура пакета IP. Структура IP-адреса. Подсети.
2. ifconfig и настройка протокола IP.
3. Маршрутизация. Автономные области. М9. Команда route.
Время: 90 минут
Литература:
2. Кирх. О, Доусон Т. - Linux для профессионалов. Руководство администратора сети, второе издание. - СПб.: Питер, 2001. - 496 с.; ил.
Ход занятия.
1. IP (Internet Protocol) - протокол сетевого уровня, который содержит информацию об адресации и некоторую управляющую информацию для маршрутизации пакетов. Протокол описан в запросе на комментарий 791 (RFC 791).
<------------------------------------------ 32 бита ----------------------------------------------------> |
|||||
Версия |
IHL |
Тип службы IHL |
Общая длина |
||
Идентификация |
Флаги |
Смещение флагов |
|||
Время жизни |
Протокол |
Контрольная сумма заголовка |
|||
Адрес источника |
|||||
Адрес приемника |
|||||
Свойства |
|||||
Данные (переменной длины) |
Версия - Версия используемого протокола IP
IHL (IP header length) -длина IP-заголовка. Длина заголовка в 32-разрядных блоках
Тип службы - определяет управление протоколом верхнего уровня (TCP или UDP) и присваивает важность пакету.
Общая длина - Длина всего ip-пакета в байтах, включая данные и заголовок.
Идентификация - целое уникальное число, определяющее пакет. Используется при сборке фрагментированных пакетов.
Флаги - Состоит из 3-х бит. Первый бит определяет, может ли пакет быть фрагментирован, а второй - является ли пакет последним в серии фрагментированных. Третий бит не используется.
Смещение фрагмента - содержит значение позиции данных фрагмента относительно начала данных. Используется только в фрагментированных пакетах.
Время жизни - Счетчик, который постепенно уменьшается до нуля, после чего пакет уничтожается во избежание бесконечной передачи по сети.
Протокол - Протокол верхнего уровня (TCP или UDP)
Контрольная сумма заголовка - Помогает убедиться в целостности пакета.
Адрес источника - определяет узел-отправитель
Адрес приемника - определяет узел-получатель
Свойства - Позволяет IP определять различные свойства, например безопасность
Данные - Информация верхнего уровня.
Протокол IP как протокол сетевого уровня неразрывно связан с понятием адресации. Адрес IP - это 32-разрядный адрес, который содержит 4 группы по одному байту, обычно записываемы в 10-тичном виде через точку. Каждая группа называется октетом. Минимальное значение октета - 0, максимальное - 255.
Протокол IP определяет также понятие подсети. Это группа ip-адресов, имеющая общую маршрутизацию.
Подсети определяются масками. Маска - это часть сетевого адреса, определяющая какие биты адреса относятся к сети, а какие - к хосту. Биты маски, установленные в 1 определяют сеть, а в 0 - хост.
Наример:
192.168.2.31/255.255.255.0
Маска подсети 255.255.255.0 в двоичном виде будет выглядеть:
1111111 1111111 1111111 00000000
Отсюда можно сделать вывод, что для того чтобы найти адрес 192.168.2.31 нужно найти сеть 192.168.2.0, а в ней хост 31.
IP-адреса делятся на пять классов - A, B, C, D и E. Для коммерческого использования предназначены только первые 3.
Класс |
Маска |
Количество битов, сеть/хост |
Максимально количество хостов |
A |
255.0.0.0 |
8 бит на сеть/24 бита на хост |
16777214 (224-2)* |
B |
255.255.0.0 |
16 бит на сеть/16 бит на хост |
65534 (216-2) |
C |
255.255.255.0 |
24 бит на сеть/8 бит на хост |
254 (28-2) |
* - один адрес зарезервирован как широковещательный, и один - для сети.
Существуют также специально выделенные диапазоны сетей для использования в локальных сетях. Это так называемые фэйковые сети (от англ. fake - обманывать, также их называют приватными, серыми адресами). Эти сети не маршрутизируются в сети интернет. Выделены диапазоны для 3 классов сетей:
Класс |
Диапазон |
A |
10.0.0.0 - 10.255.255.255 (255 сетей класса А) |
B |
172.16.0.0 - 172.31.255.255 (31 сеть класса B) |
C |
192.168.0.0 - 192.168.255.255 (255 сетей класса С) |
2. Настройка протокола IP в Linux может выполняться как с помощью встроенных средств, таких как netconf от RedHat, так и вручную.
Для отображения параметров протокола IP используется команда /sbin/ifconfig. С помощью этой же команды можно настроить устройство или добавить второй ip для карты:
/sbin/ifconfig eth0 192.168.2.31 netmask 255.255.255.0
bash-2.05b# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:C0:26:2C:AC:D1
inet addr:192.168.2.31 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:147329 errors:0 dropped:0 overruns:0 frame:0
TX packets:47207 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:96478376 (92.0 Mb) TX bytes:8043931 (7.6 Mb)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10514 errors:0 dropped:0 overruns:0 frame:0
TX packets:10514 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:9712961 (9.2 Mb) TX bytes:9712961 (9.2 Mb)
bash-2.05b# /sbin/ifconfig eth0 add 192.168.2.253 netmask 255.255.255.0
bash-2.05b# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:C0:26:2C:AC:D1
inet addr:192.168.2.31 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:148126 errors:0 dropped:0 overruns:0 frame:0
TX packets:47781 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:96843116 (92.3 Mb) TX bytes:8103494 (7.7 Mb)
eth0:0 Link encap:Ethernet HWaddr 00:C0:26:2C:AC:D1
inet addr:192.168.2.253 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:148126 errors:0 dropped:0 overruns:0 frame:0
TX packets:47781 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:96843116 (92.3 Mb) TX bytes:8103494 (7.7 Mb)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10514 errors:0 dropped:0 overruns:0 frame:0
TX packets:10514 errors:0 dropped:0 overruns:0 carrier:0
collisions:0
RX bytes:9712961 (9.2 Mb) TX bytes:9712961 (9.2 Mb)
Однако в RehHat-системах принято настраивать протокол IP с помощью системы стартовых скриптов на основе файлов настроек:
/etc/sysconfig/network - основной конфигурационный файл сети. В нем описан сам факт использования сети, имя хоста, маршрут по умолчанию и адреса ДНС:
bash-2.05b# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=WebMedia
GATEWAY=192.168.2.2
DNS1=192.168.2.2
DNS2=192.168.2.4
/etc/sysconfig/network-scripts/ifcfg-<псевдоним устройства> - описывает параметры сетевого устройства:
bash-2.05b# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.2.31
NETMASK=255.255.255.0
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
или, при использовании протокола динамической конфигурации:
bash-2.05b# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
Нужно учесть, что в выводе команды ifconfig вы будете видеть название устройства, указанного в названии файла, а реально будет использовано устройство, указанное в файле. Причем эти названия не обязательно должны совпадать. Например, в вывод ifconfig можно установить ppp0, хотя реально будет использоваться eth0.
3. Маршрутизация в интернет построена на данных о IP-подсетях, а также о группах подсетей, принадлежащих крупным магистральным провайдерам. Такие группы адресов называются автономными областями. Маршрутизация может быть статической, на основе заранее созданных человеком маршрутов и динамической, когда маршруты создаются протоколами маршрутизации, такими как RIP (Routing Information Protocol - протокол информации и маршрутизации), OSPF (Open Short Path First - использовать короткий путь сначала), BGP (Border Gateway Protocol - протокол граничного шлюза) и др. Их рассматривать мы не будем.
У маршрутизатора есть набор правил, определяющих сетевой интерфейс, на который может быть отправлен пакет в зависимости от адреса получателя, а также маршрут по умолчанию, куда отправляются пакеты, не соответствующие общим правилам, например:
- для сети 192.168.2.0/255.255.255.0 отправить в eth0
- для сети 214.54.0.0/255.255.0.0 отправить в eth1
- маршрут по умолчанию wan0
Таким образом, когда маршрутизатор получит пакет с адресом получателя 192.168.2.31, то он отправит его в интерфейс eth0, а если он получит пакет для 80.92.30.1, то отправит его в интерфейс wan0.
Может быть также, что вместо маршрута-устройства задан адрес сетевого шлюза. В этом случае маршрутизация пакетов будет осуществляться с помощью шлюза, а хост, у которого указан шлюз сможет напрямую адресовать только хосты собственной подсети.
Совсем другой тип маршрутизации применяется в автономных областях. В этом случае на магистральных развязках пакеты для всех подсетей области отправляются на граничный маршрутизатор области, а он уже выполняет внутриобластную маршрутизацию.
Как центральная магистральная развязка в России используется группа маршрутизаторов магистральных провайдеров, таки как РосТелеКом, ТрансТелеКом, МТУ Интел, географически расположенная на международной телефонной станции М9 в г. Москве. Именно из этой точки осуществляется трансляция потоков данных между крупными российскими магистральными провайдерами, а также зарубеж.
Для настройки статической маршрутизации в Linux используется команда /sbin/route.
[gserg@WebMedia gserg]$ /sbin/route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default ns.edu.vologda. 0.0.0.0 UG 0 0 0 eth0
Введенная без параметров она показывает таблицу маршрутизации, используемую на ПК/сервере. Использование команды описано подробно в man-странице. Я же приведу несколько примеров:
bash-2.05b# /sbin/route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default ns.edu.vologda. 0.0.0.0 UG 0 0 0 eth0
bash-2.05b# /sbin/route add 192.168.1.0 gw 192.168.2.1
bash-2.05b# /sbin/route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 192.168.2.1 255.255.255.255 UGH 0 0 0 eth0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default ns.edu.vologda. 0.0.0.0 UG 0 0 0 eth0
bash-2.05b# /sbin/route del 192.168.1.0
bash-2.05b# /sbin/route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default ns.edu.vologda. 0.0.0.0 UG 0 0 0 eth0
bash-2.05b#_
Для создания маршрутов, которые впоследствии будут использоваться при загрузке Вы можете использовать в RedHat-based системах файл /etc/sysconfig/static-routes:
eth0 net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.4
eth0 net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1
Формат файла следующий:
интерфейс пробел параметры_команды_/sbin/route