Архив

Публикации с меткой ‘linux’

Mini-HOWTO for the Linux packet generator module.

1. Enable CONFIG_NET_PKTGEN to compile and build pktgen.o either in kernel
or as module. Module is preferred. insmod pktgen if needed.

2. For montoring and control pktgen creates. Inspect them!
/proc/net/pktgen/pgctrl
/proc/net/pktgen/kpktgend_X
/proc/net/pktgen/ethX

3. Extract the example script «pktgen.sh» (see below).

4. Edit script to set preferred device and destination MAC, and IP address.

5. Run in shell: «./pktgen.sh»
It does all the setup including sending. Also

«echo «start» > /proc/net/pktgen/pgctrl» Starts sends on all threads and devs

Use
«cat /proc/pktgen/eth[X]» X={1,n} to inspect an interfacee.

7. Use «pgset» change pktgen settings. See examples.

«pgset» to change generator parameters. F.e.
pgset «clone_skb 1″ sets the number of copies of the same packet
pgset «clone_skb 0″ use single SKB for all transmits
pgset «pkt_size 9014″ sets packet size to 9014
pgset «frags 5″ packet will consist of 5 fragments
pgset «count 200000″ sets number of packets to send, set to zero
for continious sends untill explicitly
stopped.
pgset «ipg 5000″ sets artificial gap inserted between packets
to 5000 nanoseconds
pgset «dst 10.0.0.1″ sets IP destination address
(BEWARE! This generator is very aggressive!)
pgset «dst_min 10.0.0.1″ Same as dst
pgset «dst_max 10.0.0.254″ Set the maximum destination IP.
pgset «src_min 10.0.0.1″ Set the minimum (or only) source IP.
pgset «src_max 10.0.0.254″ Set the maximum source IP.
pgset «dstmac 00:00:00:00:00:00″ sets MAC destination address
pgset «srcmac 00:00:00:00:00:00″ sets MAC source address
pgset «src_mac_count 1″ Sets the number of MACs we’ll range through. The
‘minimum’ MAC is what you set with srcmac.
pgset «dst_mac_count 1″ Sets the number of MACs we’ll range through. The
‘minimum’ MAC is what you set with dstmac.
pgset «flag [name]» Set a flag to determine behaviour. Current flags
are: IPSRC_RND #IP Source is random (between min/max),
IPDST_RND, UDPSRC_RND,
UDPDST_RND, MACSRC_RND, MACDST_RND
pgset «udp_src_min 9″ set UDP source port min, If < udp_src_max, then
cycle through the port range.
pgset «udp_src_max 9″ set UDP source port max.
pgset «udp_dst_min 9″ set UDP destination port min, If < udp_dst_max, then
cycle through the port range.
pgset «udp_dst_max 9″ set UDP destination port max.
pgset stop aborts injection

Also, ^C aborts generator.

Читать далее…

Linux Packet Filtering HOWTO

27 Апрель 2009 Нет комментариев

Rusty Russell, mailing list netfilter@lists.samba.orgv1.0.1 Mon May
1 18:09:31 CST 2000 перевод, Евгений Данильченко aka virii5, eugene@kriljon.ru

Этот документ описывает как можно использовать iptables для фильтрования пакетов
в 2.4 Linux ядрах.

1. Введение

Добро пожаловать, уважаемый читатель.

Предполагается что вы уже знакомы с такими понятиями как IP адрес, адрес сети,
маска, роутинг и DNS. Если нет, я рекомендую вам ознакомиться сперва с Network
Concepts HOWTO.

Это HOWTO начинается с легкого введения (которое оставит у вас чувство тепла
и неясности, и совсем незащищенным в реальной жизни) и заканчивается жестким разоблачением
(которое оставит всех, кроме крутых профи, запутанными, панически ищущими что-нибудь
потяжелее ;) )

Выша сеть не безопасна. Проблема в том чтобы разрешить быстрые, удобные
связи и в то же время, ограничить использование их только в хороших намерениях…
это приблизительно как разрешить обычный разговор и в то же время запретить кричать
«Пожар!» в переполненном театре. Так вот, — эта ваша проблема не ставится задачей
этого HOWTO.

Итак, только вы сами можете решить свои проблемы. Я только помогу вам в использовании
некоторых утилит и предупрежу о некоторых уязвимостях, в надежде что вы используете
это не с плохими намерениями.
2. Наш официальный Web-сайт. Наш лист рассылки.

Существуют три наших официальных сайта:

Официальный лист рассылки: Samba’s Listserver.
3. Что такое — фильтр пакетов?

Фильтр пакетов это программа которая просматривает заголовки пакетов
по мере их прохождения, и решает дальнейшую судьбу всего пакета. Фильтр может
сбросить DROP пакет (т.е. как будто пакет и не приходил вовсе), принять

ACCEPT пакет (т.е. пакет может пройти дальше), или сделать с ним что-то
еще более сложное.

Под Linux, фильтр пакетов встроен в ядро (как модуль, или как неотъемлемая
часть ядра), и мы можем делать с пакетами несколько хитроумных вещей, но основной
принцип в просмотре заголовков пакетов и решении их дальнейшей судьбы сохраняется.
3.1 Почему я должен использовать фильтр пакетов? Читать далее…

Вышел релиз Linux ядра 2.6.29

linux_australia_tuz-thm
Сегодня вышла новая версия ядра Linux — 2.6.29, как обычно включающая множество новшеств и улучшений.

Основные изменения:

* Файловые системы

1. Новая экспериментальная файловая система Btrfs

2. Read-only файловая система SquashFS включена в ядро (сжатие по алгоритму LZMA пока не поддерживается)

3. OCFS2 теперь поддерживает ACL, атрибуты безопасности, квоты и проверку целостности метаданных

4. Возможность «замораживать» файловую систему (например для снятия резервной копии)

5. Множество небольших улучшений ext4, в том числе

1. Добавлена опция, позволяющая выключить журналирование (при этом производительность становится выше даже чем у ext2)

2. В документацию добавлена информация о барьерах записи

3. Исправлены многие ошибки и улучшена производительность

* Графическая подсистема

1. Механизм смены видеорежимов средствами ядра — Kernel-based mode setting (KMS)

2. Улучшения в Graphics Execution Manager (GEM)

* Множество улучшений в управлении питанием (в т.ч. новые драйвера для различных моделей ноутбуков)

* Сеть

1. Стек mac80211 готов к поддержке режима точки доступа (для работы требуется hostapd)

2. Поддержка стека WiMAX, а так же драйверов для USB/SDIO карт Intel Wireless WiMAX/Wi-Fi Link 5×50

3. Поддержка инфраструктуры Generic Receive Offload (GRO) для драйверов LAN

* Аудио

1. Драйвер для кодеков HD Audio разделён на несколько частей (для различных вариантов кодека от разных производителей), теперь конкретная версия кодека должна определяться автоматически

2. Поддержка вывода аудио через HDMI на чипсетах от Intel и NVidia

3. Множество новых драйверов для вывода звука в «системах на кристалле» (System on Chip — SoC)

4. Управление питанием для AC97 и HD Audio

* Tux — толстый пингвин с утиным клювом — временно уступил пост официального талисмана Tuz’у — тасманскому дьяволу (только на один релиз)

Полный список изменений (а их очень много и они затрагивают почти все подсистемы ядра) можно прочитать здесь.

Categories: Без рубрики Tags: , ,

Тюнинг TCP стека в Linux

Увеличиваем максимальный размер памяти отводимой для TCP буферов:
(16Мб на порядок больше, чем нужно, следует экспериментальным путем подобрать
оптимальные значения, понеменогу увеличивая параметры заданные по умолчанию)

sysctl -w net.core.rmem_max = 16777216
sysctl -w net.core.wmem_max = 16777216

Увеличиваем лимиты автотюнинга (min, default, max bytes)

sysctl -w net.ipv4.tcp_rmem = «4096 87380 16777216″
sysctl -w net.ipv4.tcp_wmem = «4096 65536 16777216″

Увеличиваем размер очереди пакетов на сетевом интерфейсе, особенно полезно для Gigabit Ethernet:

ifconfig eth0 txqueuelen 1000

Особенности Linux ядра 2.4.x:
Для предотвращения особенности при уменьшении размера окна, из-за повторов передеачи пакетов,
для одного соединения, уменьшать на 10 минут размер окна для всех остальных соединений к тому же хосту:

sysctl -w net.ipv4.route.flush=1

Особенности Linux ядра 2.6.x:

Запрещаем кеширование статуса ssthresh (были ретрансмиты) для других соединений

sysctl -w net.ipv4.tcp_no_metrics_save = 1

Рекомендуется увеличить размер backlog до 1000 или выше
(для 10Gb линка можно поставить 30000):

sysctl -w net.core.netdev_max_backlog = 2500

Начиная с ядра 2.6.13 можно менять алгоритм обработки ситуации перегрузки:

sysctl -w net.ipv4.tcp_congestion_control=htcp
reno: традиционный TCP
bic: BIC-TCP (для высокоскоростных сетей, быстрое восстановление после потери)
highspeed: HighSpeed TCP: Sally Floyd’s suggested algorithm
htcp: Hamilton TCP (для высокоскоростных сетей)
hybla: для спутниковых линков
scalable: Scalable TCP
vegas: TCP Vegas
westwood: для сетей с большой потерей пакетов
Когда стандартный reno не устраивает рекомендуется попробовать bic или htcp.

Значения параметров тюнинга подробно описаны в документе ip-sysctl.txt в комплекте ядра:

http://www-didc.lbl.gov/TCP-tuning/ip-sysctl-2.6.txt

Описание некоторых sysctl переменных ядра Linux (sysctl proc linux kernel tune)

Оригинал: http://debian.telenet.ru/doc/sysctl.conf

> net.ipv4.conf.default.forwarding=1

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

> fs.file-max = 64000

Максимальное значение открытых файлов. Что бы его узнать, выполните
команду cat /proc/sys/fs/file-max

> net.ipv4.conf.all.rp_filter = 1

Эта переменная сообщает ядру о необходимости фильтрации пакетов по их исходящему адресу.

> kernel.sysrq = 0

Отключается комбинация клавиш sysrq, которая используется при крахе
системы.

> net.ipv4.conf.default.rp_filter=1

Фильтр обратного пути (когда пакет приходит с одного интерфейса, а
уходит на другой)

> net.ipv4.conf.all.accept_source_route = 0

Маршрутизация от источника (source routing) позволяет отправителю
определить путь, по которому пакет должен пройти по сети Internet, чтобы
достигнуть пункта назначения. Это очень удобно для изучения и отладки
работы сети, но нарушитель получает возможность подмены адресов
компьютеров локальной сети. 0 означает, что маршрутизация отключена, 1 -
наоборот.

> net.ipv4.tcp_syncookies=1

Разрешает/запрещает передачу так называемых syncookies вызывающему хосту
в случае переполнения очереди SYN-пакетов для заданного сокета. Когда в
систему поступает слишком много запросов на соединение, то очередь может
переполниться и тогда запускается передача syncookies в ответ на каждый
SYN-запрос. Эта переменная используется для предотвращения syn-flood
атак. Переменная может принимать два значения 0 (выключено) и 1
(включено). Значение по-умолчанию 0 (выключено). Эта функция будет
работать только в том случае, если ядро собрано с опцией
CONFIG_SYN_COOKIES.
Читать далее…

Оптимизация TCP/IP стэка для AIX, Solaris, Tru64, HP-UX, Irix, Linux и FreeBSD (eng)

UNIX IP Stack Tuning Guide v2.7

http://www.cymru.com/Documents/ip-stack-tuning.html

By Rob Thomas

Introduction

The purpose of this document is to strengthen the UNIX IP stack
against a variety of attack types prevalent on the Internet today.
This document details the settings recommended for UNIX servers
designed to provide network intensive services such as HTTP or routing
(firewall services). This document covers the following UNIX variants:

A. IBM AIX 4.3.X
B. Sun Solaris 7
C. Compaq Tru64 UNIX 5.X
D. HP HP-UX 11.0 (research ongoing)
E. Linux kernel 2.2 (tested both SuSE Linux 7.0 and RedHat 7.0)
F. FreeBSD
G. IRIX 6.5.10

  Читать далее…