Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Изменение конфигурации сетевых устройств с помощью инструментов с интерфейсом командной строки

Оригинал: Working with Network Configurations from the Command Line
Автор: Jack Wallen
Дата публикации: 7 октября 2016 г.
Перевод: А.Панин
Дата перевода: 15 января 2017 г.

Изменение конфигурации сетевых устройств с помощью инструментов с интерфейсом командной строки

Jack Wallen описывает методику использования интерфейса командной строки системы для изменения конфигурации сетевых устройств.

Если вы являетесь администратором систем Linux, вам придется использовать их интерфейс командной строки... причем неоднократно. Для этого имеются веские причины. Интерфейс командной строки системы является чрезвычайно мощным и гибким. Именно поэтому вам просто необходимо уметь использовать его, причем вы должны делать это поистине мастерски.

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

Давайте рассмотрим несколько доступных команд и разберемся с принципом их работы. Для работы с некоторыми из этих команд требуются административные привилегии. Это означает, что вам придется либо использовать утилиту sudo при исполнении каждой из команд, либо выполнить команду su для получения привилегий пользователя root перед исполнением команд.

ip

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

Перво-наперво вам стоит уяснить, что вы должны использовать утилиту ip для получения списка всех доступных сетевых устройств. То есть, если вам нужно ознакомиться со списком всех доступных сетевых устройств, вы должны просто выполнить команду:

ip link show

На Рисунке 1 показан пример вывода команды ip link show.

Получение имен сетевых устройств с помощью утилиты ip

Рисунок 1: Получение имен сетевых устройств с помощью утилиты ip

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

sudo ip addr add 192.168.1.100 dev DEVNAME

Здесь вместо DEVNAME должно использоваться реальное имя сетевого устройства.

Теперь вы можете активировать это устройство с помощью утилиты ip следующим образом:

sudo ip link set DEVNAME up

Здесь также вместо DEVNAME должно использоваться реальное имя сетевого устройства.

Впоследствии вы сможете деактивировать это сетевое устройство с помощью следующей команды:

sudo ip link set DEVNAME down

Если вам понадобится добавить адрес основного шлюза для системы, утилита ip также окажется полезной. Предположим, что основной сетевой шлюз имеет IP-адрес 192.168.1.254. Для его установки в рамках рассматриваемой системы следует использовать команду:

sudo ip route add default via 192.168.1.254

Утилита ip также может использоваться для вывода и модификации таблицы маршрутизации системы. Используйте команду sudo ip route show для ознакомления с таблицей маршрутизации (Рисунок 2).

Команда ip show route в действии

Рисунок 2: Команда ip show route в действии

Кроме того, вы можете добавить статический маршрут в таблицу маршрутизации системы. Предположим, что в вашей сети используются адреса 10.10.10.x и 192.168.1.x и вы хотите, чтобы пакеты с узлов с адресами 10.10.10.x преодолевали основной шлюз сети посредством узла 192.168.1.101. Эта цель может быть достигнута с помощью аналогичной команды:

sudo ip route add 10.10.10.0/24 via 192.168.1.101 dev DEVNAME

И снова вместо DEVNAME должно использоваться реальное имя сетевого устройства.

Для получения дополнительной информации об утилите ip достаточно выполнить команду man ip, прочитать всю страницу руководства и запомнить столько особенностей данной утилиты, сколько удастся.

route

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

Первой операцией, которую вы наверняка захотите выполнить, является вывод содержимого таблицы маршрутизации системы. Для этого достаточно выполнить команду route -n. В результате будут выведены адреса целевых узлов, адреса шлюзов, маски сетей, флаги, метрики и дополнительные данные, относящиеся к маршрутам сетевых пакетов. Вывод данной команды будет выглядеть аналогично выводу, представленному на Рисунке 3.

Вывод содержимого таблицы маршрутизации с помощью утилиты route

Рисунок 3: Вывод содержимого таблицы маршрутизации с помощью утилиты route

Команды добавления и удаления маршрута к сети 10.10.10.x с шлюзом с адресом 192.168.1.1 силами утилиты route будут выглядеть аналогичным образом:

  • sudo route add -net 10.10.10.0/24 gw 192.168.1.1
  • sudo route del -net 10.10.10.0/24 gw 192.168.1.1

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

  • sudo route add default gw 192.168.1.254
  • sudo route del default gw 192.168.1.254

А что делать в том случае, если вы хотите добавить маршрут к определенному узлу с адресом 192.168.1.101 в рамках вашей сети с основным шлюзом с адресом 192.168.1.254? Вы можете просто воспользоваться аналогичной командой:

route add -host 192.168.1.101 gw 192.168.1.254 eth0

Теперь предположим, что у вас имеется две локальных сети, одна с адресами 10.10.10.x и другая с адресами 192.168.1.x. При этом межсетевой экран, расположенный между этими сетями содержит две сетевых карты: eth0 (соединен с сетью с адресами 10.10.10.x) и eth1 (соединен с сетью с адресами 192.168.1.x). Ваш межсетевой экран должен иметь возможность передавать пакеты из сети 10.10.10.x через сеть 192.168.1.x (из которой они будут передаваться во внешнюю сеть).

Для решения подобной задачи необходимо настроить межсетевой экран, установив отличные IP-адреса его сетевых карт. Если же вернуться к нашему примеру, то нам придется установить адрес 10.10.10.50 для сетевой карты eth1 и адрес 192.168.1.50 для сетевой карты eth0. Адресом шлюза во внешнюю сеть из сети 192.168.1.x будет 192.168.1.254. По сути, на машине с межсетевым экраном вам придется воспользоваться утилитой route аналогичным образом:

  • sudo route add -net 192.168.1.0 netmask 255.255.255.0 dev eth1
  • sudo route add default gw 192.168.1.254
  • sudo route add -net 10.10.10.0 netmask 255.0.0.0 dev eth0

А на всех компьютерах из сети 10.10.10.x - аналогичным образом:

  • sudo route add -net 10.10.10.0 netmask 255.0.0.0 dev eth0
  • sudo route add default gw 10.10.10.50

Приведенные выше команды сообщают каждому из компьютеров, что основной шлюз имеет адрес 10.10.10.50 (то есть, это ваш межсетевой экран/маршрутизатор).

На всех компьютерах из сети 192.168.1.x вам придется добавить специальную запись в таблицу маршрутизации для того, чтобы передаваемые из другой сети пакеты не терялись (так как эти компьютеры не имеют представления о сети 10.10.10.x). По сути, на этих машинах (работающих в сети 192.168.1.x) вам придется выполнить следующую команду:

route add -net 10.10.10.0 netmask 255.0.0.0 gw 192.168.10.50

Эта команда сообщает ядру ОС о том, что все пакеты, направленные по адресу 10.10.10.0, передавались по адресу 192.168.1.50, который является адресом шлюза в сеть 192.168.1.x.

Благодаря утилите route, данный механизм будет работать следующим образом:

  • Все пакеты, направленные по адресу 192.168.1.0, будут обрабатываться без шлюза.
  • Все пакеты, направленные по адресу 10.10.10.0, будут передаваться заданному шлюзу с адресом 192.168.1.50.
  • Все остальные пакеты будут передаваться основному сетевому шлюзу с адресом 192.168.1.254.

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

arp

Утилита arp (названная созвучно протоколу разрешения адресов - Address Resolution Protocol) предназначена для вывода и изменения содержимого кэша адресов IPv4 ядра ОС. С ее помощью вы можете добавлять/удалять строки таблицы кэша адресов, просматривать ее текущее содержимое и ставить в соответствие сетевому адресу компьютера (IP-адресу) его аппаратный адрес (MAC-адрес). Последнее действие выполняется чаще всего.

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

arp -a

В результате будет выведен список всех адресов (а именно, имен узлов, IP-адресов и MAC-адресов) сетевых устройств, ассоциированных с используемым компьютером.

Предположим, что вы хотите связать IP-адрес 10.10.10.100 с MAC-адресом 80:1b:68:30:e9:74. Для этого вы можете воспользоваться утилитой arp следующим образом:

sudo arp -s 10.10.10.100 80:1b:68:30:e9:74

Данная команда сообщит ядру ОС о том, что узел с IP-адресом 10.10.10.100 имеет MAC-адрес 80:1b:68:30:e9:74.

Вы можете удалить строку таблицы кэша адресов с помощью аналогичной команды:

sudo arp -d 10.10.10.100

Обязательно воспользуйтесь командой man arp для ознакомления с дополнительной информацией, касающейся данной утилиты.

hostname

Имя узла используется для идентификации устройства в сети. Если вы исполните команду hostname без аргументов, будет выведено имя узла используемой машины. Вы можете изменить имя узла этой машины с помощью следующей команды:

hostname NAME

Здесь вместо NAME должно использоваться новое имя узла.

Единственный недостаток данной команды для изменения имени узла заключается в том, что после перезагрузки машины будет использоваться установленное на постоянной основе имя узла из файлов /etc/hostname и /etc/hosts. Для того, чтобы избежать подобного поведения, вам придется вручную модифицировать эти файлы, изменив имя узла в них. После модификаций файлов имя узла будет использоваться на постоянной основе и не будет изменяться даже после перезагрузки системы.

Остановка/запуск/перезапуск службы поддержки сети

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

  • sudo service networking stop
  • sudo service networking start
  • sudo service networking restart

В CentOS/RHEL/Fedora/openSUSE для этой цели могут использоваться следующие команды:

  • service network stop
  • service network start
  • service network restart

И это все... теперь вы можете беспрепятственно останавливать, запускать и перезапускать службу поддержки сети вашей системы.

Дополнительная информация

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