Архив

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

Настройка терминального сервера под Debian

Все нижеперечисленное относится к Debian 4.0 или 5.0
(про Debian 6 читайте ниже)

На самом деле установка и настройка непосредственно терминального сервера происходит до безобразия просто. Установим VNC сервер с помощью программы управления пакетами synaptic или с помощью команды:

apt-get install vnc4server

Терминальный VNC сервер установлен и его уже можно запускать командой vncserver. При этом VNC запрсит у Вас пароль для подключения клиентом. Учтите, что при логоне удалённым VNC вьювером, сервер даст вам рабочий стол пользователя, от имени которого был запущен vncserver. Помимо этого есть один неприятный, на первый взгляд, момент — Если к запущенному VNC серверу уже подключен один VNC вьювер, то при подключении второго вьювера на этот же порт — клиенты или начнут делить один и тот же сеанс или одного из клиентов просто «выбросит» из сессии, что нас конечно же не устраивает. Выхода из данной ситуации два:

1) Автоматом открыть N VNC-сессий (N=количеству ноебходимых клиентских подключений). При этом каждое подключение будет происходить на отдельный порт 5900 — 590N. Помимо этого, постоянно будут подгружены «неиспользумые» VNC сервера. Также не решается проблема с одновременным подключением нескольких вьюверов на один порт. Данный Вариант нас в корне не устраивает, т.к. нам надо получить работающую систему, максимально похожую на терминальный виндовый сервер для удобства пользователей.

2) Настроить супердемон inetd, чтобы при коннекте на порт 5900 происходил автоматический запуск VNC сервера. При этом все соединения слушаются на одном порту и количество VNC серверов не превышает количество необходимых в данный момент.

Таким образом, выбираем п.2 — правку inetd. В /etc/inetd.conf добавляем слелующую строку:

5900 stream tcp nowait my_user /usr/bin/Xvnc Xvnc -inetd -query localhost -once -depth 24 securitytypes=none

Параметр my_user заменяете на имя пользователя, от чьего имени будет запущен vncservsr. Параметр -query localhost говорит нашему vncserver-у, что авторизация будет происходить локально, используя gdm или xdm (в зависимости от того, что у Вас установлено). Помимо этого можно «поиграть» с настройками geometry, которые зададут разрешение сервера VNC. Все параметры можно увидеть, набрав в консоли Xvnc -h

Терминальный сервер настроен, осталось настроить gdm/xdm (в зависимости от того, что у Вас стоит) принимать запрсы по xdmcp

Если gdm:

Редактируем /etc/gdm/gdm.conf — добавляем

[xdmcp]
Enable=true

Если xdm:

По умолчанию, в целях безопасности, xdm запрещено слушать xdmcp, поэтому редактируем /etc/X11/xdm/xdm-config Находим строку DisplayManager.requestPort: 0 Перед ней ставим знак «!», т.о. получаем следующе

! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
! DisplayManager.requestPort: 0

Таким образом настройка gdm/xdm закончена.

После это рестартуем inetd, gdm/xdm и пробуем подключиться терминальным VNC клиентом. Благодаря тому, что VNC является открытым, существуют различные программные продукты под разные ОСи. Из-под Windows я пользовался VNC Enterprise Edition 4.4 released. Из под Debian – «родной» VNCVIEWER.

Естественно, что везде есть свои «подводные камни». В нашем случае они тоже имеются. Из замеченного — явно бросается в глаза невозможность «восстановиться» в отвалившуюся сессию. Т.е. если человек работал под своим логином, и у него отвалилась сеть, то при повторном логине он не получит окружение рабочего стола, которое было ДО отваливания. Это немного неудобно, но в конечном итоге не смертельно. По крайней мере не будет «мёртвых» сессий.

Как настроить терминальный сервер на Debian 6.0.»Squeeze»?

Debian 6.0. отличается от предыдущих версий (Debian 5.0 и Debian 4.0) тем, что при установке Debian 6.0:
1. по умолчанию устанавливается графическая оболочка Gnome 3, а не Gnome (как в Debian 4.0 и 5.0). Соответственно устанавливается пакет gdm3.
2. по умолчанию не устанавливается пакет openbsd-inetd, который в свою очередь содержит конфигурационный файл inetd.conf супер сервера inetd. Поэтому мы не находим его в каталоге etc.
Таким образом, чтобы настроить терминальный сервер на Debian 6.0. нужно:

Сначала, с помощью программы управления пакетами Synaptic (Система —> Администрирование —> программа управления пакетами Synaptic) или с помощью команды от имени суперпользователя
apt-get install vnc4server

установить VNC сервер (пакет vnc4server). После этого его можно будет запускать командой vncserver.

Затем, с помощью программы управления пакетами Synaptic (Система —> Администрирование —> программа управления пакетами Synaptic) или с помощью команды от имени суперпользователя
apt-get install gdm

установим пакет gdm. При установке пакета gdm автоматически удалится, установленный по умолчанию, пакет gdm3.

Теперь, аналогично установке пакетов vnc4server и gdm устанавливаем пакет openbsd-inetd, т.е. с помощью программы управления пакетами Synaptic (Система —> Администрирование —> программа управления пакетами Synaptic) или с помощью команды от имени суперпользователя
apt-get install openbsd-inetd

Чтобы при подключении на порт 5900 происходил автоматический запуск VNC сервера и при этом соединения на одном порту и количество VNC серверов не превышало количество необходимых в данный момент, надо настроить супер сервер inetd.
От имени супер пользователя (root) открыть (вызвать с помощью команды gedit) текстовый редактор. Открываем файл в etc/inetd.conf, добавляем следующую строку:
5900 stream tcp nowait my_user /usr/bin/Xvnc Xvnc -inetd -query localhost -once -depth 24 securitytypes=none

Параметр my_user заменяем на имя пользователя от чьего имени будет запущен vncserver.

Осталось настроить, установленный нами, gdm. Открываем файл в etc/gdm/gdm.conf и редактируем его. Добавляем

[xdmcp]
Enable=true
После всех изменений необходимо перезагрузить систему. Терминальный VNC сервер на Debian 6.0 настроен, теперь можно к нему подключиться терминальным VNC клиентом.

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

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