Сложная настройка сети и разрешение проблем
О сетевых утилитах
Linux поставляется с набором стандартных утилит, которые вы можете использовать для настройки и разрешения проблем с сетью. Хотя большая часть сетевого кода Linux находится в самом ядре, почти все, что касается поведения сети, можно настроить с помощью утилит командной строки. Многие дистрибутивы поставляются с инструментами более высокого уровня, возможно графическими. Но они могут сделать туже самую работу, что и инструменты командной строки.
Утилита ping
Самый простой способ проверить, имеет ли узел с Linux доступ к IP адресу (или К именованному узлу, в случае настроенных DNS и/или /etc/hosts) состоит в использовании утилиты ping. ping работает на уровне IP и не полагается на канальный уровень как TCP или UDP. ping вместо них использует протокол Internet Control Message Protocol (ICMP). Если вы не можете достичь узла с помощью ping, то почти наверняка вы не сможете с ним связаться и с помощью других инструментов, поэтому ping всегда является первым шагом в установлении возможности подключения к узлу (man ping может предоставить описание параметров команды).
По умолчанию, ping посылает сообщение каждые две секунды до тех пор, пока не будет прервана ее работа, однако вы можете изменить время, ограничить число сообщений и подробности вывода. Во время работы ping выводит время путешествия пакета и число потерянных пакетов, но в большинстве случаев вы либо сможете получить ответ от узла, либо нет.В Листинге 8 приведены некоторые примеры:
Листинг 8. Работа ping с локальными и нелокальными узлами
$ ping -c 2 -i 2 google.com
PING google.com (216.239.37.99): 56 data bytes
64 bytes from 216.239.37.99: icmp_seq=0 ttl=237 time=43.861 ms
64 bytes from 216.239.37.99: icmp_seq=1 ttl=237 time=36.956 ms
--- google.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 36.956/40.408/43.861 ms
$ ping 192.168.2.102
PING 192.168.2.102 (192.168.2.102): 56 data bytes
64 bytes from 192.168.2.102: icmp_seq=0 ttl=255 time=4.64 ms
64 bytes from 192.168.2.102: icmp_seq=1 ttl=255 time=2.176 ms
^C
--- 192.168.2.102 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 2.176/3.408/4.64 ms
|
Утилита iconfig
Сетевые интерфейсы настраиваются с помощью инструмента ifconfig. Обычно она запускается как часть процесса инициализации, но в некоторых случаях интерфейсы могут быть модифицированы и настроены позже (особенно при отладке). Если вы запустите ifconfig без ключей, то увидите отображение текущего сетевого статуса. Вы можете использовать ifconfig <interface> up и ifconfig <interface> down, чтобы запустить и остановить сетевые интерфейсы. Некоторые ключи изменяют формат отображения или ограничивают вывод только для конкретных интерфейсов. В man ifconfig можно узнать подробности.
Дополнительная информация может выглядеть как в Листинге 9:
Листинг 9. Использование ifconfig для просмотра информации о сетевых интерфейсах
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:12:F0:21:4C:F8
inet addr:192.168.2.103 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::212:f0ff:fe21:4cf8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:540 errors:0 dropped:0 overruns:0 frame:0
TX packets:233 errors:0 dropped:0 overruns:0 carrier:1
collisions:0 txqueuelen:1000
RX bytes:49600 (48.4 KiB) TX bytes:42067 (41.0 KiB)
Interrupt:21 Base address:0xc000 Memory:ffcfe000-ffcfefff
ppp0 Link encap:Point-Point Protocol
inet addr:10.144.153.104 P-t-P:10.144.153.51 Mask:255.255.255.0
UP POINTOPOINT RUNNING MTU:552 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:4043 errors:0 dropped:0 overruns:0 frame:0
TX packets:4043 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:368044 (359.4 KiB) TX bytes:368044 (359.4 KiB)
|
В этом листинге видно, что настроено две сети, одна Ethernet и одна PPP (и еще присутствует повсеместный локальный интерфейс loopback). В других случаях у вас может быть настроено несколько интерфейсов Ethernet или других типов интерфейсов. Если это так, то говорят, что системасильно связана.
Утилита netstat
Утилиты Linux могут иметь схожий функционал. Инструмент netstat отображает информацию, которую также можно получить у нескольких утилит, как ifconfig и route. Вы также можете узнать общую расширенную статистику о сетевой активности. Например:
Листинг 10. Отчет сетевой статистики
$ netstat -s
Ip:
12317 total packets received
0 forwarded
0 incoming packets discarded
12255 incoming packets delivered
11978 requests sent out
Icmp:
1 ICMP messages received
0 input ICMP message failed.
ICMP input histogram:
echo replies: 1
0 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
Tcp:
7 active connections openings
5 passive connection openings
0 failed connection attempts
0 connection resets received
3 connections established
11987 segments received
11885 segments send out
0 segments retransmitted
0 bad segments received.
3 resets sent
Udp:
101 packets received
0 packets to unknown port received.
0 packet receive errors
92 packets sent
TcpExt:
1 TCP sockets finished time wait in fast timer
1490 delayed acks sent
Quick ack mode was activated 5 times
3632 packets directly queued to recvmsg prequeue.
126114 of bytes directly received from backlog
161977 of bytes directly received from prequeue
1751 packet headers predicted
3469 packets header predicted and directly queued to user
17 acknowledgments not containing data received
4696 predicted acknowledgments
0 TCP data loss events
|
 |
Другие утилиты
Есть также другие утилиты, о которых вы должны знать при настройке сети. Как обычно соответствующие им man-страницы содержат полную информацию по их использованию. Подробно они обсуждаются в седьмом руководстве по теме 214, которая рассматривает вопросы разрешения проблем, этой серии руководств.
tcpdump позволяет отслеживать все пакеты, которые проходят через сетевые интерфейсы, опционально можно ограничиться определенными интерфейсами или произвести фильтрацию по различным критериям. Часто такой отчет, который потом обрабатывается текстовыми утилитами, полезен при диагностике проблемы сети. Например, вы можете исследовать пакеты, которые приходят от конкретного удаленного узла.
lsofвыводит список всех открытых файлов в работающей Linux системе. Но в частности, вы можете использовать опцию lsof -i, чтобы просмотреть только псевдофайлы на наличие определенного IP соединния и вообще все сетевые соединения. Например:
Листинг 11. Использование lsof для просмотра псевдофайлов на наличие соединений
$ lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE NODE
NAME
vino-serv 7812 dqm 33u IPv4 12824
TCP *:5900 (LISTEN)
gnome-cup 7832 dqm 18u IPv4 12865
TCP localhost.localdomain:32771->localhost.localdomain:ipp (ESTABLISHED)
telnet 8909 dqm 3u IPv4 15771
TCP 192.168.2.103:32777->192.168.2.102:telnet (ESTABLISHED)
|
nc и netcat -- это псевдонимы. netcat это простая утилита UNIX, которая читает и пишет данные по сети, используя протокол TCP или UDP. Это "back-end" инструмент, который можно использовать в других программах или скриптах. Во многих отношениях netcat похожа на telnet, но более гибка в плане работы с UDP и пересылке двоичных данных.
|