Сценарий посвящен сетевым интерфейсам – прослойке между канальным и сетевым уровнем в UNIX. В сценарии показано, как получать информацию о настроенных в системе сетевых интерфейсах и как производится их диагностика и конфигурирование.
Начальные условия: Командная строка суперпользователя после входа в систему.
Получить сведения обо всех настроенных сетевых интерфейсах с помощью команды ifconfig -a:
Получить сведения обо всех настроенных сетевых интерфейсах с помощью команды ip a. И сравнить вывод команд.
Проверить возможность соединения с локальной машиной с помощью команды ping 127.0.0.1.
desktop ~ # ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.055 ms
Перед конфигурированием интерфейса ens33 необходимо убедиться, что он отключен. Отключение сетевого интерфейса ens33 производится командой ifconfig eth0 down.
desktop ~ # ifconfig ens33 down
desktop ~ # ifconfig -a
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:228 errors:0 dropped:0 overruns:0 frame:0
TX packets:228 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:17724 (17.3 Kb) TX bytes:17724 (17.3 Kb)
Для назначения статического IP-адреса выданного динамически введем след. команду: ifconfig ens33 <IP-адрес ВМ> up.
desktop ~ # ifconfig ens33 192.168.1.1 up
desktop ~ # ifconfig -a
ens33 Link encap:Ethernet HWaddr 00:0C:F1:2E:0E:F9
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 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 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:11 Base address:0x2000 Memory:c0210000-c0210fff
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:228 errors:0 dropped:0 overruns:0 frame:0
TX packets:228 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:17724 (17.3 Kb) TX bytes:17724 (17.3 Kb)
При этом по умолчанию используется сеть класса C, т.е. маска сети «255.255.255.0».
Для задания специфической маски подсети используется параметр netmask. Например, данная команда задаёт параметры сети класса A: ifconfig ens33 <IP address> netmask 255.0.0.0 up.
desktop ~ # ifconfig ens33 10.10.1.1 netmask 255.0.0.0 up
desktop ~ # ifconfig -a
ens33 Link encap:Ethernet HWaddr 00:0C:F1:2E:0E:F9
inet addr:10.10.1.1 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST MULTICAST MTU:1500 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 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:11 Base address:0x2000 Memory:c0210000-c0210fff
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:228 errors:0 dropped:0 overruns:0 frame:0
TX packets:228 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:17724 (17.3 Kb) TX bytes:17724 (17.3 Kb)
С помощью команды arp можно узнать текущую ARP-таблицу операционной системы (соответствие MAC-адресов канального уровня IP-адресам). Таблица автоматически поддерживается операционной системой в процессе сетевого обмена.
В сценарии производится изучение и настройка таблицы маршрутизации IP. С помощью специальной программы производится изучение маршрута следования пакетов.
Для просмотра таблицы маршрутизации воспользуемся командой route -n:
desktop ~ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.10.1.254 0.0.0.0 UG 0 0 0 eth0
Без использования ключа -n для всех имён будут использоваться символьные значения: route
desktop ~ # route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
localnet * 255.0.0.0 U 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
default gate.localnet 0.0.0.0 UG 0 0 0 eth0
Для добавления новой строки в таблицу нужно воспользоваться параметром add: route add -host 30.30.30.1 dev ens33.
desktop ~ # route add -host 30.30.30.1 dev ens33
desktop ~ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
30.30.30.1 0.0.0.0 255.255.255.255 UH 0 0 0 ens33
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.10.1.254 0.0.0.0 UG 0 0 0 eth0
Эта команда добавляет явный маршрут до отдельного хоста с указанным IP-адресом через интерфейс ens33.
В качестве назначения маршрута можно указывать также целую сеть (параметр -net. Рассмотрим команду, которая задаёт маршрут в сеть «30.30.30.0» через шлюз «30.30.30.1»: route add 30.30.30.0 gw 30.30.30.1.
desktop ~ # route add 30.30.30.0 gw 30.30.30.1
desktop ~ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
30.30.30.0 30.30.30.1 255.255.255.255 UG 0 0 0 ens33
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.10.1.254 0.0.0.0 UG 0 0 0 eth0
Аналогичным образом маршрут удаляется, используется параметр del: route del -host 30.30.30.1.
desktop ~ # route del -host 30.30.30.1 dev ens33
desktop ~ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
30.30.30.1 255.0.0.0 U 0 0 0 ens33
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 10.10.1.254 0.0.0.0 UG 0 0 0 eth0
Рассмотрим простой маршрут движения пакетов до хоста в Internet с помощью программы traceroute ya.ru:
desktop ~ # traceroute ya.ru
traceroute to ya.ru (213.180.204.8), 64 hops max, 40 byte packets
1 10.10.1.254 (10.10.1.254) 3.418 ms 2.67 ms 0.719 ms
2 cs7206.rinet.ru (195.54.192.28) 1.34 ms 1.378 ms 0.647 ms
3 ix2-m9.yandex.net (193.232.244.93) 1.554 ms 1.457 ms 1.420 ms
4 c3-vlan4.yandex.net (213.180.210.146) 2.137 ms 2.154 ms 1.842 ms
5 ya.ru (213.180.204.8) 2.646 ms 2.183 ms 2.220 ms
Сценарий: Изучение службы доменных имён
Сценарий посвящен изучению службы доменных имён – её использованию и конфигурированию.
Просмотрим содержимое файла /etc/hosts, содержащего имена локальных хостов: cat /etc/hosts
desktop ~ # cat /etc/hosts
#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server. Just add the names, addresses
# and any aliases to this file...
#
# Localhost
127.0.0.1 localhost
# Home LAN
10.10.1.254 gate.localnet gate
10.10.1.20 boss.localnet boss
Проверим работоспособность DNS с помощью команды обращения к хосту в Internet по имени ping ya.ru:
desktop ~ # ping ya.ru
PING ya.ru (213.180.204.8) 56(84) bytes of data.
64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=54 time=3.56 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=54 time=2.22 ms
Для корректной работы службы доменных имен необходимо прописать используемые серверы DNS в файле /etc/resolv.conf. Просмотрим его содержимое cat /etc/resolv.conf:
Для проверки работоспособности сетевых служб воспользуемся командой удалённого терминала: telnet ya.ru 80. В данном случае будет установлено соединение с хостом в Internet по порту 80 (HTTP):
desktop ~ # telnet ya.ru 80
Trying 213.180.204.8...
Connected to ya.ru.
Escape character is '^]'.
GET / HTTP/1.0
HTTP/1.0 200 OK
Server: thttpd/2.25b 29dec2003
Content-Type: text/html; charset=windows-1251
Date: Wed, 23 Nov 2005 05:40:33 GMT
Last-Modified: Mon, 07 Nov 2005 15:13:14 GMT
Accept-Ranges: bytes
Connection: close
Content-Length: 2005
<html>
<head>
...
Если во время соединения с удалённым узлом ввести команду netstat -t (можно применять команду ss -tulpn), то можно увидеть, что состояние этого соединения – «ESTABLISHED»:
desktop ~ # netstat -t
Active Internet connections (servers and established)
tcp 0 0 desktop:42639 ya.ru:http ESTABLISHED
Информацию обо всех соединениях в системе можно получить с помощью команды netstat -a (можно применять команду ss -tulpn). В этом случае будет выводиться информация обо всех TCP-, UDP- и локальных сокетах:
desktop ~ # netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:32769 *:* LISTEN
tcp 0 0 *:32770 *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 desktop:42639 ya.ru:http ESTABLISHED
udp 0 0 *:32768 *:*
udp 0 0 *:32769 *:*
udp 0 0 *:sunrpc *:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 8344 /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 8866 /var/run/sdp
...
Сценарий: Работа по удалённому терминалу
Сценарий рассматривает работу по удалённому сетевому терминалу с использованием программы ssh.