В системах Linux, как и в остальных операционных системах (ОС) предусмотрены широкие возможности для организации сетей. В частности, необходимо конфигурировать сетевые интерфейсы для построения сети на сетевом уровне. С этой задачей успешно справляется команда ifconfig. Она предназначена для выполнения отключений/подключений сетевых интерфейсов, а также указания IP-адресов, масок подсетей, протоколов и других параметров работы сети.
Как работает ifconfig
При старте системы, на этапе начальной загрузки (в большинстве случаев) выполняется запуск ifconfig. При этом в качестве аргументов используются данные из конфигурационного файла по-умолчанию, либо переопределённые администратором/пользователем.
Если при запуске команды, получите ошибку «bash: ifconfig: команда не найдена», то необходимо установить пакет net-tools
yum install net-tools -y
Для указания самого сетевого интерфейса в команде ifconfig используются имена, состоящие из двух или трёх символов, за которыми следует цифра, например: ln0, lo, lan0, eth0, ie0, we0 и т. д., однако в современных Linux-дистрибутивах всё чаще встречаются и более длинные наименования сетевых интерфейсов. Интерфейс lo в Linux обозначает интерфейс с обратной связью. Чтобы узнать, какие в системе используются сетевые интерфейсы, достаточно просто дать команду ifconfig, но стоит помнить, что в этом случае будут выведены только активные или включенные сети, т. е. если, к примеру в системе отключен какой-либо сетевой интерфейс (модуль беспроводной связи Wi-Fi/Bluetooth, например), то он в этом случае выведен не будет. Для получения списка всех сетевых интерфейсов, известных системе с их настройками нужно использовать команду ifconfig -a. Чтобы получить сведения о конкретном интересующем интерфейсе, следует явно указать в команде ifconfig его наименование:
$ ifconfig eth0
В данном выводе флаг RUNNING указывает, что eth1 является активным — т. е. имеет активные соединения и пропускает трафик. Флаг BROADCAST означает широковещательное соединение. Другими важными сведениями являются IP-адреса в семействах протоколов IPv4 (inet), IPv6 (inet6), подсеть — netmask, а также диапазон широковещательного соединения broadcast. Для анализа активности служат строки RX/TX.
Синтаксис и основные опции
В большинстве UNIX-подобных систем (в том числе и Linux) команда ifconfig имеет следующий синтаксис:
ifconfig интерфейс [семейство] адрес опции . . .
Так, например, следующая команда:
ifconfig eno1 192.168.0.100 netmask 255.255.255.0 up
задаст IP-адрес 192.168.0.100 для устройства eno1, используемого соответствующей сетевой картой, назначит подсеть для данного узла с помощью опции netmask и задействует его — опцией up. В данном случае параметр [семейство] не задан, т. к. по-умолчанию используется inet – протокол IPv4. Для одного интерфейса можно задавать несколько протоколов, но конфигурировать их нужно по отдельности. В качестве адреса можно также использовать и имена узлов. Опция up в данном примере задана явно, хотя при назначении адреса его активация/включение происходит по-умолчанию. Для отключения используется опция down.
Для команды ifconfig существует много опций и многие из них требуют дополнительных параметров, которые вводятся сразу после имени опции через символ пробела. Вот некоторые из них:
Опция |
Назначение |
add |
Добавляет адрес для сетевого интерфейса. |
del |
Удаляет адрес для сетевого интерфейса. |
io_addr |
Устанавливает начальный адрес для ввода-вывода сетевого устройства. |
bootproto |
Задаёт способ получения IP-адреса. В качестве параметров используются static или dhcp. |
media |
Задаёт физический порт для использования сетевым устройством. Обычно в качестве значений используются 10base2 – коаксиальный Ethernet-кабель, 10baseT – витая пара до 10 Мбит/сек или AUX – внешний передатчик. |
up |
Включает указанный сетевой интерфейс или перезапускает его, если он был до этого отключен опцией down. |
down |
Отключает сетевой интерфейс, при этом вся информация о маршрутах, связанная с этим интерфейсом сохраняется. |
netmask |
Задаёт подсеть с помощью маски. |
pointopoint |
Используется для организации point-to-point соединений, в качестве параметра передаётся адрес. |
broadcast |
Задаёт широковещательный адрес. |
irq |
Задаёт номер прерывания для устройства сетевого интерфейса. |
metric |
Обычно используется для задания метрического значения в записи таблицы маршрутизации. |
mtu |
Задаёт максимальную длину передаваемого пакета (MTU), по-умолчанию равно 1500 для Ethernet и 296 для SLIP |
arp |
Позволяет использовать протокол ARP для поиска физического адреса устройства в сети. Включен по-умолчанию для широковещательных сетей. О выключенном ARP говорит флаг NOARP в выводе ifconfig. |
-arp |
Отключает использование ARP для выбранного интерфейса/устройства. |
promisc |
Заставляет выбранный интерфейс получать все пакеты, независимо от того, предназначены они для него или нет. Полезно для анализа сетевого трафика и выявления проблем с сетью. При этом удобно использовать утилиту tcpdump. При активации режима promiscuous в выводе ifconfig присутствует флаг PROMISC для данного интерфейса. |
-promisc |
Отключает режим promiscuous для сетевого интерфейса. |
allmulti |
Включает режим multicast, разрешая multicast-адреса. Этот режим позволяет обращаться к устройствам, которые могут находиться в разных подсетях — очень полезно при организации голосовой связи и конференций. Может не поддерживаться сетевой картой. |
hw |
Задаёт аппаратный (MAC) для сетевого устройства. Необходимо также указывать класс устройства: ether – для Ethernet, netrom – для AMPR NET/ROM, ax25 – для AMPR AX.25. Может не поддерживаться драйвером устройства. |
-allmulti |
Запрещает режим multicast. |
Ifconfig примеры
Включение и отключение сетевого интерфейса на примере eth0 и eno1:
$ ifconfig eth0 up
$ ifconfig eno1 down
Изменение параметра MTU для eth0:
$ ifconfig eth0 mtu 1000
Задание MAC-адреса для eth0:
$ ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF
Настройка PLIP-интерфейса для связи компьютера с IP-адресом 10.24.205.18 c компьютером, у которого IP-адрес 10.24.105.20:
$ ifconfig plip0 10.24.205.18 pointopoint 10.24.105.20
Назначение IP-адреса сетевой карте eth0:
$ ifconfig eth0 10.24.205.18
Снятие адреса с eth0:
$ ifconfig eth0 del 10.24.205.18
Задание IP-адреса, подсети, и широковещательного адреса для eth0:
$ ifconfig eth0 10.24.205.18 netmask 255.255.255.0 broadcast 10.24.205.10