Broadcast linux что это

Обновлено: 07.07.2024

Ядро Linux - очень гибкая вещь, позволяющая настроить очень много параметров. Такие параметры, как поддерживаемые устройства и функции настраиваются при сборке ядра. Но сегодня не будет рассматриваться компиляция ядра Linux. Мы поговорим о более тонкой настройке параметров ядра на лету, прямо во время его работы.

Да, мы не можем включать добавлять неподдерживаемые модули и драйвера устройств, но мы можем настроить такие параметры ядра Linux, как особенности работы процессора, памяти, виртуального пространства памяти, планировщика ядра, сетевой стек и многое другое. Все эти настройки доступны через файловую систему proc. Мы рассматривали подробно ее в предыдущей статье, теперь же остановимся только на директории /proc/sys, с помощью которой мы и будем настраивать ядро.

Как выполняется настройка?

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

echo "1" > /proc/sys/net/ipv4/ip_forward

Значение 1 будет записано в файл ipv4_forward. Но измененные таким способом параметры не сохраняются после перезагрузки. Перед тем как рассматривать как сохранить параметры ядра linux из proc рассмотрим еще один способ их модификации.

Для работы с параметрами ядра есть утилита sysctl. Она представляет все параметры в виде переменных. Имена этих переменных соответствуют адресу файла в папке /proc/sys только слеш заменен точкой. Например:

Вы можете установить значение параметра такой командой:

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

sysctl -w net.ipv4.ip_forward=1

Вы можете также сразу посмотреть все доступные переменные с помощью опции -a:

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

  • /run/sysctl.d/*.conf
  • /etc/sysctl.d/*.conf
  • /usr/local/lib/sysctl.d/*.conf
  • /usr/lib/sysctl.d/*.conf
  • /lib/sysctl.d/*.conf
  • /etc/sysctl.conf

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

* Applying /boot/sysctl.conf-4.1.21-14-default .
kernel.hung_task_timeout_secs = 0
kernel.msgmax = 65536
kernel.msgmnb = 65536
kernel.shmmax = 0xffffffffffffffff
kernel.shmall = 0x0fffffffffffff00
vm.dirty_ratio = 20

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

Настройка ядра Linux

abi.vsyscall32

Если установлено 1, разрешает выполнение 32 битных программ в 64 битной системе. По умолчанию включено, можете отключить, а затем попробовать запустить, например, skype.

debug.exception-trace

При возникновении ошибки в ядре выводить значения регистров процессора и стек вызовов процедур. По умолчанию включено.

dev.cdrom.autoclose

Ваш CDROM будет автоматически закрыт при попытке его монтирования, по умолчанию отключено.

dev.cdrom.autoeject

CDROM будет открыт после размонтирования содержащегося там диска с помощью команды umount.

dev.hpet.max-user-freq

Максимальная частота генерации прерываний от системного таймера High Precision Event Timer (HPET), который пришел на замену таймеру реального времени RTC. По умолчанию 64.

fs.aio-nr

Количество асинхронных операций ввода и вывода в вашей файловой системе.

fs.file-max

fs.inotify.max_queued_events

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

fs.inotify.max_user_instances

Максимальное количество объектов inotify, которые может создать один пользователь.

fs.inotify.max_user_watches

Максимальное количество файлов и директорий, за которыми может наблюдать один объект inotify.

cad_pid

PID процесса, который получит сигнал, если будет нажато сочетание клавиш Ctrl+Alt+Del

kernel.ctrl-alt-del

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

kernel.domainname

Позволяет установить доменное имя NIS (Network Internet Services) и YP (Yellow Pages). Но не путайте это доменное имя с DNS, это совсем разные вещи.

kernel.hostname

Имя вашего компьютера. Это самый простой способ изменить имя компьютера прямо сейчас, без перезагрузки.

kernel.modules_disabled

Позволяет отключить загрузку модулей ядра.

kernel.panic

Указывает количество секунд после ошибки в ядре (kernel panic) до перезагрузки.

kernel.pid_max

Максимальное значение PID процесса. Когда PID достигает этого значения, ядро переходит опять к минимальному. Значения больше этого не выделяются.

kernel.random.boot_id

Этот файл доступен только для чтения и содержит уникальный, случайный идентификатор загрузки. Генерируется для каждой загрузки.

kernel.random.uuid

При каждом запросе генерирует случайный UUID. Тоже доступен только для чтения.

kernel.randomize_va_space

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

kernel.sysrq

Позволяет включить или отключить управление ядром с помощью SysRQ. Доступны такие параметры:

kernel.threads-max

Максимальное количество запущенных потоков для процессов.

net.ipv4.icmp_echo_ignore_all

Если включено, ядро будет игнорировать все icmp запросы. Рекомендуется для защиты от DDOS атак.

net.ipv4.icmp_echo_ignore_broadcasts

Так же, как и в предыдущем варианте, только игнорироваться будут только широковещательные icmp запросы.

net.ipv4.ip_default_ttl

Максимальное количество узлов, через которые может пройти отправленный пакет перед тем, как достигнет цели.

net.ipv4.ip_forward

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

net.ipv4.ip_local_port_range

Диапазон локальных портов, которые могут быть использованы вашими программами.

net.ipv4.tcp_rfc1337

Установите 1 чтобы защитить компьютер от атаки TCP TimeWait.

net.ipv4.tcp_fin_timeout

Таймаут ожидания завершения соединения после отправки пакета FIN. Рекомендовано 15.

net.ipv4.tcp_keepalive_time

Поддерживать соединение активным определенное время, например, 300 секунд. По истечении этого времени TCP соединение будет разорвано.

net.core.rmem_default

Указывает размер по умолчанию буфера для сокета получения данных по сети.

net.core.rmem_max

Максимальный размер буфера сокета для получения данных по сети.

net.core.wmem_default

Размер сокета по умолчанию для отправки данных по сети.

net.core.wmem_max

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

net.ipv4.tcp_rmem

Количество памяти, доступной для работы TCP.

vm.dirty_background_ratio

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

vm.dirty_ratio

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

vm.laptop_mode

Функция laptop mode позволяет не сразу записывать данные на жесткий диск после запроса, а хранить их указанное время в оперативной памяти. Может быть полезно если вы экономите заряд батареи и не хотите, чтобы жесткий диск всегда вращался.

vm.swappiness

Устанавливает процент свободной памяти, по достижении которого данные начинают переноситься на swap раздел, для систем с большим количеством памяти рекомендовано значение 10.

Выводы

Мы рассмотрели далеко не все параметры ядра linux, здесь описаны лишь самые интересные из них. Более подробную информацию и еще больше переменных вы можете найти в официальной документации по ядру Linux. И будьте осторожны, конфигурация ядра Linux - дело серьезное. Если я упустил какой-то важный параметр, напишите в комментариях!

Нужно в целях отладки сгенерить много разнообразного broadcast трафика в локальной сети. Чем это удобнее всего сделать?

Да, я знаю, что эпоха локальных сетей прошла, и что даже с учётом этого использование «серверного» решения на базе irc или xmpp было бы лучше.

Обычно в таких приложениях ещё была доска объявлений, но её отсутствие не критично.

Добрый день! Пишу ПО (c++, qt), работающее на «железке» под управлением Linux. Данная железяка работает в сети udp/ip. Проблема в следующем: настройка интерфейса на железке следующая: ifconfig eth2 10.1.1.1 netmask 255.0.0.0 broadcast 255.255.255.255 up При такой настройке железяка не принимает broadcast пакетов от других устройств в сети. Подскажите, в чем может быть проблема, куда копать, что читать.

Перемещено shell-script из admin

Всем доброго дня! У нас есть сеть устройств на Debian (RaspberryPi) с программой которая транслирует радио с интернета на аукс. В общем говоря просто проигрыватели. Ищу программу которую можно ли бы было ставить изначально на пихи с реализацией: На другом Windows/Linux ПК в томже свитче но с другой подсетью запускаешь ПО которое находит все пихи(linux устройства) в сети по MAC адресу (даже если они находятся в другой подсети без шлюза)(как я понимаю бродкастом) и при вводе логина пароля (как я понимаю системы) можно было бы сменить IP адрес, маску и шлюз пихи(linux устройства) на корректные. Проблема в том что обычно при построении объектов пихи ставятся в разноброс, а отдел программистов не всегда поставляет приставки с корректными адресами. *ну или хотябы ПО которое будет также ставится на линукс в виде клиента, чтобы Windows машина видела по МАКам пихи и выдавала их адреса (чтобы можно было ПК вогнать в туже подсеть и подключившись по SSH поменять адрес. Всем заранее огромное спасибо!

Почему UDP пакеты, отправленные на 255.255.255.255 с клиента не видны на остальных клиентах?
На сервере эти пакеты видны, но они похоже никуда больше не идут.
Что и куда нужно прописать, чтобы остальные клиенты внутри VPN получали эти пакеты?
Или оно не так работает?
Как минимум клиенты не видят друг друга в игре по LAN.
Т.е. пакеты с каждого клиента на сервер уходят и тишина.
Логи tcpdump одного из клиентов на сервере на интерфейсе wg0 .

Если запустить тот же hamachi, то через него почему-то работает.

Пробовал настроить и на адрес конкретного хоста и на броадкаст, в локалке работают оба варианта, через инет - не пашет.

Провайдер зуб даёт, что они ничего не фильруют.

Есть ли для LineageOS или Android'а какой-то аналог OBS чтобы вещать изображение с камеры будто я это делаю с настольной ЭВМ?

Подскажите кто знает, почему то не бегают broadcast пакеты от dlna(minidlna) сервера через OpenVPN. На что смотреть уже не знаю.

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

Но многие пользователи привыкли использовать ifconfig, тем более, что ее синтаксис более простой. Прочитать про утилиту ip вы можете в статье утилита ip в Linux. В этой же статье мы рассмотрим как используется ее более старый аналог - утилита ifconfig linux.

Установка ifconfig

С появлением утилиты ip, ifconfig была удалена из многих дистрибутивов. Но в большинстве она все еще поставляется по умолчанию. Установка ifconfig в Ubutnu выполняется командой:

sudo apt install net-tools

sudo pacman -S net-tools

Синтаксис ifconfig

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

$ ifconfig опции интерфейс команда параметры адрес

Интерфейс - это сетевой интерфейс, о котором вы хотите посмотреть информацию или изменить его параметры. Все это можно сделать с помощью команд. Давайте рассмотрим основные из них:

  • up - включить интерфейс;
  • down - выключить интерфейс;
  • (-)arp - включить или выключить использование протокола ARP для интерфейса;
  • (-)promisc - включить или выключить неразборчивый режим для интерфейса;
  • (-)allmulti - включить или выключить режим multicast;
  • metric - изменить параметр metric;
  • mtu - изменить максимальный размер пакета;
  • netmask - установить маску сети;
  • add - добавить ip адрес для интерфейса;
  • del - удалить ip адрес интерфейса;
  • media - установить тип внешнего протокола;
  • [-]broadcast - установить широковещательный адрес или отключить эту функцию;
  • hw - установить MAC адрес для интерфейса;
  • txqueuelen - размер очереди интерфейса;

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

  • -a - применять команду ко всем интерфейсам, например, полезно, если вы хотите отключить или включить все сетевые интерфейсы;
  • -s - вывести краткий список интерфейсов.

Обратите внимание, что для использования утилиты вам понадобятся права суперпользователя. А теперь давайте рассмотрим несколько примеров.

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

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


Вы можете вывести только информацию про определенный интерфейс, например, про eth0:

sudo ifconfig eth0

Чтобы посмотреть список интерфейсов с минимальной информацией о них используйте опцию -s:

sudo ifconfig -s


С помощью опции -a вы можете вывести все интерфейсы, даже те, которые сейчас отключены:

sudo ifconfig -a


Чтобы включить интерфейс используется команда ifconfig eth0 up:

sudo ifconfig eth0 up


Чтобы отключить - down:

sudo ifconfig eth0 down


Вы можете получить более подробную информацию об ошибках с помощью опции -v:

sudo ifconfig -v


Включить поддержку протокола ARP для интерфейса:

sudo ifconfig eth0 arp


Отключить поддержку ARP:

sudo ifconfig eth0 -arp


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

sudo ifconfig eth0 promisc

А чтобы отключить:

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 и интернет должен работать.

Выводы

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

Привет, друг! Я уже неоднократно говорил, но продолжу повторять, что любой хакер или специалист по информационной безопасности (называй как хочешь) должен, просто обязан знать Linux. Причин тому миллион, и в очередной раз останавливаться на этом не вижу смысла. А раз мы определились, что Linux важен, давай продолжим изучать Linux. В прошлый раз мы разобрались как работать с файлами и каталогами, если ты пропусти этот материал, он ЗДЕСЬ. А теперь я предлагаю разобраться как в Linux работать с сетями. В этой статье будет только практическая часть вопроса, если, вдруг у тебя присутствует пробел в теоретических знаниях основ работы сетей, то ознакомься с нашими материалами:

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

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

lshw

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

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

Суть работы этой утилиты заключается в отправке ICMP пакетов удалённому серверу, а после возврата пакета, ping подсчитывает время которое понадобилось ему, чтобы дойти до сервера и вернуться.


В результате работы утилиты ping мы видим что:

  • Мы можем установить соединение с сервером
  • DNS работает корректно (имя запрашиваемого сервера было успешно преобразовано в ip)
  • Соединение устойчиво, об этом говорит отсутствие пропусков в параметре icmp_seq
  • Значение time говорит нам сколько времени понадобилось пакету чтобы добраться до хоста и обратно (именно этот параметр часто называют скоростью пинга)

Traceroute

И очень часто в ответ ты увидишь звёздочки:

tracerout

Это не значит, что всё пропало, это значит, что фаервол на сервере заблокировал все лишние пакеты, и соответственно трассировка UDP пакетами не работает, но сработает трассировка ICMP пакетами, чтобы её выполнить надо добавить параметр -I:


Также в четвертой строке мы можем увидеть ip адрес нашего провайдера, а если сделать ещё парочку трассировок на другие адреса:


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

Ifconfig

Чтобы получить общую информацию о сетевых интрефейсах, проще всего использовать утилиту:

ifconfig

После ввода этой команды мы увидим на экране достаточно большое количество технической информации, распределенной на группы в зависимости от типа сетевого интерфейса:

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

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

Помимо ifconfig общую информацию о сетевых интерфейсах можно получить использовав утилиту ip (более новая и в некоторых моментах более функциональная, чем ifconfig):

ip l

Чтобы получить более подробную информацию о сетевых интерфейсах, необходимо выполнить команду (сведения аналогичны полученным от ifconfig) :

ip a

Иногда возникает необходимость увидеть маршруты в таблице маршрутизации, для этого также используется утилита ip:


Здесь мы видим ip нашего маршрутизатора, ip нашего компьютера и в какой подсети он находится.

Чтобы отключить какой-либо интерфейс, вводим команду:

Если возникла необходимость сменить ip адрес, сделать это можно использовав утилиту ifconfig, указав какому интерфейсу, какой ip мы хотим назначить;


Также можно задать не только ip, но и подсеть и широковещательный адрес (можно задавать каждый параметр по отдельности):

замена ip, netmask. broadcast

замена mac

Контроль состояния сети

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


Если ввести команду netstat без каких-либо дополнительных параметров, то мы увидим список процессов для которых установлены сетевые соединения, с адресом, портом, типом соединения, службой и количеством запросов в очереди:

netstat

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

netstat -lpn

Чтобы получить информацию о таблице маршрутизации, необходимо использовать параметр r:


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

Читайте также: