Перейти на первую страницу сайта
Перейти на первую страницу сайта
Здесь вы можете посмотреть ссылки других пользователей, а так же создать свою базу адресов/ссылок интересных для вас ресурсов интернета, если зарегестрируетесь.
  Показывать по:   категориям
алфавиту
Каталог
Руководство / HOWTO по установке ISP-serv
на Linux ( Fedora Core 3) ядро 2.6.12.5


АНОТАЦИЯ
Задача создание NAT-сервера и управления трафиком актуальна когда:
  • у Вас есть один реальный IP адрес и через него надо дать локальной сети интернет
  • необходимо разделять местный и зарубежный трафик, поскольку скорость зарубежного меньше
  • выделить приоритетный трафик, так и есть QoS, Р2Р трафик менее приоритетный
  • распределять полосу пропускания честно по IP-адресам
  • создание брандмаура, защищающего от Syncflood атак и т.п.
  • блокирование возможности пользователям самим менять IP адреса (привязка IP-MAC)
  • мониторинг трафика


  • В данном руководстве излагаются основные практические моменты для людей, которые впервые пытаются создать Internet Server Provider (ISP-serv) на базе Linux. Последовательно излагаются этапы установки ядра с поддержкой фильтрации пакетов по контенту (а не портам), установки очереди обслуживания которая честно распределяет полосу пропускания между IP-адресам (а не по сессиям), приоритизация трафика (так и есть понижения приоритета трафика относящегося Bittorrent, Edonkey и т.п. вплоть до их полного блокирования), разграничения скорости по странам (местный или зарубежный)

    ИСПОЛЬЗУЕМЫЕ ПРОГРАМНЫЕ ПРОДУКТЫ:
  • Fedora Core 3
  • kernel 2.6.12.5
  • HTB
  • iptables
  • iproute2
  • ESFQ
  • ip-sentinel
  • netfilter
  • iptraf (мониторинг)
  • iftop (мониторинг)
  • tcpdump (мониторинг)


  • КЛЮЧЕВЫЕ СЛОВА: минимальное ядро Linux, Fedora Core 2, Fedora Core 3, FC-3, kernel 2.6 2.6.12.3 2.6.12.1, 2.6.12.1, tc, iptables, iptraf, traficshow, iftop, iproute2, Layer 7

    ПОЛЕЗНЫЕ РЕСУРСЫ ИНТЕРНЕТА:
    www.dzti.edu.lv/links/min-kern-2.6.php
    http://iptraf.seul.org/index.html
    http://www.ex-parrot.com/~pdw/iftop/
    http://www.tcpdump.org/
    http://l7-filter.sourceforge.net/L7-HOWTO-Netfilter
    http://fatooh.org/esfq-2.6/
    http://www.netfilter.org


    ВСТУПЛЕНИЕ
    В данном руководстве написан мой взгляд на создание NAT-сервера на базе Linux. ISP-serv название выбранное мной для отражения ориентации сервера для нужд Internet Server Provider (Интрент Сервер Провайдер). Программные продукты непосредственно управляющие трафиком (iproute2,iptables,kernel) будут собираться из исходников на мощном компьютере (без использования rpm) с поледующей установкой на слабенький сервер (ISP-serv). На мой взгляд использование rpm оправдано для Linux десктопа (когда много программ зависит от установленных пакетов), но не для сервера, также rpm не делает наглядным процесс сборки и установки rpm, навязывая пути и директории куда будут проинсталированы пакеты. В результате у нас будет отдельная директория, которая будет содержать все необходимые програмные пакеты и настройки для управления трафиком, не затрагивая стандартные пакеты.

    ТЕХНИЧЕСКАЯ РЕАЛИЗАЦИЯ ЗАДАЧИ

    директория /ISP-serv содержит все програмные пакеты и настройки ипользуемые для управления трафиком

    директория /ISP-serv/INSTALL :
    Layer-7
    esfq
    ip-sentinel
    iproute2
    kernel
    netfilter
    monitoring

    Схема управления трафиком

    INTERNET <----> eth0 <----> eth1 <----> ЛВС

    Основные положения по управлению трафиком
    1. Ограничение [download] ЛВС путем ограничения исходящих в ЛВС пакетов, eth1
    2. Ограничение [upload ] ЛВС путем ограничения исходящих в INTERNET пакетов, eth0
    3. С помощью esfq (вместо SFQ) делим канал не между сессиями, а между IP
    4. С помощью geoip разделяем трафик на местный и зарубежный


    ЭТАПЫ СОЗДАНИЯ ISP-serv
    1. Наложение патчей Layer7, pom-ng, esfq
    2. Сборка ядра
    3. Сборка iproute2
    4. Сборка iptables
    5. Сборка ip-sentinel
    6. Создание директории содержащей полезные программы для мониторинга трафика
    7. Установка ядра, iptables, iproute2, ip-sentinel на сервер



    1. Наложение патчей Layer7, pom-ng, esfq

    Патчами можно назвать файлы, которые содержат указания какие изменения надо внести в файлы с исходными текстами. Для внесения изменений согласно иснтрукциям содержащихся в патч файле используется программа patch. Именно открытость осходных кодов (Open Source) позволяет вносить изменения в программы делая их адаптированными для своих нужд.

    Для целей ISP-serv, необходимо в исходные тексты программ kernel, iproute, iptables внести изменения (наложить патчи).

    Layer-7 позволяет классифицировать пакеты (в основном первые три пакета соединения) для определения какой программе принадлежат передавемые пакетые. Для классификации пакетов не используются номера портов, а непосредственно анализируется их содержимом. Такие возможности достигаются путем изменения исходников ядра и iptables.

    esfq Если полоса пропускания ограничена, а трафик большой, и вы хотите не допустить доминирование одних соединений над другими — используйте ESFQ. ESFQ в отличие от SFQ распределяет трафик по IP-адресам, а не по сессиям. Такие возможности достигаются путем изменения исходников ядра и iproute2.

    pom-ng из больщого числа предлагаемых расширений необходимо выбрать geoip - позволяющий определить к какой стране принадлежит трафик, time - дает возможность управления тарфиком от вермени суток. Такие возможности достигаются путем изменения исходников ядра и iproute2.


    Распаковываем в директорию исходники kernel, iproute, iptables и патчи pom-ng, esfq /usr/local/src/:
    kernel# tar -xjf linux-2.6.12.5.tar.bz2
    iproute# tar -xzf iproute2-050816.tar.gz
    iptables # tar -xjf iptables-1.3.2.tar.bz2
    pom-ng # tar -xjf patch-o-matic-ng-20050819.tar.bz2
    Layer-7 # tar -xzf netfilter-layer7-v1.4.tar.gz
    esfq # tar -xzf esfq-2.6.12-rc1.tar.gz

    Накладываем патчи:
    Layer-7 # cd /usr/local/src/linux-2.6.12.5/
    # patch -p1 < ../netfilter-layer7-v1.4/kernel-2.6.11-layer7-1.4.patch
    # cd /usr/local/src/iptables-1.3.2/
    # patch -p1 < ../netfilter-layer7-v1.4/iptables-layer7-1.4.patch

    esfq # cd /usr/local/src/linux-2.6.12.5/
    # patch -p1 < ../esfq-2.6.12-rc1/esfq-kernel.patch
    # cd /usr/local/src/iproute2-050816/
    # patch -p1 < ../esfq-2.6.12-rc1/esfq-iproute2.patch

    pom-ng
    {ttl, connlimit,
    quota, time,
    connlimit, goto,
    mport, time,
    geoip}
    # cd /usr/local/src/patch-o-matic-ng-20050819/
    # ./runme --kernel-path=/usr/local/src/linux-2.6.12.5 \
    --iptables-path=/usr/local/src/iptables-1.3.2 extra



    2. Сборка ядра

    Копируем свой .config в /usr/src/linux-2.6.12.5/
    в качестве основы можно взять мой конфиг файл заменив в нем свое оборудование

    # make oldconfig
    # make menuconfig
    # make bzImage
    # make modules

    инсталируем модули в директорию /ISP-serv/
    # make modules_install INSTALL_MOD_PATH=/ISP-serv/

    Копируем в директорию /ISP-serv/ следующие файлы:
    /usr/src/linux-2.6.12.5/arch/i386/boot/bzImage
    /usr/src/linux-2.6.12.5/System.map
    /usr/src/linux-2.6.12.2/.config



    3. Сборка iproute2

    Редактируем файл: Makefile
    SBINDIR=/ISP-serv/iproute2/usr/sbin
    CONFDIR=/ISP-serv/iproute2/etc/iproute2
    DOCDIR=/ISP-serv/iproute2/usr/share/doc/iproute2
    MANDIR=/ISP-serv/iproute2/usr/share/man

    KERNEL_INCLUDE=/usr/local/src/linux-2.6.12.5/include

    Данные изменения проинсталлируют откомпилированные файлы пакета iproute2 в директорию /ISP-serv/iproute2/ .

    # make
    # make install



    4. Сборка iptables

    # chmod 755 extensions/.layer7-test

    Редактируем файл: Makefile
    KERNEL_DIR=/usr/local/src/linux-2.6.12.5
    IPTABLES_VERSION:=1.3.2
    OLD_IPTABLES_VERSION:=1.3.1

    PREFIX:=/ISP-serv/iptables/usr/local

    Данные изменения проинсталлируют откомпилированные файлы пакета iptables в директорию /ISP-serv/iptables/ . Важно отметить что полученный после компиляции файл /ISP-serv/iptables/usr/local/bin/iptables будет иметь жесткую привязку к директории /ISP-serv/iptables/usr/local/lib/iptables/ содержащего модули подгружаемые iptables при необходимости (в этой же директории будет модуль отвечающий за определения какой стране принадлежит трафик libipt_geoip).

    # make
    # make install



    5. Сборка ip-sentinel


    # ./configure --prefix=/ISP-serv/ip-sentinel/usr/local/ip-sentinel
    # make
    # make install



    6. Создание директории содержащей полезные программы для мониторинга трафика

    # cd /ISP-serb/INSTALL/monitoring

    iftop
    # wget ftp://fr.rpmfind.net/linux/fedora/extras/3/i386/iftop-0.16-3.i386.rpm

    tcpdump
    # wget ftp://fr.rpmfind.net/linux/fedora/core/3/i386/os/Fedora/RPMS/tcpdump-3.8.2-7.i386.rpm

    iptraf
    # wget ftp://fr.rpmfind.net/linux/fedora/core/2/i386/os/Fedora/RPMS/iptraf-2.7.0-9.i386.rpm



    7. Установка ISP-serv

    Скопируем директорию ISP-serv в корневую директорию компьютера, на котором будет работать сервер дающий локальной сети доступ в интрнет и позволяющий управлять трафиком с помощью iptables и iproute2.

    Установка ядра
    Копируем модули: # cp -R /ISP-serv/lib/modules/2.6.12.5-L7/ /lib/modules/
    Интслалируем ядро: # installkernel 2.6.12.5-L7 bzImage System.map

    Для работы с классификатором пакетов Layer 7, необходимо в директорию
    /etc/l7-protocols/protocols
    скопировать определение протоколов (protocol definition), для этого надо:
    разархивировать
    # tar -xzf l7-protocols-2005-08-24.tar.gz
    создать директорию
    # mkdir /etc/l7-protocols
    скопировать содержимое директорию protocols в /etc/l7-protocols
    cd l7-protocols-2005-08-24
    # cp -r protocols /etc/l7-protocols

    Установка программ для монитронга сети
    # cd /ISP-serv/INSTALL/monitoring
    # rpm -ivh *.rpm



    Непосредственная конфигурация будет рассмотрена в следующей статье, на данный момент мы имеем работающий полигон для проведения экспериментов по управлению трафиком, который по возможностям соизмерим с микротиком.

    Отметим, что теперь необходимо явно указывать полный путь к программам iptables и tc, которые установлены в одной из поддиректорий директории ./ISP-serv

    Обсуждение в форуме на www.linux.org.ru


    Обсуждение в форуме на www.opennet.ru


    Andrejs Spunītis: spunitis AT one.lv
    21 август, 2005 год.

    www.top.lv --> Информация
    можно хранить свои линки и смотреть остальные

    Top.LV
    Rambler's Top100