Цель занятия: изучение инструментов конфигурирования сети в UNIX, включающих настроку параметров TCP/IP-сети.
Изучаемые команды: arp, ifconfig, netstat, ping, route, ssh, telnet, traceroute
Сценарий посвящен сетевым интерфейсам – прослойке между канальным и сетевым уровнем в UNIX. В сценарии показано, как получать информацию о настроенных в системе сетевых интерфейсах и как производится их диагностика и конфигурирование.
Начальные условия: Командная строка суперпользователя после входа в систему.
Получить сведения обо всех настроенных сетевых интерфейсах с помощью команды ifconfig -a:
desktop ~ # ifconfig -a eth0 Link encap:Ethernet HWaddr 00:0D:60:8D:42:AA inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:204779 errors:0 dropped:0 overruns:0 frame:0 TX packets:107606 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:302429520 (288.4 Mb) TX bytes:9177476 (8.7 Mb) Base address:0x8000 Memory:c0220000-c0240000 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)
Проверить возможность соединения с локальной машиной с помощью команды 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
Перед конфигурированием интерфейса eth0 необходимо убедиться, что он отключен. Отключение сетевого интерфейса eth0 производится командой ifconfig eth0 down.
desktop ~ # ifconfig eth0 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)
Для связи сетевого интерфейса eth0 с IP-адресом 192.168.1.1 выполним команду ifconfig eth0 192.168.1.1 up.
desktop ~ # ifconfig eth0 192.168.1.1 up desktop ~ # ifconfig -a eth0 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
eth0 10.10.1.1 netmask 255.0.0.0 up.
desktop ~ # ifconfig eth0 10.10.1.1 netmask 255.0.0.0 up desktop ~ # ifconfig -a eth0 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-адресам). Таблица автоматически поддерживается операционной системой в процессе сетевого обмена.
desktop ~ # arp Address HWtype HWaddress Flags Mask Iface gate.localnet ether 00:02:44:8F:16:B7 C eth0
В сценарии производится изучение и настройка таблицы маршрутизации 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 10.10.2.1 dev eth0.
desktop ~ # route add -host 10.10.2.1 dev eth0 desktop ~ # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.10.2.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 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-адресом через интерфейс eth0.
Аналогичным образом маршрут удаляется, используется
параметр del
:
route del -host 10.10.2.1.
desktop ~ # route add -host 10.10.2.1 dev eth0 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
В качестве назначения маршрута можно указывать также целую сеть (парамеметр
-net
. Рассмотрим команду, которая
задаёт маршрут в сеть «192.168.1.0» через
шлюз «10.10.1.253»:
route add -net 192.168.1.0 gw 10.10.1.253.
desktop ~ # route add -net 192.168.1.0 gw 10.10.1.253 desktop ~ # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 10.10.1.253 255.255.255.255 UG 0 0 0 eth0 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
Рассмотрим простой маршрут движения пакетов до хоста в 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
Сценарий посвящен изучению службы доменных имён – её использованию и конфигурированию.
Начальные условия: Командная строка суперпользователя, сетевой интерфейс настроен на статический IP-адрес.
Просмотрим содержимое файла /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:
desktop ~ # cat /etc/resolv.conf domain localnet nameserver 10.10.1.17
С помощью команды host ya.ru узнаем информацию DNS о хосте в Internet:
desktop ~ # host ya.ru ya.ru has address 213.180.204.8 ya.ru mail is handled by 10 cmail.yandex.ru.
Вторым аргументом команды host ya.ru ns1.yandex.ru имя DNS-сервера, с которого необходимо получить инормацию:
desktop ~ # host ya.ru ns1.yandex.ru ya.ru has address 213.180.204.8 Using domain server: Name: ns1.yandex.ru Address: 213.180.193.1#53 Aliases: Using domain server: Name: ns1.yandex.ru Address: 213.180.193.1#53 Aliases: ya.ru mail is handled by 10 cmail.yandex.ru.
Сценарий рассматривает самые простые способы диагностики работы сети.
Начальные условия: Командная строка суперпользователя, сетевой интерфейс настроен на статический IP-адрес.
Для проверки работоспособности сетевых служб воспользуемся командой удалённого терминала: 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, то можно увидеть, что состояние этого соединения – «ESTABLISHED»:
desktop ~ # netstat -t Active Internet connections (servers and established) tcp 0 0 desktop:42639 ya.ru:http ESTABLISHED
Информацию обо всех соединениях в системе можно получить с помощью команды netstat -a. В этом случае будет выводиться информация обо всех 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.
Начальные условия: Командная строка суперпользователя, сетевой интерфейс настроен на статический IP-адрес.
С помощью команды ssh user@10.10.1.222
desktop ~ # ssh user@10.10.1.222 Password: Last login: Sat Nov 21 15:56:20 2005 from 10.10.1.5 user@remote ~ $ user@remote ~ $ exit
Выполним команду who, чтобы убедиться, что находимся на удалённой машине. Для всех пользователей, работающий удалённо, указывается IP-адрес.
user@remote ~ $ who user vc/1 Nov 14 14:04 user pts/0 Nov 22 10:55 (10.10.1.5)
Для завершение сеанса удалённого терминала нужно выйти из командной оболочки с помощью команды exit.
user@remote ~ $ exit logout Connection to 10.10.1.5 closed. desktop ~ #