Было бы хорошо если бы изучая Ленкцию можно было скачать файлы, используемые для тренировки в терминале. (lesson6_st.txt и т.п.) |
Сетевое администрирование Linux. Протокол IP
Ход занятия
1. IP (Internet Protocol) – протокол сетевого уровня, который содержит информацию об адресации и некоторую управляющую информацию для маршрутизации пакетов. Протокол описан в запросе на комментарий 791 (RFC 791).
Версия – Версия используемого протокола 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 в двоичном виде будет выглядеть:
11111111 11111111 11111111 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 (1 сеть класса А) |
B | 172.16.0.0 – 172.31.255.255 (16 сетей класса B) |
C | 192.168.0.0 – 192.168.255.255 (255 сетей класса С) |
2. Настройка протокола IP в Linux может выполняться как с помощью встроенных средств, таких как netconf от RedHat, так и вручную.
Для отображения параметров протокола IP используется команда /sbin/ifconfig. С помощью этой же команды можно настроить устройство или добавить второй ip для карты:
bash-2.05b# /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)
Однако в RedHat-системах принято настраивать протокол IP с помощью системы стартовых скриптов на основе файлов настроек:
/etc/sysconfig/network – основной конфигурационный файл сети. В нем описан сам факт использования сети, имя хоста, маршрут по умолчанию и адреса DNS:
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-странице. Я же приведу несколько примеров:
1) Просмотр установленных маршрутов
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
2) Добавление маршрутов
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
3)Удаление маршрутов
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