Broadcast что это linux
Как использовать команду ip в Linux
Вы можете настроить IP-адреса, сетевые интерфейсы и правила маршрутизации на лету с помощью команды Linux ip. Мы покажем вам, как вы можете использовать эту современную замену классическому (и теперь устаревшему) ifconfig.
Как работает команда ip
С помощью команды ip вы можете настроить способ, которым компьютер Linux обрабатывает IP-адреса, контроллеры сетевых интерфейсов (NIC) и правила маршрутизации. В дополнении к этому, изменения вступают в силу немедленно — вам не нужно перезагружаться. Команда ip может сделать намного больше, чем это, но в этой статье мы сосредоточимся на наиболее распространённых случаях использования.
Команда ip имеет много подкоманд, каждая из которых работает с типом объекта, таким как IP-адреса, маршруты и т.д. В свою очередь, имеется много вариантов для каждого из этих объектов. Именно это богатство функциональности даёт команде ip гранулярность, необходимую для выполнения сложных задач.
Объекты, с которыми работает команда ip
Общий синтаксис команды ip следующий:
ОБЪЕКТАМИ в команде ip являются:
Мы рассмотрим следующие объекты:
Использование ip с адресами
Очевидно, что сначала вы должны знать настройки, с которыми вы имеете дело. Чтобы узнать, какие IP-адреса у вашего компьютера, используйте команду ip с объектом address. Действием по умолчанию является show, которое перечислит IP-адреса. Вы также можете опустить show и сокращать написание address до «addr» или даже до «a».
Все следующие команды эквивалентны:
Мы видим два IP-адреса, а также много другой информации. IP-адреса связаны с контроллерами сетевого интерфейса (NIC). Команда ip пытается быть полезной и предоставляет много информации об интерфейсе.
Первый IP-адрес — это (внутренний) петлевой адрес, используемый для связи внутри компьютера. Второй фактический (внешний) IP-адрес, который компьютер имеет в локальной сети (LAN).
Кроме петлевого интерфейса lo, также имеются следующие:
Давайте разберём всю информацию, которую мы получили по первому интерфейсу:
Физические интерфейсы, как мы покажем ниже, более интересны. Рассмотрим два физических интерфейса: один из них не задействован (провод не подключён), а второй используется (беспроводной Wi-Fi адаптер).
Неиспользуемый сетевой интерфейс:
Используемый сетевой интерфейс:
Отображать только адреса IPv4 или IPv6
Если вы хотите ограничить вывод IP-адресами версии 4, вы можете использовать опцию -4 следующим образом:
Если вы хотите ограничить вывод IP-адресами версии 6, вы можете использовать опцию -6 следующим образом:
Команда ifconfig очень долго использовалась для настройки сети в операционных системах семейства Linux. С помощью нее вы можете включать или выключать сетевые интерфейсы, настраивать их параметры, переключать режимы и многое другое. Потом была разработана утилита ip, которая содержит больше функций, и имеет совсем другой синтаксис.
Установка ifconfig
С появлением утилиты ip, ifconfig была удалена из многих дистрибутивов. Но в большинстве она все еще поставляется по умолчанию. Установка ifconfig в Ubutnu выполняется командой:
sudo apt install net-tools
Синтаксис ifconfig
Утилита ifconfig имеет очень простой синтаксис при вызове без параметров, она возвратит список подключенных к системе сетевых интерфейсов и их характеристики, например, ip адрес, адрес шлюза, размер пакета, частоту для беспроводных сетей и другие параметры. Если указать интерфейс и нужные команды, то можно изменять различные настройки интерфейса. Вот сам синтаксис:
$ ifconfig опции интерфейс команда параметры адрес
Параметры и адрес необязательны и зависят от используемой команды. А опции влияют на поведение утилиты более глобально. Опций всего несколько, рассмотрим их:
Обратите внимание, что для использования утилиты вам понадобятся права суперпользователя. А теперь давайте рассмотрим несколько примеров.
Примеры использования ifconfig
Для начала давайте просмотрим список интерфейсов, подключенных к вашей системе и активированных в данный момент. Для этого достаточно выполнить команду без параметров:
Вы можете вывести только информацию про определенный интерфейс, например, про eth0:
sudo ifconfig eth0
Чтобы включить интерфейс используется команда ifconfig eth0 up:
sudo ifconfig eth0 up
sudo ifconfig eth0 down
Вы можете получить более подробную информацию об ошибках с помощью опции -v:
Включить поддержку протокола ARP для интерфейса:
sudo ifconfig eth0 arp
Отключить поддержку ARP:
Включить неразборчивый режим, в котором интерфейс принимает все, проходящие через него пакеты:
sudo ifconfig eth0 promisc
С помощью команды netmask вы можете установить маску сети для интерфейса:
sudo ifconfig eth0 netmask 255.255.255.0
Чтобы добавить ip адрес для интерфейса используйте просто укажите его после интерфейса:
sudo ifconfig eth0 192.168.1.11
Команда broadcast позволяет установить широковещательный адрес:
sudo ifconfig eth0 broadcast 192.168.1.255
С помощью команды hw вы можете установить аппаратный адрес или так называемый, MAC адрес. Здесь, кроме самого адреса нужно указать тип сети. Это ether для проводного подключения Ethernet, ax25 (AMPR AX.25), ARCnet и netrom (AMPR NET/ROM). Например:
sudo ifconfig eth0 hw ether BC:AE:C5:BE:8B:B7
С помощью mtu вы можете изменить максимальный размер пакета:
sudo ifconfig eth0 mtu 1000
Это были все основные примеры. В отличие от ip, команда ifconfig не содержит всех необходимых возможностей для полноценной настройки сети и поэтому вам еще придется использовать такие утилиты, как route или arp.
Фактически, настройка ifconfig сети будет выполняться в несколько команд. Допустим, мы будем настраивать интерфейс eth0:
sudo ifconfig eth0 up
$ sudo ifconfig eth0 add 192.168.1.10
$ sudo ifconfig eth0 netmask 255.255.255.0
$ sudo ifconfig eth0 broadcast 192.168.1.255
$ sudo route add default gw 192.168.1.1
Здесь мы используем ip адрес для компьютера 192.168.1.10, сетевую маску 255.255.255.0 и шлюз для выхода в сеть 192.168.1.1. После этих настроек осталось указать сервер DNS и интернет должен работать.
Выводы
Настройка сети в Linux – команда ifconfig
В системах Linux, как и в остальных операционных системах (ОС) предусмотрены широкие возможности для организации сетей. В частности, необходимо конфигурировать сетевые интерфейсы для построения сети на сетевом уровне. С этой задачей успешно справляется команда ifconfig. Она предназначена для выполнения отключений/подключений сетевых интерфейсов, а также указания IP-адресов, масок подсетей, протоколов и других параметров работы сети.
Как работает ifconfig
При старте системы, на этапе начальной загрузки (в большинстве случаев) выполняется запуск ifconfig. При этом в качестве аргументов используются данные из конфигурационного файла по-умолчанию, либо переопределённые администратором/пользователем.
Если при запуске команды, получите ошибку «bash: ifconfig: команда не найдена», то необходимо установить пакет net-tools
В данном выводе флаг RUNNING указывает, что eth1 является активным — т. е. имеет активные соединения и пропускает трафик. Флаг BROADCAST означает широковещательное соединение. Другими важными сведениями являются IP-адреса в семействах протоколов IPv4 (inet), IPv6 (inet6), подсеть — netmask, а также диапазон широковещательного соединения broadcast. Для анализа активности служат строки RX/TX.
Синтаксис и основные опции
В большинстве UNIX-подобных систем (в том числе и Linux) команда ifconfig имеет следующий синтаксис:
Так, например, следующая команда:
задаст IP-адрес 192.168.0.100 для устройства eno1, используемого соответствующей сетевой картой, назначит подсеть для данного узла с помощью опции netmask и задействует его — опцией up. В данном случае параметр [семейство] не задан, т. к. по-умолчанию используется inet – протокол IPv4. Для одного интерфейса можно задавать несколько протоколов, но конфигурировать их нужно по отдельности. В качестве адреса можно также использовать и имена узлов. Опция up в данном примере задана явно, хотя при назначении адреса его активация/включение происходит по-умолчанию. Для отключения используется опция down.
Для команды ifconfig существует много опций и многие из них требуют дополнительных параметров, которые вводятся сразу после имени опции через символ пробела. Вот некоторые из них:
Роутинг и policy-routing в Linux при помощи iproute2
ip route
Для настройки роутинга служит команда ip route. Выполненная без параметров, она покажет список текущих правил маршрутизации (не все правила, об этом чуть позже):
Так будет выглядеть роутинг при использовании на интерфейсе eth0 IP-адреса 192.168.12.101 с маской подсети 255.255.255.0 и шлюзом по умолчанию 192.168.12.1.
Мы видим, что трафик на подсеть 192.168.12.0/24 уходит через интерфейс eth0. proto kernel означает, что роутинг был задан ядром автоматически при задании IP интерфейса. scope link означает, что эта запись является действительной только для этого интерфейса (eth0). src 192.168.12.101 задает IP-адрес отправителя для пакетов, попадающих под это правило роутинга.
Трафик на любые другие хосты, не попадающие в подсеть 192.168.12.0/24 будет уходить на шлюз 192.168.12.1 через интерфейс eth0 ( default via 192.168.12.1 dev eth0 ). Кстати, при отправке пакетов на шлюз, IP-адрес назначения не изменяется, просто в Ethernet-фрейме в качестве MAC-адреса получателя будет указан MAC-адрес шлюза (часто даже специалисты со стажем путаются в этом моменте). Шлюз в свою очередь меняет IP-адрес отправителя, если используется NAT, либо просто отправляет пакет дальше. В данном случае используются приватный адрес (192.168.12.101), так что шлюз скорее всего делает NAT.
А теперь залезем в роутинг поглубже. На самом деле, таблиц маршрутизации несколько, а также можно создавать свои таблицы маршрутизации. Изначально предопределены таблицы local, main и default. В таблицу local ядро заносит записи для локальных IP адресов (чтобы трафик на эти IP-адреса оставался локальным и не пытался уходить во внешнюю сеть), а также для бродкастов. Таблица main является основной и именно она используется, если в команде не указано какую таблицу использовать (т.е. выше мы видели именно таблицу main). Таблица default изначально пуста. Давайте бегло взглянем на содержимое таблицы local:
ip rule
Как же ядро выбирает, в какую таблицу отправлять пакеты? Все логично – для этого есть правила. В нашем случае:
Простой пример
Теперь рассмотрим простой пример. У нас есть некий шлюз, на него приходят пакеты с IP 192.168.1.20. Пакеты с этого IP нужно отправлять на шлюз 10.1.0.1. Чтобы это реализовать делаем следующее:
Создаем таблицу с единственным правилом:
Создаем правило, отправляющее нужные пакеты в нужную таблицу:
Как видите, все просто.
Доступность сервера через несколько аплинков
Теперь более реалистичный пример. Имеется два аплинка до двух провайдеров, необходимо обеспечить доступность сервера с обоих каналов:
В качестве маршрута по умолчанию используется один из провайдеров, не важно какой. При этом веб-сервер будет доступен только через сеть этого провайдера. Запросы через сеть другого провайдера приходить будут, но ответные пакеты будут уходить на шлюз по умолчанию и ничего из этого не выйдет.
Решается это весьма просто:
Определяем таблицы:
Думаю теперь уже объяснять смысл этих строк не надо. Аналогичным образом можно сделать доступность сервера по более чем двум аплинкам.
Балансировка трафика между аплинками
Делается одной элегантной командой:
Использование маркировки пакетов при помощи iptables
Допустим нам нужно, чтобы пакеты на 80 порт уходили только через 11.22.33.1. Для этого делаем следующее:
Первой командой маркируем все пакеты, идущие на 80 порт. Второй командой создаем таблицу маршрутизации. Третьей командой заворачиваем все пакеты с указанной маркировкой в нужную таблицу.
Опять же все просто. Рассмотрим также использование модуля iptables CONNMARK. Он позволяет отслеживать и маркировать все пакеты, относящиеся к определенному соединению. Например, можно маркировать пакеты по определенному признаку еще в цепочке INPUT, а затем автоматически маркировать пакеты, относящиеся к этим соединениям и в цепочке OUTPUT. Используется он так:
Пакеты, приходящие с eth0 маркируются 2, а с eth1 – 4 (строки 1 и 2). Правило на третьей строке проверяет принадлежность пакета к тому или иному соединению и восстанавливает маркировки (которые были заданы для входящих) для исходящих пакетов.
Надеюсь изложенный материал поможет вам оценить всю гибкость роутинга в Linux. Спасибо за внимание 🙂
ifconfig
Введение
ifconfig (сокр. interface configuration) — команда UNIX и UNIX‐подобных операционных систем.
Современной альтернативой ifconfig является ip
Синтаксис
Описание
Используется для назначения сетевого адреса, изменение настроек параметров сетевого адаптера и IP протокола.
Она используется в большинстве *nix систем на этапе загрузки операционной системы для настройки сетевых интерфейсов. После этого она обычно используется только при отладке, настройке или восстановлении системы.
В современных дистрибутивах Linux утилита ifconfig считается устаревшей и заменена утилитой iproute2, основные функции настроек сетевого интерфейса получила утилита ip из состава iproute2. Для Unix систем не потеряло актуальности.
Семейство протоколов
Если первым после имени интерфейса идет имя поддерживаемого семейства адресов, это семейство адресов используется для декодирования и выдачи всех адресов протокола.
В настоящее время поддерживаются семейства адресов inet (TCP/IP, используется по умолчанию), inet6 (IPv6), ax25 (AMPR Packet Radio), ddp (Appletalk Phase 2), ipx (Novell IPX) и netrom (AMPR Packet Radio).
Опции
Примеры
# ifconfig eth0 inet 192.168.10.15 netmask 255.255.255.0
# ifconfig eth0 up
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:18:F3:BE:18:1E inet addr:192.168.10.15 Bcast:192.168.10.255 Mask:255.255.255.0 inet6 addr: fe80::218:f3ff:febe:181e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:39456 errors:0 dropped:0 overruns:0 frame:0 TX packets:45730 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:25457904 (24.2 Mb) TX bytes:6540945 (6.2 Mb) Interrupt:20 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:182 errors:0 dropped:0 overruns:0 frame:0 TX packets:182 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:12812 (12.5 Kb) TX bytes:12812 (12.5 Kb) #
Установка
ifconfig далеко не всегда установлен по умолчанию.
Про установку в Debian можете прочитать в статье
Если коротко, то для RedHat/CentOS/Rocky нужно выполнить