Команда ifconfig

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

Базовый синтаксис команды выглядит следующим образом:

# ifconfig [параметры] [тэги и значения]

Утилита поддерживает малое количество классических параметров — вместо них для настройки сетевых интерфейсов используются тэги и значения. Так, утилита поддерживает параметр -a, позволяющий выводить информацию обо всех существующих в системе сетевых интерфейсах, в том числе деактивированных, параметр -s, позволяющий утилите выводить информацию в сжатом виде и параметр -v, позволяющий утилите генерировать самый подробный вывод. Для идентификации сетевых интерфейсов используются их имена, причем для того, чтобы узнать их, достаточно вызвать утилиту без каких-либо параметров. Если вас интересуют параметры определенного сетевого интерфейса, вы можете передать его имя утилите. Что касается тэгов, то самые важные из них приведены в таблице ниже:

Тэг Значение
interface <имя интерфейса> Используется для указания имени сетевого интерфейса, который нужно настроить
down Используется для деактивации сетевого интерфейса
[-]arp Используется для активации или деактивации (при использовании символа -) поддержки протокола ARP на уровне сетевого интерфейса
[-]allmulti Используется для активации или деактивации (при использовании символа -) режима приема пакетов многоадресной передачи на уровне сетевого интеррфейса
metric <N> Используется для установки метрики сетевого интерфейса
mtu <N> Используется для установки MTU сетевого интерфейса
netmask <адрес> Используется для установки маски сети сетевого интерфейса
add <адрес/длина префикса> Используется для добавления IP-адреса сетевого интерфейса
del <адрес/длина префикса> Используется для удаления IP-адреса сетевого интерфейса
irq <N> Используется для установки номера прерывания, используемого связанным с сетевым интерфейсом сетевым адаптером
[-]broadcast <адрес> Используется для установки адреса широковещательной передачи или отключения широковещательной передачи (при использовании символа -) на уровне сетевого интерфейса
hw <класс> <адрес> Используется для установки класса и MAC-адреса устройства. В качестве класса чаще всего используются идентификатор eth — Ethernet
multicast Используется для установки флага многоадресной передачи на уровне сетевого интерфейса
address <адрес> Используется для установки IP-адреса сетевого интерфейса
txqueuelen <длина> Используется для установки длины очереди отправки данных сетевого интерфейса

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

Получение информации обо всех сетевых интерфейсах

Для получения информации обо всех сетевых интерфейсах достаточно вызвать утилиту ifconfig без каких-либо параметров:

$ ifconfig
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.1.210 netmask 255.255.255.0 broadcast 192.168.1.255
        inet6 fe80::66b4:dd0b:f7a0:1671 prefixlen 64 scopeid 0x20<link>
        ether 8c:89:a5:57:76:ba txqueuelen 1000 (Ethernet)
        RX packets 215529 bytes 289774656 (289.7 MB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 124872 bytes 13403644 (13.4 MB)
        TX errors 0 dropped 0 overruns 0 carrier 1 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 netmask 255.0.0.0
        inet6 ::1 prefixlen 128 scopeid 0x10<host>
        loop txqueuelen 1000 (Локальная петля (Loopback))
        RX packets 2185 bytes 216046 (216.0 KB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 2185 bytes 216046 (216.0 KB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lxdbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 10.1.43.1 netmask 255.255.255.0 broadcast 0.0.0.0
        inet6 fe80::bc7b:75ff:fe25:5093 prefixlen 64 scopeid 0x20<link>
        inet6 fd42:b0ab:2996:eb04::1 prefixlen 64 scopeid 0x0<global>
        ether be:7b:75:25:50:93 txqueuelen 1000 (Ethernet)
        RX packets 0 bytes 0 (0.0 B)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 964 bytes 106641 (106.6 KB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlx003676021e61: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.1.127 netmask 255.255.255.0 broadcast 192.168.1.255
        inet6 fe80::a233:3812:a0bc:3f21 prefixlen 64 scopeid 0x20<link>
        ether 00:36:76:02:1e:61 txqueuelen 1000 (Ethernet)
        RX packets 800 bytes 729758 (729.7 KB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 84 bytes 10479 (10.4 KB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Очевидно, что утилита вывела информацию об интерфейсе проводной сети (enp3s0), интерфейсе локальной петли (lo), виртуальном интерфейсе LXD (lxdbr0) и интерфейсе беспроводной сети (wlx003676021e61).

Получение информации об отдельных сетевых интерфейсах

Для получения информации об отдельных интерфейсах следует передавать имена этих интерфейсов утилите ifconfig:

$ ifconfig wlx003676021e61
wlx003676021e61: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.1.127 netmask 255.255.255.0 broadcast 192.168.1.255
        inet6 fe80::a233:3812:a0bc:3f21 prefixlen 64 scopeid 0x20<link>
        ether 00:36:76:02:1e:61 txqueuelen 1000 (Ethernet)
        RX packets 4799 bytes 6135801 (6.1 MB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 390 bytes 41022 (41.0 KB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Очевидно, что в этот раз утилита вывела информацию лишь об интерфейсе беспроводной сети (wlx003676021e61).

Активация и деактивация сетевых интерфейсов

Для активации и деактиваци сетевых интерфейсов следует использовать тэги up и down. Для начала деактивируем интерфейс беспроводной сети:

$ sudo ifconfig wlx003676021e61 down
$ ifconfig wlx003676021e61
wlx003676021e61: flags=4098<BROADCAST,MULTICAST> mtu 1500
        inet 192.168.1.127 netmask 255.255.255.0 broadcast 192.168.1.255
        ether 00:36:76:02:1e:61 txqueuelen 1000 (Ethernet)
        RX packets 4811 bytes 6137185 (6.1 MB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 397 bytes 41671 (41.6 KB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Теперь среди флагов интерфейса нет флага UP — интерфейс деактиврован. Для активации интерфейса следует использовать тэг up:

$ sudo ifconfig wlx003676021e61 up
$ ifconfig wlx003676021e61
wlx003676021e61: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.1.127 netmask 255.255.255.0 broadcast 192.168.1.255
        ether 00:36:76:02:1e:61 txqueuelen 1000 (Ethernet)
        RX packets 4847 bytes 6140959 (6.1 MB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 467 bytes 51012 (51.0 KB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Среди флагов интерфейса снова появился флаг UP — интерфейс активрован.

Установка параметров сетевого интерфейса

Для установки параметров сетевого интерфейса должны использоваться соответствующие тэги с значениями. Так, для установки адреса, маски сети и широковещательного адреса достаточно использовать новый адрес, а также тэги netmask и broadcast с их значениями:

$ sudo ifconfig wlx003676021e61 192.168.1.125 netmask 255.255.255.224 broadcast 192.168.1.254
$ ifconfig wlx003676021e61
wlx003676021e61: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.1.125 netmask 255.255.255.224 broadcast 192.168.1.254
        ether 00:36:76:02:1e:61 txqueuelen 1000 (Ethernet)
        RX packets 4869 bytes 6143213 (6.1 MB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 498 bytes 54518 (54.5 KB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

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