Работа с сетью в Linux
Перейти к навигации
Перейти к поиску
Параметры
Проверка порта tcp без использования утилит
timeout 1 bash -c '(echo > /dev/tcp/127.0.0.1/22) >/dev/null 2>&1' && echo up || echo down
Управление параметрами скорость, дуплекс
IF=<interface_name> # вывести текущие параметры speed, duplex, link status ethtool $IF # установить автоматическое определение параметров (по умолчанию) ethtool -s $IF autoneg on # задать параметры вручную ethtool -s $IF speed 100 duplex half autoneg off # Если возникает ошибка # Cannot set new settings: Operation not supported # то проблема в драйвере или сетевой карте, ищите карту или драйвер, которые поддерживают изменение этих параметров
RHEL 7,8,9
# изменение конфигурации в интерактивном режиме nmtui # nmcli - утилита управления NetworkManager-ом в командном режиме # перезагрузка конфигурации сети (конфигурация интерфейсов при этом не обновляется) systemctl restart NetworkManager # выключение и включение сети (перегружается конфигурация интерфейсов) nmcli networking off; nmcli networking on
RHEL 6
# каталог скриптов конфигурации сети cd /etc/sysconfig/network-scripts
Проблема при смене адаптера
# ошибка: Device eth0 does not seem to be present # 1-ый способ решения rm /etc/udev/rules.d/70-persistent-net.rules reboot now # при старте системы, сгенерируется новый файл правил, интерфейс привяжется к новому сетевому адаптеру # 2-ой способ решения (без перезагрузки) # определение MAC адреса адаптера ip link show # ручная привязка к правильному MAC через файл конфигурации интерфейса vi /etc/sysconfig/network-scripts/ifcfg-eth0 HWADDR=MAC ADDRESS # перезапуск интерфейса ifdown eth0; ifup eth0
Маршрутизация, route policy
Для работы route policy необходимо, чтобы ядро Linux было собрано с соответствующим опциями.
# список таблиц маршрутизации cat /etc/iproute2/rt_tables # вывод заданной таблицы маршрутизации ip route show table <имя_или_номр_таблицы_маршрутизации> # пример создания новой таблицы маршрутизации с номером 120 ip route add default via 10.1.0.1 table 120 # вывод списка правил маршрутизации ip rule # пример добавления правила, направляющего трафик в таблицу с номером 120 ip rule add from 192.168.1.20 table 120
Проблема при подключении двух интерфейсов к одной подсети
Когда два интерфейса имеют разные IP и находятся в одной подсети, то происходит следующее
- на все интерфейсы прилетает arp запрос, я такой то ip, кто имеет такой-то ip?
- хосту нужно сформировать arp ответ на ip спрашивающего
- выполняется маршрутизация на ip спрашивающего и выбирается интерфейс по таблице маршрутизации
- arp ответ отправляется на выбранный интерфейс
- если разрешено отправлять arp ответы с любого интерфейса (по умолчанию), то ответ уходит с выбранного интерфейса с его MAC адресом
- получаем ситуацию, когда все IP по факту работают через интерфес имеющий минимальный вес в локальной таблице маршрутизации и все ответы уходят с одного MAC адреса
- если разрешено отправлять arp ответы только с интерфейса к которому привязан запрашиваемый ip адрес, то arp ответ блокируется, т.к. маршрутизация выбрала не тот интерфейс, соответственно L3 для данного интерфейса не работает
Решения пока не нашел, нужно разобраться с параметрами для arp
# запрет arp ответа с любого интерфейса (по умолчанию 0) sysctl -w net.ipv4.conf.all.arp_ignore=2 # есть параметры управляющие arp ответами # возможно приведенная ниже конфигурация будет работать # нужно разобраться подробнее и понять логику этих параметров net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.all.arp_announce=2 net.ipv4.conf.all.arp_filter=0 net.ipv4.conf.eth0.arp_filter=1 net.ipv4.conf.eth1.arp_filter=1 net.ipv4.conf.eth2.arp_filter=1
Мониторинг сетевой нагрузки на интерфейсах
sar -n DEV 3 10