Следующая новость
Предыдущая новость

Ядерные приколы. Осваиваем необычные фичи канального уровня в Linux

27.08.2020 16:12

Содержание статьи

  • Используем ethtool
  • «Скрытая» проводная сеть
  • Программные мосты в Linux
  • Возводим мосты
  • Делаем прозрачный файрвол
  • Подменяем MAC проходящему трафику
  • Заключение

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

Используем ethtool

Сначала рассмотрим утилиту для общения с сетевыми картами на самых низких уровнях — ethtool.

С помощью команды ip можно просмотреть и поменять почти все, что касается сетевого стека ядра, но, если речь идет об аппаратной части самой карты, тут без ethtool не обойтись.

Например, все мы знаем, что MAC-адрес сетевой карты легко поменять.

$ ip link show eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether 00:08:a2:0a:52:cd brd ff:ff:ff:ff:ff:ff

$ sudo ip link set dev eth0 address 00:aa:bb:cc:dd:ee

$ ip link show eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether 00:aa:bb:cc:dd:ee brd ff:ff:ff:ff:ff:ff

С точки зрения ядра, у eth0 теперь новый адрес. Оригинальный адрес остался только в прошивке сетевой карты. В выводе ip его не найти, но ethtool способна заглянуть глубже.

$ ethtool --show-permaddr eth0
Permanent address: 00:08:a2:0a:52:cd

Многие сетевые карты поддерживают аппаратное ускорение некоторых функций, например вычисление контрольных сумм пакетов TCP и UDP. Просмотреть полный список функций и их состояние можно командой ethtool --show-features <interface>. Обычно все, что поддерживается, включено по умолчанию, но убедиться не будет лишним.

Если ты работаешь без физического доступа к оборудованию, наверняка тебе уже приходилось искать нужный порт. Традиционный метод — потушить порт (sudo ip link set <interface> down) и попросить напарника посмотреть, какой из портов потух. Но в ряде случаев найти физическое расположение порта можно без ущерба для трафика с помощью команды ethtool --identify <interface>. Она заставляет указанную карту моргать светодиодом, который отвечает за индикацию up/down. Увы, работает не со всеми моделями карт — помни, что бывает и ложноотрицательный результат.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

1 год

7690 р.

1 месяц

720 р.

Я уже участник «Xakep.ru»

Источник

Последние новости