Использование ethtool

ethtool — утилита для настройки сетевых интерфейсов в Linux.

Установить ethtool в Ubuntu/Debian можно командой:

sudo apt-get install ethtool

Посмотрим названия сетевых интерфейсов:

ifconfig -a

Переключимся на root, так как некоторые команды требуют повышенных привилегий:

sudo su

Пример просмотра настроек eth0:

ethtool eth0

Пример просмотра информации о драйвере сетевого интерфейса:

ethtool -i eth0

Просмотр статистики сетевого интерфейса:

ethtool -S eth0

Просмотр настроек автосогласования:

ethtool -a eth0

Мигание светодиода 3 секунды на указанном сетевом интерфейсе:

ethtool -p eth0 3

Тест сетевого интерфейса:

ethtool -t eth0 online/offline

Просмотр текущего и максимального размера TX и RX буферов:

ethtool -g eth0

Ручная установка скорости 100 Mb Full Duplex на указанном сетевом интерфейсе (указанные параметры сбросятся после перезапуска системы):

ethtool -s eth0 speed 100 duplex full

Просмотр краткой справки по ethtool:

ethtool -h

Смотрите также:
Настройка сети в Linux
Изменение TX и RX буферов сетевых интерфейсов в Linux
Дистанционное включение компьютера (Wake On LAN)

Изменение TX и RX буферов сетевых интерфейсов в Linux

Установим ethtool если он не установлен:

sudo apt-get install ethtool

Посмотрим имена сетевых интерфейсов:

ifconfig -a

Посмотрим не теряются ли пакеты, например если через сервер проходит большой трафик, то может увеличиваться значение «missed»:

ip -s -s link show

Если теряются, то посмотрим текущий и максимальный размер TX и RX буферов:

ethtool -g eth0

При необходимости изменим максимальный размер (изменения сбросятся после перезагрузки сервера):

sudo ethtool -G eth0 rx 512
sudo ethtool -G eth0 rx 512 tx 512

Чтобы изменения остались после перезапуска сервера, я открыл файл (в редакторе nano комбинация клавиш Ctrl+O служит для сохранения изменений, Ctrl+X для выхода):

sudo nano /etc/network/interfaces

И добавил строку:

post-up /sbin/ethtool -G eth0 rx 512 tx 512

Готово, после перезапуска сервера значения были те что надо.

Смотрите также:
Настройка сети в Linux

Установка и использование jnettop

jnettop — утилита для просмотра статистики трафика в реальном времени, с сортировкой по хостам/портам.

Команда установки в Ubuntu/Debian:

sudo apt-get install jnettop

Команда установки в CentOS:

sudo yum install jnettop

Пример простого запуска:

sudo jnettop

Пример запуска с указанием сетевого интерфейса:

sudo jnettop -i eth0

Опишу возможные опции запуска:
-h (справка)
-v (просмотр версии)
-c (отключить фильтрацию контента)
-d (записывать отладочную информацию в файл)
-f (чтение конфигурации из файла, если не указано, то файл ищется по пути ~/.jnettop)
-i (захватить пакеты с указанного интерфейса)
—local-aggr [none|host|port|host+port] (установить локальное агрегирование на указанное значение)
—remote-aggr [none|host|port|host+port] (установить удаленное агрегирование на указанное значение)
-n (не преобразовывать IP в DNS имена)
-p (включение неразборчивого режима, чтобы принимать все пакеты которые приходят на сетевой интерфейс)
-s (выбирает одно из правил, определенных в файле конфигурации .jnettop (по его имени))
-x (позволяет специфицировать правило пользовательской фильтрации. это позволяет использовать синтаксис стиля tcpdump. не забудьте включить фильтр в кавычки при запуске из оболочки)

Настройка маскарадинга (NAT) в Ubuntu

Для примера выполню настройку маскарадинга IPv4 (NAT) на Ubuntu Server.
Сначала нужно включить поддержку пересылки пакетов в /etc/sysctl.conf, чтобы трафик мог ходить между разными сетевыми интерфейсами.
Проверим текущее состояние:

sysctl net.ipv4.conf.all.forwarding
cat /proc/sys/net/ipv4/ip_forward

Если оно равно 0, то включим следующей командой:

sysctl -w net.ipv4.conf.all.forwarding=1

Чтобы после перезапуска системы оно не сбросилось, откроем файл /etc/sysctl.conf например в редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

nano /etc/sysctl.conf

И добавим строку:

net.ipv4.conf.all.forwarding=1

Теперь осталось в iptables добавить правило маскарадинга, например:

iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source 172.16.16.94

Где, 192.168.99.0/24 внутренняя сеть, а 172.16.16.94 адрес через который нужно идти в интернет, аналогично прописываются другие внутренние сети.
Не забываем сохранить добавленные правила iptables.
Например можно открыть файл конфигурации сетевых интерфейсов (его содержимое подгружается при запуске системы):

nano /etc/network/interfaces

И в конце добавлять правила iptables, например укажу маскарадинг этой сети сразу на несколько IP адресов, а также с указанием сетевого интерфейса:

post-up /sbin/iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth3 -j SNAT --to-source 172.16.90.1-172.16.90.5 --persistent

Смотрите также:
Настройка IPTables
Решение ошибки «nf_conntrack: table full, dropping packet»

Понижение приоритета IPv6

Понадобилось однажды понизить приоритет IPv6 на одном из серверов у Hetzner.de, так как сеть IPv6 работала нестабильно, некоторые хосты били периодически недоступны по IPv6, появлялись задержки и т.д.

Для понижения приоритета достаточно открыть в текстовом редакторе файл /etc/gai.conf (например nano, в котором Ctrl+X для выхода, а y/n для сохранения или отмены изменений):

nano /etc/gai.conf

Найти там строку:

#precedence ::ffff:0:0/96  100

И раскомментировать её либо добавить:

precedence ::ffff:0:0/96  100

Все.

Установка и настройка IRC сервера — ircd-irc2

На тесте запущу IRC (Internet Relay Chat) сервер ircd-irc2 в Ubuntu Server 14.04.

Первой командой выполним установку IRC сервера в Ubuntu:

sudo apt-get install ircd-irc2

В директории /etc/ircd/ находится несколько конфигурационных файлов: /etc/ircd/ircd.conf (основной), /etc/ircd/ircd.motd (сообщение пользователям при подключении), /etc/ircd/iauth.conf (параметры подключения).
В директории /usr/share/doc/ircd-irc2/ можно увидеть примеры конфигурационных файлов.

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

sudo /etc/init.d/ircd-irc2 restart

Пользователи могут создавать и подключаться к каналам такой командой:

/join #channel_name

Установка phpIPAM

phpIPAM — веб приложение для учета IP, VLAN адресов и т.д. Работает на PHP с использованием MySQL, jQuery, ajax и HTML5.

На тесте установлю phpIPAM в Ubuntu Server 14.04.

Первым делом обновим источники и установим необходимые компоненты:

sudo apt-get update
sudo apt-get install apache2 mysql-server php5 php5-gmp php-pear php5-mysql php5-ldap

Посмотрим какая есть самая новая версия на официальном сайте https://phpipam.net/download/ и скопируем на неё ссылку.

Перейдем в директорию веб сервера, скачаем архив с phpIPAM по скопированной ранее ссылке и распакуем его:

cd /var/www/
sudo wget http://freefr.dl.sourceforge.net/project/phpipam/phpipam-1.3.tar
sudo tar -xvf phpipam-1.3.tar
sudo rm phpipam-1.3.tar
cd phpipam

Создадим MySQL базу данных и пользователя с полными правами на неё:

mysql -u root -p
CREATE DATABASE phpipam;
GRANT ALL PRIVILEGES ON phpipam.* TO phpipam@localhost IDENTIFIED BY 'PASSWORD';
flush privileges;
exit

Переименуем стандартный файл конфигурации и откроем в текстовом редакторе, например nano (CTRL+X для выхода, y/n для сохранения иди отмены изменений):

sudo mv config.dist.php config.php
sudo nano config.php

Пропишем параметры подключения к базе данных:

$db['host'] = "localhost";
$db['user'] = "phpipam";
$db['pass'] = "password";
$db['name'] = "phpipam";

Если phpIPAM находится не в корневой директории веб сервера, то также укажем путь:

define('BASE', "/phpipam/");

В параметрах веб-сервера для директории с phpIPAM укажем Options FollowSymLinks и AllowOverride all:

sudo nano /etc/apache2/sites-enabled/000-default

Активируем модуль rewrite и перезапустим apache2 чтобы применить изменения:

sudo a2enmod rewrite
sudo service apache2 restart

Для завершения установки откроем в браузере ссылку http://server/phpipam/ нажмем установить и ответим на заданные вопросы.

ExtraPuTTY

Описание: Ответвление стандартного PuTTY, с увеличенной функциональностью, лично меня привлекает ExtraPuTTY возможностью передавать данные через Xmodem.

Скачать ExtraPuTTY с официального сайта

Скрипт перезагрузки Wi-Fi маршрутизаторов TP-Link

Приведу ниже пример скрипта перезагрузки маршрутизаторов TP-Link, на тесте проверю его на TL-WR720N 2.0 из Ubuntu Server.

#!/bin/sh
ROUTER_IP="192.168.24.174"
USERNAME="admin"
PASSWORD="admin"

# exit if router is down
ping -q -c 1 "$ROUTER_IP" > /dev/null || exit

curl --basic --user "$USERNAME:$PASSWORD" -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" --refer "http://$ROUTER_IP" "$ROUTER_IP/userRpm/SysRebootRpm.htm?Reboot=reboot"

Содержимое скрипта поместим в новый файл, например используя редактор nano («CTRL+X» для выходя и «y» для сохранения изменений):

nano file.sh

И сделаем его исполняемым:

chmod 777 file.sh

После этого выполним:

./file.sh

Аналогичным образом можно вместо перезагрузки выполнить другие функции.

Установка и использование softflowd

Softflowd — анализатор сетевого трафика NetFlow.

Установить в Ubuntu/Debian можно командой:

sudo apt-get install softflowd

После установки необходимо открыть его файл конфигурации, на примере в редакторе nano (Ctrl+X для выхода, y/n для сохранения или отмены изменений):

sudo nano /etc/default/softflowd

И указать параметры, например:

INTERFACE="any"
OPTIONS="-n 192.168.1.40:5556"

После изменений выполним перезапуск:

sudo /etc/init.d/softflowd restart

Посмотрим статистику softflowd:

softflowctl statistics

Если он не запущен, то будет ошибка:

ctl connect(«/var/run/softflowd.ctl») error: Connection refused

Отобразить информацию обо всех отслеживаемых потоках:

sudo softflowctl dump-flows

Информацию о softflowctl можно посмотреть командой:

man softflowctl

Опишу прочие опции запуска:
-n (указание узла сети и порта на котором будет работать softflowd)
-i (интерфейс на котором будет работать softflowd)
-r pcap_file (чтение информации из файла, а не сетевого интерфейса)
-p pidfile (альтернативное местоположение для хранения идентификатора процесса, стандартно /var/run/softflowd.pid)
-c ctlsock (альтернативное местоположение для сокета, стандартно /var/run/softflowd.ctl)
-m max_flows (максимальное количество потоков для одновременного отслеживания)
-6 (учитывать также IPv6 данные)
-D (режим отладки)
-T track_level (уровень отслеживания, может быть full, proto, ip)
-v netflow_version (версия netflow)