В повседневные задачи системных администраторов входит работа с сетями и с подключённым к ним оборудованием. Нередко роль рабочего места администратора играет компьютер, на котором установлен какой-нибудь дистрибутив Linux. Утилиты и команды Linux, о которых пойдёт речь в материале, перевод которого мы публикуем сегодня, включают в себя список инструментов различной сложности — от простых, до продвинутых, которые предназначены для решения широкого спектра задач по управлению сетями и по диагностике сетевых неполадок.



В некоторых из рассматриваемых здесь примеров вы столкнётесь с сокращением <fqdn> (fully qualified domain name, полное доменное имя). Встретив его, замените его, в зависимости от обстоятельств, на адрес интересующего вас сайта или сервера, например, на нечто вроде server-name.company.com.

Ping


Утилита ping, как можно судить по её названию, используется для проверки связи между узлами сети, между компьютером, на котором её запускают, и другой системой. Эта утилита использует протокол ICMP, отправляя эхо-запросы, на которые отвечает удалённая система, получающая их. Использование ping, кроме того — это хороший способ проверки связности сети, проводимой в качестве первого шага диагностики сети при наличии неполадок. Команду ping можно использовать с адресами IPv4 и IPv6. Тут можно почитать подробности об IP-адресах и о работе с ними.

?Примеры


IPv4: ping <ip address>/<fqdn>
IPv6: ping6 <ip address>/<fqdn>

Ping, кроме того, можно использовать для выяснения IP-адресов сайтов на основе их имён. Вот как это выглядит.


Использование ping для выяснения IP-адреса сайта по его имени

Traceroute


Traceroute — это приятная утилита, которая позволяет исследовать маршруты передачи данных между компьютерами. В то время как команда ping направлена на то, чтобы выяснить, можно ли установить связь между двумя узлами сети, traceroute даёт сведения об IP-адресах маршрутизаторов, через которые проходят данные от вашей системы до конечной, например — до веб-сайта или сервера. Команда traceroute обычно применяется на втором шаге диагностики сети, после команды ping.

?Пример


traceroute <ip address>/<fqdn>

Telnet


Утилита telnet позволяет связаться с удалённым компьютером по протоколу Telnet и взаимодействовать с ним, используя соответствующие команды.

?Пример


Для организации сеанса Telnet-связи с другим компьютером используется следующая команда:

telnet <ip address>/<fqdn>

Netstat


Эта команда позволяет собирать сведения о сети и используется в ходе поиска и исправления сетевых неполадок, применяется для проверки данных о работе интерфейсов и портов, для исследования таблиц маршрутизации, для изучения информации о работе протоколов. Эта команда непременно должна присутствовать в арсенале системного администратора.

?Примеры


Для того чтобы получить список всех портов, находящихся в режиме прослушивания, воспользуйтесь такой командой:

netstat -l

Следующая команда выводит сведения обо всех портах. Для того чтобы ограничиться только TCP-портами, нужно воспользоваться ключом -at, для того, чтобы получить данные об UDP-портах, используйте ключ -au.

netstat -a

Для просмотра таблиц маршрутизации воспользуйтесь такой командой:

netstat -r

Вот как выглядит результат выполнения этой команды.


Сведения о таблице маршрутизации

Вот вариант этой команды, выводящий статистику по протоколам:

netstat -s


Статистика по протоколам

Следующий вариант вызова netstat позволяет узнать сведения об отправленных и полученных пакетах (transmission/receive, TX/RX) по каждому интерфейсу:


Данные об отправленных и полученных пакетах

Nmcli


Утилита nmcli отлично подходит для управления сетевыми соединениями, для выполнения настроек и для решения других подобных задач. С её помощью можно управлять программой NetworkManager и модифицировать сетевые параметры различных устройств.

?Примеры


Вот как с помощью nmcli вывести список сетевых интерфейсов:

nmcli device

Так можно вывести информацию по конкретному интерфейсу:

nmcli device show <interface>

Следующий вариант вызова команды позволяет проверить подключение устройства к сети:

nmcli connection


Примеры использования nmcli

Эта команда позволяет отключить заданный интерфейс:

nmcli connection down <interface>

А эта позволяет включить интерфейс:

nmcli connection up <interface>

Вот пример команды, которая добавляет VLAN-интерфейс с заданным VLAN-номером, IP-адресом и шлюзом к указанному интерфейсу:

nmcli con add type vlan con-name <connection-name> dev <interface> id <vlan-number> ipv4 <ip/cidr> gw4 <gateway-ip>

Маршрутизация


Существует множество команд, которые можно использовать для проверки правил маршрутизации и их настройки. Рассмотрим самые полезные из них.

?Примеры


Следующая команда показывает все текущие маршруты, настроенные для соответствующих интерфейсов:

ip route


Маршруты, настроенные для интерфейсов

Эта команда позволяет добавить в таблицу маршрутизации шлюз, используемый по умолчанию:

route add default gw <gateway-ip>

Следующая команда добавляет в таблицу маршрутизации новый сетевой маршрут. Существует и множество других её параметров, позволяющих выполнять такие операции, как добавление маршрута и шлюза, используемых по умолчанию, и так далее.

route add -net <network ip/cidr> gw <gateway ip> <interface>

С помощью такой команды можно удалить запись о заданном маршруте из таблицы маршрутизации:

route del -net <network ip/cidr>

Вот примеры использования команды route.


Использование команды route

Вот команда, которая применяется для вывода текущей таблицы соседей. Кроме того, её можно использовать для добавления, изменения или удаления сведений о соседях:

ip neighbor

Взглянем на примеры её использования.


Данные, полученные с помощью команды ip neighbor

Вот сведения о команде ip neigh


Сведения о команде ip neigh

Команда arp (ARP — это сокращение от Address Resolution Protocol, протокол определения адреса) похожа на ip neighbor. Утилита arp выводит данные о соответствии IP-адресов MAC -адресам. Вот как её использовать:

arp

Вот пример её вызова.


Вызов команды arp

Tcpdump и Wireshark


Linux даёт в распоряжение администратора множество инструментов для захвата и анализа пакетов. Среди них, например, tcpdump, wireshark, tshark, и другие. Они используются для захвата сетевого трафика в передаваемых системой пакетах или в пакетах, получаемых ей. Это делает их весьма ценным инструментом администратора, помогающим в деле выяснения причин различных сетевых неполадок. Тем, кто предпочитает командную строку всем остальным способам общения с компьютерами, понравится tcpdump. Тем же, кто любит графические интерфейсы, можно порекомендовать wireshark — отличный инструмент для захвата и анализа пакетов. Утилита tcpdump — это встроенное в Linux средство для захвата сетевого трафика. Его можно использовать для захвата и вывода трафика с фильтрацией по портам, протоколам, и по другим признакам.

?Примеры


Такая команда показывает, в режиме реального времени, пакеты с заданного интерфейса:

tcpdump -i <interface-name>

Пакеты можно сохранять в файл, воспользовавшись флагом -w и задав имя файла:

tcpdump -w <output-file.> -i <interface-name>

Вот пример использования tcpdump.


Использование tcpdump

Следующий вариант команды используется для захвата пакетов, приходящих с заданного IP системы-источника:

tcpdump -i <interface> src <source-ip>

Так можно захватить пакеты, идущие на заданный адрес системы-приёмника:

tcpdump -i <interface> dst <destination-ip>

Вот пример использования tcpdump для захвата пакетов для заданного номера порта, например, это может быть порт 53, 80, 8080, и так далее:

tcpdump -i <interface> port <port-number>

Здесь показано, как с помощью tcpdump захватывать пакеты заданного протокола, вроде TCP, UDP или других:

tcpdump -i <interface> <protocol>

Iptables


Утилита iptables похожа на файрвол, она поддерживает фильтрацию пакетов, что позволяет управлять трафиком, пропуская или блокируя его. Диапазон возможностей этой утилиты огромен. Рассмотрим несколько наиболее распространённых вариантов её использования.

?Примеры


Следующая команда позволяет вывести все существующие правила iptables:

iptables -L

Эта команда удаляет все существующие правила:

iptables -F

Следующие команды разрешают прохождение трафика с заданного номера порта к заданному интерфейсу:

iptables -A INPUT -i <interface> -p tcp –dport <port-number> -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o <interface> -p tcp -sport <port-number> -m state – state ESTABLISHED -j ACCEPT

Следующие команды разрешают loopback-доступ к системе:

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Nslookup


Инструмент nslookup используется для получения сведений о назначении IP-адресов сетевым ресурсам. Его можно использовать и для получения сведений с DNS-серверов, например таких, как все DNS-записи для некоего веб-сайта (ниже мы рассмотрим соответствующий пример). На nslookup похожа утилита dig (Domain Information Groper).

?Примеры


Следующая команда выводит IP-адреса вашего DNS-сервера в поле Server, и, ниже, выдаёт IP-адрес искомого сайта:

nslookup <website-name.com>

Такая команда показывает все доступные записи для заданного веб-сайта или домена:

nslookup -type=any <website-name.com>

Поиск неполадок


Вот набор команд и список важных файлов, используемых для идентификации сетевых неполадок.

?Примеры


  • ss — утилита для вывода статистической информации о сокетах.
  • nmap <ip-address> — имя этой команды является сокращением от Network Mapper. Она сканирует сетевые порты, обнаруживает хосты, выясняет MAC-адреса и выполняет множество других задач.
  • ip addr/ifconfig -a — эта команда предоставляет сведения об IP-адресах и другие данные по всем интерфейсам системы.
  • ssh -vvv user@<ip/domain> — такая команда позволяет подключиться по SSH к другому компьютеру, используя заданный IP-адрес или доменное имя компьютера и имя пользователя. Флаг -vvv позволяет получать подробные сведения о происходящем.
  • ethtool -S <interface> — данная команда позволяет вывести статистические сведения по заданному интерфейсу.
  • ifup <interface> — эта команда включает указанный интерфейс.
  • ifdown <interface> — эта команда отключает указанный интерфейс.
  • systemctl restart network — с помощью этой команды можно перезагрузить системную сетевую подсистему.
  • /etc/sysconfig/network-scripts/<interface-name> — это — файл настройки интерфейсов, используемый для указания IP-адреса, сети, шлюза и других параметров для заданного интерфейса. Здесь можно задать использование интерфейсом DHCP-режима.
  • /etc/hosts — данный файл содержит сведения о соответствии хостов или доменов IP-адресам, настроенные администратором.
  • /etc/resolv.conf — в этом файле хранятся настройки DNS.
  • /etc/ntp.conf — этот файл хранит настройки NTP.

Итоги


В этой небольшой шпаргалке мы рассказали о сетевых инструментах Linux, предназначенных для системных администраторов. Надеемся, вам эти инструменты пригодятся.

Уважаемые читатели! Чем вы пользуетесь для администрирования сетей и для выяснения причин сетевых неполадок?

Комментарии (28)


  1. turbotankist
    19.07.2018 11:46
    +3

    это что за системный администратор, которому нужна шпаргалка по пингу и трейсроуту, да и всему остальному описанному здесь?


    1. Henry7
      19.07.2018 12:25

      Каждый второй, кто работает за 30 т.р. в месяц.


      1. webviktor
        19.07.2018 12:32

        Если такому «админу» нужна такая шпаргалка, я бы ему даже калькулятор не доверил.


        1. fpir
          20.07.2018 10:14
          +1

          Ну, 30 -это уже вполне себе, а вот тем, кто на 12.5 идёт, тем можно даже и рекомендовать такую шпаргалку, а работодателю можно смело нанимать на такую зарплату того, кто знает хотя-бы одну команду из этой шпаргалки.


      1. DaemonGloom
        19.07.2018 13:18
        +2

        Вы сейчас расстроили множество администраторов в разных регионах нашей страны, где 30 т.р. — вполне неплохая зарплата.


        1. Henry7
          19.07.2018 15:06
          -1

          Не хотел никого обидеть, однако, среднестатистически в бедных регионах навыки ИТ-специалистов пониже. Исключения всегда есть, куда же без них.


          1. zenches
            19.07.2018 15:13
            +1

            Дело, на мой взгляд, не в конкретных навыках, а в потребностях бизнеса.
            Зачастую вдали от региональных центров отсутствуют работодатели, которые нуждаются (и могут себе позволить) в сложных системах, требующих высококвалифицированного персонала для развёртывания и сопровождения на постоянной основе.
            В таких условиях специалисты могут либо развиваться с прицелом на переезд в места, где их квалификация может быть востребована и соответственно оплачена, либо заниматься низкоквалифицированной работой с соответствующей оплатой.


          1. GhOsT_MZ
            20.07.2018 07:53

            Подскажите, а где можно посмотреть такую статистику?


            1. fpir
              20.07.2018 10:18

              Для научных целей я затрудняюсь порекомендовать источник, а для удовлетворения любопытства попробуйте поискать вакансию сисадмина в Брянске, Орле, Калуге и т.д.


              1. GhOsT_MZ
                21.07.2018 11:49

                Ну тут небольшая поправка. В Бранске, Орле, Калуге и т.д. наверняка нет понятия эникейщик. Эникейщиков там называют сисадминами, поэтому и получается подобная статистика.


                1. fpir
                  21.07.2018 12:04

                  В общем-то да, так и есть, хорошо если не программист. Но этому эникейщику вменяется держать домен на 2003м сервере, рулить политиками, и, как правило, ещё и внешние обработчики для 1с писать. А чё, всё равно ничего не делает, за что своих 15к получает-непонятно.


    1. rzerda
      19.07.2018 18:52

      У меня на столе лежит красная папка, в которой, помимо прочего, есть шпаргалки по команде ip и приоритетам переменных в Ansible, список IP-адресов DNS-серверов в нескольких ДЦ и таблица времени в четырёх зонах.

      Ибо когда это всё срочно понадобится, я не хочу надеяться только на собственную память или умение считать в уме. Надежда — это не тактика.


  1. click0
    19.07.2018 13:01

    Не увидел команд:
    mtr
    iftop
    nload
    curl
    whois
    host
    dig

    Тема команд ethtool, arp и nmap не раскрыты полностью.


  1. zenches
    19.07.2018 13:08

    А к чему тут netstat? Он же уже выпиливается в пользу ss. ethtool туда же.
    Админ, который эти утилиты не знает, скорее всего и не сможет их поставить без гугла, а с гуглом и так обойдётся.
    И до кучи — зачем указывать специфичные для дистрибутивов пути? С тем же Debian'ом предложенные решения не прокатят.


    1. maxzhurkin
      19.07.2018 15:19

      route туда же, уступает пальму (не первенства, но всё же) ip route


      1. ilyakruchinin
        20.07.2018 07:53

        Туда же и ifup/ifdown -> ip link

        netstat,route,ifconfig -> deprecated (legacy), причем давно


  1. onix74
    19.07.2018 13:14
    +3

    telnet позволяет, кроме прочего, проверить доступность порта. И, по-моему, это его чуть ли не основное назначение на текущий момент.
    nmcli — сомнительный инструмент, который, к тому же, может быть и не установлен.


    1. FlashHaos
      20.07.2018 01:02

      Telnet тоже может быть не установлен.


      1. onix74
        20.07.2018 06:34

        Согласен. Однако, не припоминаю, когда в последний раз я устанавливал его дополнительно в linux-системах. В windows — да, по-умолчанию его нет. Но этот инструмент хоть прост и понятен, как пятак. В отличии от nmcli. :-)


        1. FlashHaos
          20.07.2018 09:02

          У нас корпоративный стандарт не включает телнет, но включает nc. Не знаю почему (не админю ось), но тем не менее.


  1. EvilMan
    19.07.2018 13:56
    +2

    Для команды пинг можно добавить пример с запретом фрагментации и указанием размера полезной нагрузки — позволяет удобно диагностировать проблемы с MTU.


    Было бы полезнее добавить пример использования команды traceroute для трейса с помощью tcp-syn пакетов, что позволит посмотреть более полный путь в случае хитрых файерволлов.


    Почему-то в примерах сначала идёт команда ip route для просмотра маршрутов, а вот примеры по управлению маршрутами (добавление и удаление) приведены уже с использованием комады route, которая как deprecated, а в некоторых дистрибутивах уже и отсутствует. Хотя даже краткая справка по утилите ip займёт несколько статей. Тоже самое касается и netstat, вместо которой сейчас принятно использовать более продвинутые ss (для просмотра информации по открытым сокетам) и nstat (для просмотра различных счётчиков сетевого стека).


    Для просмотра правил iptables лучше использовать команду iptables-save -c, которая выведет все правила со счётчиками во всех таблицах (а не только в таблице filter, как iptables -L). Для изменения правил безопаснее использовать iptables-apply, которая откатывает правила, если изменения не подтвердить в течение тайм-аута. Приведённая команда очистки правил (iptables -F) в большинстве случаев приведёт к полной недоступности сервера, если в политике filter/INPUT стоит DROP, а в подавляющем большинстве случаев это именно так.


    В общем, шпаргалка устарела на несколько лет, содержит обрывочные сведения, и вряд ли будет полезна новичкам в Linux. Вместо этого для новичков (и не только) был бы более полезен пошаговый алгоритм диагностики и устранения проблем с сетью в Linux. На крайний случай, даже просто перечень ссылок на учебники и хаутушки окажется более полезен.


  1. ELForcer
    19.07.2018 14:55

    Я прошу прощения. А есть фаервол похожий на Agnitum Outpost Firewall? ну или хотя бы в реальном времени следить кто куда подключен, какой процесс и сколько жрет трафика?


    1. yushkin
      20.07.2018 07:53

      trafshow


  1. AlePil
    19.07.2018 15:41
    +1

    Очень странно видеть такое содержание пот таким заголовком. Больше подходит «в помощь начинающему линуксоиду», но естественно это не претензия к переводчику…
    Вообще когда на ресурсе оригинальном видишь такое название (да и авторство как бы намекает) ожидаешь увидеть простыню в 10 000 строк действительно комманд с разборами кейсов, которые начинающий врядли может узнать с wiki, но никак не вот это…


  1. denis-19
    19.07.2018 19:26

    Походу след.шпорки будут про повершелл винды или путти :)


  1. 027
    19.07.2018 19:52

    В закладки? Вот этот мусор? Удивительно видеть такое в блоге крупного хостера. За что вы так не любите своих пользователей?


  1. khanid
    19.07.2018 21:09

    Ну такой себе материал. Какие-то обрывки, но самого важного, при этом, нет.
    Man.
    Важная ремарка. Telnet для своего основного функционала используется только там, где иного нет — небезопасно. Сейчас это слово очень много за собой тянет. Чаще всего сейчас используют как простая утилита для проверки доступности порта.

    В свою очередь, всем, кому требуются справочники, могу порекомендовать приложение Linux Command Library. На андроиде есть, на другие платформы — не знаю.


  1. Ernillgeek
    20.07.2018 15:25

    1. netstat — deprecated, отсутствует по дефолту во всех дистрибутивах, нужно использовать lsof или ss
    2. nmcli — часть NetworkManager, само собой отсутствует в серверных инсталяциях, встречается только на десктопах, да и то не у всех
    3. route — deprecated, отсутствует по дефолту в свежих дистрибутивах, нужно использовать ip r(ip route) из iproute2
    4. arp — deprecated, нужно использовать ip neigh
    5. iptables — deprecated, новичку стоит сразу учить nft
    6. nslookup — вы будете смеяться, но тоже deprecated, о чем много лет показывала предупреждение, нужно использовать dig
    7. /etc/sysconfig/network-scripts/<interface-name> — это — файл настройки интерфейсов — справедливо только для RH и его детишек, для Debian-based будет /etc/network/interfaces(для Ubuntu 18.04 вообще /etc/netplan/*.yml)
    8. /etc/ntp.conf — этот файл может хранит, а может и не хранит настройки не NTP(то есть Network Time Protocol), а настройки ntpd, а может их хранит /etc/ntp/ntpd.conf, а может еще что-то, спросите у мэйнтейнера своего дистрибутива.

    Это я так, прошелся по вершкам, детальней лень разбирать.
    Это не шпаргалка, это — целенаправленное вредительство какое-то, детей учат командам которых нет или которых скоро не будет, мешают в кучу коней и людей. За такие «шпаргалки» нужно отрывать ложноножки.