Спутниковый Интернет для продвинутых

Тема в разделе "Спутниковые технологии", создана пользователем pilot22, 23 дек 2006.

  1. pilot22
    Оффлайн

    pilot22 Active Member

    Credit:
    $23,28
    Book Reviews:
    0
    <span style='color:Blue'>Хотелось бы открыть тему для тех, кто не только умеет жмакать на кнопку "Вызов" и на гиперссылки на интернет страницах, но и понимает принципы работы спутниковой связи и программного обеспечения на компьютере. Здесь можно делиться своими находками, опытом работы, приводить интересные статьи из ресурсов инета.</span>


    <span style='color:green'>Спутниковый интернет на SkyStar1 и SkyStar2 под Linux</span>

    <span style='color:red'>1. Подготовка</span>
    Подготовка к работе всегда занимает времени больше, чем сама работа

    Народная мудрость
    Самый простой й взгляд путь — это работать с ветвью ядра версии 2.6.xx. На данный момент на сайте kernel.org доступная версия 2.6.13.1. Насколько я понял, начиная с версии 2.6.11, благодаря стараниям NuclearCat встроенные в ядро драйвера DVB-карт SkyStar 1 и SkyStar 2 прекрасно работают.

    <span style='color:red'>1.1 SkyStar 1. Linux kernel v2.6.1x.x</span>

    Сейчас мы устанавливаем карточку SkyStar 1 под Linux, с ядром версии не ниже 2.6.11.
    Карта эта — весьма капризная особа и к ней, как минимум понадобится дополнительный охладитель.
    В файл конфигурации надо доабавить следующие опции ([m] — в виде модуля, [y] — собрать вместе с ядром):

    #
    # Digital Video Broadcasting Devices
    #
    DVB=[y]
    CONFIG_DVB=[y]
    CONFIG_DVB_CORE=[m|y]
    CONFIG_DVB_VES1X93=[m|y]
    CONFIG_DVB_AV7110=[m|y]
    CONFIG_DVB_AV7110_OSD=[y]

    CONFIG_VIDEO_SAA7146=[m|y]
    CONFIG_VIDEO_SAA7146_VV=[m|y]
    CONFIG_VIDEO_VIDEOBUF=[m|y]
    CONFIG_VIDEO_TUNER=[m|y]
    CONFIG_VIDEO_BUF=[m|y]
    CONFIG_VIDEO_BTCX=[m|y]
    CONFIG_VIDEO_IR=[m|y]

    После сборки должен получится следующий набор модулей[2]:

    dvb-ttpci Основной драйвер полнофункциональных карт, основанных на чипсете AV7110.

    videodev Модуль ядра Video4Linux. Это основной модуль, предоставляющий доступ к аналоговой «картинке» mpeg2-декодера av7110.

    v4l2-common Модуль вспомогательных функций драйверов Video4Linux-2.

    v4l1-compat Модуль вспомогательных функций для обратной совместимости приложений, использующих Video4Linux-1.

    dvb-core Модуль ядра DVB. Обеспечивает поддержку работы с утройствами каталога /dev/dvb/adapter/

    saa7146 Ядро драйвера SAA7146. Необходим для работы со всеми устройствами, основанными на чипсете saa7146.

    saa7146_vv Поддержка функций Видео и Виртуальных Двоичных Интерфейсов (VBI — Video Binary Interface). Этот модуль необходим только для работы с полнофункциональными DVB-картами.

    video-buf Вспомогательный модуль saa7146 для захвата видеопотока. Модуль для захвата видеопотока.

    dvb-ttpci Основной драйвер карт основанных на AV7110 и полнофункциональных DVB-S/C/T


    Подгружать модули в память и перезагружаться с обновлённым ядром пока рановато. Вряд-ли dvb-ttpci загрузится без необходимых программных средств — firmware. Этот файл будет загружаться непосредственно в исполнительное устройство карты, примерно также, как подгружаются firmware-файлы в софтварные модемы. Так, что необходимо в зависимости от версии карты загрузить с сайта LinuxTV необходимый файл:

    Name Last Modified Size
    Parent Directory 09-Jun-2005 19:52 -
    dvb-ttpci-01.fw-261a 14-Nov-2004 00:48 221k
    dvb-ttpci-01.fw-261b 14-Nov-2004 00:48 221k
    dvb-ttpci-01.fw-261c 14-Nov-2004 00:48 221k
    dvb-ttpci-01.fw-261d 26-Dec-2004 01:02 227k
    dvb-ttpci-01.fw-261f 06-Jul-2005 00:44 229k

    А можно нигде эти файлы не искать и загрузить нужный файл при помощи скрипта, находящегося в документации, прилагающейся к исходному коду ядра — Documents/dvb/get_dvb_firmware

    Нужный файл надо переименовать в dvb-ttpci-01.fw и положить в папку /lib/firmware. (Расположение этой директории, как правило определяется переменной FIRMWARE_DIR в файле /etc/hotplug/firmware.agent.)


    Если карта установлена в компьютер, то можно попытаться всё это загрузить: modprobe dvb_core dvb_shutdown_timeout=0 dvb_net_debug=1 и dvb-ttpci videodev v4l2-common v4l1-compat saa7146 saa7146_vv video-buf dvb-ttpci.

    Обратите внимание на параметр, передаваемый при загрузке модуля dvb_core — dvb_shutdown_timeout=0. Дело в том, что карты SkyStar 1 и SkyStar 2 для защиты от перегрева при отсутствии нагрузки выключаются и теряют связь. Число 0 означает не выключаться никогда.
    Если всё прошло успешно, то dmesg | less должен показать примерно такую распечатку:

    dvb-ttpci: gpioirq unknown type=0 len=0
    dvb-ttpci: info @ card 0: firm f0240009, rtsl b0250018, vid 71010068, app 8000261d
    dvb-ttpci: firmware @ card 0 supports CI link layer interface
    dvb-ttpci: Crystal audio DAC @ card 0 detected
    saa7146_vv: saa7146 (0): registered device video0 [v4l2]
    DVB: registering frontend 0 (ST ST V0299 DVB-S)...
    dvb-ttpci: found av7110-0.

    Осталось прописать модули в автоматическую загрузку, обновить ядро и перезагрузиться.

    <span style='color:red'>1.2 SkyStar 1, Linux, Ядро 2.4.xx</span>
    В отличие от ядра 2.6.xx.x в нём драйверов для карт SkyStar 1 и SkyStar 2 нет. Драйвера придётся загрузить с опять-таки с сайта LinuxTV. На данный момент это —
    <a href='http://www.linuxtv.org/downloads/linuxtv-dvb-1.1.1.tar.bz2' target='_blank'>http://www.linuxtv.org/downloads/linuxt ... .1.tar.bz2</a> [327K].

    Правда, во многих местах в сети, в частности в статьте, размещённой на сайте General Satellite «Программное обеспечение под Linux 2.4», утверждается, что эти драйвера для работы с интернет не годятся — всё нормально загружается, но спутник не «лочится».

    Во всяком случае, в большинстве сетевых заметок, настоятельно рекомендуется взять альтернативные драйвера от Дениса Федорищенко (NuclearCat) —
    <a href='http://www.gs.ru/soft/si/ss1lin/nuclear/ss1linux-rc5.tar.gz' target='_blank'>http://www.gs.ru/soft/si/ss1lin/nuclear ... rc5.tar.gz</a> [1.8M]

    В сети есть немало статей, посвящённых установке и настройке DVB-драйверов в под ядром Linux v2.4.xx.x, в частности, например, статьи Сергея Мазенкова <a href='http://www.gs.ru/info/si/1dvbsonlinux.html/' target='_blank'>«Как запустить интернет через DVB-S под Linux 2.4»</a>, <a href='http://www.linuxrsp.ru/artic/dvb.html/' target='_blank'>Сергея Ткачова «Digital Video Broadcasting или как заставить работать TechniSat SkyStar-1 под Linux»</a> или <a href='http://www.d-v.ru/setup/setup.php?id=5/' target='_blank'>«Установка спутникового Internet под Linux»</a>

    Все эти руководства, кроме последнего, предлагают устанавливать
    <a href='http://members.tripod.com/andrei_b/files/linux/dvb/dvbds-2.tar.gz/' target='_blank'>dvbds-2</a>,<a href='http://members.tripod.com/andrei_b/files/linux/dvb/archive/dvbd3.tar.bz2/' target='_blank'>dvbd3.</a>

    Желательно созданный Andrix'ом. Даже в знаменитом Sat-HOWTO предлагается использовать этот путь.

    Однако, данная концепция на сей день несколько устарела, так что остановим наше внимание на «штатных» драйверах:
    <a href='http://www.linuxtv.org/downloads/linuxtv-dvb-1.1.1.tar.bz2' target='_blank'>http://www.linuxtv.org/downloads/linuxt ... .1.tar.bz2</a> от LinuxTV.


    Порядок установки вполне соответствует декларированному в прилагаемом Readme-файле. Нужно только не забыть скачать firmware (в моём случае это файл <a href='http://www.linuxtv.org/downloads/firmware/dvb-ttpci-01.fw-261d' target='_blank'>http://www.linuxtv.org/downloads/firmwa ... 01.fw-261d</a>

    «Раскручиваем» куда-нибудь полученный исходник: tar -jxvf linuxtv-dvb-1.1.1.tar.bz2, заходим в получившуюся директорию linuxtv-1.1.1. Файл firmware помещаем в поддиректорию build-2.4, переименовав его в dvb-ttpci-01.fw.

    Не стоит забывать, что надо сделать ссылку /usr/src/linux из того места, где находятся исходные коды Вашего ядра. В моём случае это выглядело так: ln -sf /usr/src/linux-2.4.31 /usr/src/linux.

    Теперь можно запустить (прямо из linuxtv-1.1.1/build-2.4 make.

    Поправим файл linuxtv-1.1.1/build-2.4:

    # DVB core
    insmod ./dvb-core.o
    на

    # DVB core
    insmod ./dvb-core.o dvb_shutdown_timeout=0
    Это, опять таки, необходимо, чтобы карта при отсутствии каких-либо действий, самопроизвольно не выключилась. Если загрузка модулей прошла удачно, то следующей командой должна быть ./insmod.sh load (её следует запускать только из linuxtv-1.1.1/build-2.4)

    Если lsmod покажет что-то вроде этого:

    dvb-core 39616 0 [ttusb_dec dvb-ttusb-budget dvb-ttpci mt312 cx24110
    grundig_29504-491 grundig_29504-401 tda1004x ves1820 stv0299 alps_tdmb7 alps_tdlb7 ves1x93]


    К моему удивлению, dmesg | less наличия dvb-ttpci устройства не показал, но карта работала! Впрочем, об этом будем говорить несколько позже. На данный момент dmesg выдал следующее:

    Linux video capture interface: v1.00
    saa7146: register extension 'dvb'.
    PCI: Found IRQ 5 for device 00: 09.0
    saa7146_core: found saa7146 @ mem d09f4000 (revision 1, irq 5) (0x13c2,0x0000).
    DVB: registering new adapter (Siemens/Technotrend/Hauppauge PCI rev1.3).
    probe_tuner: try to attach to Siemens/Technotrend/Hauppauge PCI rev1.3
    stv0299.c: setup for tuner BSRU6, TDQB-S00x
    DVB: registering frontend 0: 0 (STV0299/TSA5059/SL1935 based)...
    Siemens/Technotrend/Hauppauge PCI rev1.3 adapter 0 has MAC addr = 00: d0: 5c: 03: 8b: 14
    DVB: AV7110(0) - firm f0240009, rtsl b0250018, vid 71010068, app 8000261b
    DVB: AV7110(0) - firmware supports CI link layer interface
    av7110(0): Crystal audio DAC detected
    saa7146_fops: saa7146 (0): registered device video0 [v4l2]
    av7110: found av7110-0.
    saa7146: register extension 'budget dvb'.
    saa7146: register extension 'budget_ci dvb'.
    saa7146: register extension 'budget dvb /w video in'.
    Если нас всё устраивает, то можно зайти в linuxtv-1.1.1 и набрать make install и настроить автоматическую загрузку модулей при запуске системы, на забыв про dvb-core dvb_shutdown_timeout=0


    <span style='color:red'>1.3. SkyStar 2, Linux kernel v2.6.xx.x</span>
    Теперь попробуем установить SkyStar 2. Пожалуй, самое толковое руководство по этому вопросу сделано NuclearCat — <a href='http://www.gs.ru/info/si/ss2lin24.html/' target='_blank'>«Руководство по установке SkyStar2 под Linux 2.4».</a> Это вполне понятно — кто лучше автора расскажет о том, как оно всё работает. И даже не важно, что оно сделано для ядра 2.4 — для ядер ветки 2.6.xx.x технология будет почти такой же, за исключением того, что с сайта LinuxTV нам ничего загружать не придётся. «Родные» драйвера ядра вполне работоспособны. Таким образом, нам осталось добавить в /usr/src/linux/.config следующие настройки:

    #
    # Digital Video Broadcasting Devices
    #
    CONFIG_DVB=y
    CONFIG_DVB_CORE=m


    #
    # Supported FlexCopII (B2C2) Adapters
    #
    CONFIG_DVB_B2C2_FLEXCOP=m
    CONFIG_DVB_B2C2_FLEXCOP_PCI=m
    CONFIG_DVB_B2C2_FLEXCOP_USB=m
    # CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
    CONFIG_DVB_B2C2_SKYSTAR=m

    #
    # DVB-S (satellite) frontends
    #
    CONFIG_DVB_STV0299=m
    CONFIG_DVB_MT312=m


    Ну чтож, теперь наберём в директории cd /usr/src/linux/ && make mrproper && make modules && make modules_install. Модули готовы.

    Понадобится нам всего три из них: dvb-core, stv0299, skystar2. Как и в случае со SkyStar 1 при загрузке модуля dvb-core следует загружать с параметрами dvb_shutdown_timeout=0. В противном случае, сигнала Вы просто не увидите!

    Итак: modprobe dvb-core dvb_shutdown_timeout=0 dvb_net_debug=1 && modprobe stv0299 && modprobe skystar2. dmesg должен показать следующее (MAC-адрес должен соответсвовать MAC-адресу с метки на Вашей карте):

    drivers/media/dvb/b2c2/skystar2.c: FlexCopIIB(rev.195) chip found
    drivers/media/dvb/b2c2/skystar2.c: the chip has 38 hardware filters
    driver_initialize MAC address = 00: d0: d7:0c: d3: 1dcf: 34:
    DVB: registering new adapter (SkyStar2).
    DVB: registering frontend 0 (ST STV0299 DVB-S)...

    Если Вы видите что-то подобное у себя, значит драйвера установлены вполне удачно.


    <span style='color:red'>1.4. SkyStar 2, Linux v2.4.xx</span>
    Процесс установки под ядром 2.4.xx.x почти идентичен установке под 2.6.xx.x, за исключением того, что нам придётся взять драйвера:

    1. <a href='http://www.linuxtv.org/downloads/linuxtv-dvb-1.1.1.tar.bz2' target='_blank'>http://www.linuxtv.org/downloads/linuxt ... .1.tar.bz2</a> с LinuxTV или
    2. «родные» драйвера от NuclearCat — <a href='http://www.nuclearcat.com/soft/linuxtv-dvb-1.1.1a.tar.bz2' target='_blank'>http://www.nuclearcat.com/soft/linuxtv- ... 1a.tar.bz2</a>


    Как и в случае с картой SkyStar 2, нам понадобится «раскрутить» драйвера в какую-нибудь директорию: tar -jxvf linuxtv-dvb-1.1.1.tar.bz2, зайти в полученную папку и набрать make. Не будем, также, забывать, что в /usr/src/linux должен находится исходный код ядра Linux.

    Если процесс компилляции прошёл удачно, заходим в linuxtv-1.1.1/build-2.4 и загружаем модули: ./insmod.sh load. dmesg должен показать что-то вроде:

    Linux video capture interface: v1.00
    saa7146: register extension 'dvb'.
    saa7146: register extension 'budget dvb'.
    saa7146: register extension 'budget_ci dvb'.
    saa7146: register extension 'budget dvb /w video in'.
    usb.c: registered new driver Technotrend/Hauppauge USB-Nova
    usb.c: registered new driver ttusb-dec
    PCI: Found IRQ 5 for device 00:09.0
    skystar2.c: FlexCopIIB(rev.195) chip found
    skystar2.c: the chip has 38 hardware filters
    DVB: registering new adapter (Technisat SkyStar2 driver).
    probe_tuner: try to attach to Technisat SkyStar2 driver
    stv0299.c: setup for tuner Samsung TBMU24112IMB
    DVB: registering frontend 0:0 (STV0299/TSA5059/SL1935 based)...


    Если всё выглядит так, то считаем установку удачной и можем позволить себе запустить cd linuxtv-1.1.1 && make install и прописываем автозагрузку модулей при запуске системы.


    <span style='color:red'>2. Сетевой интерфейс— </span>
    Итак, если у Вас не установлена devfs, то Вам придётся создать соответсвующие интерфейсы. Лучше всего это сделать при помощи скрипта, предлагаемого NuclearCat в заметке <a href='http://www.gs.ru/info/si/ss2lin24.html/' target='_blank'>«Руководство по установке SkyStar2 под Linux 2.4.». </a> Почему-то в драйверах <a href='http://www.linuxtv.org/downloads/linuxtv-1.1.1.tar.bz2' target='_blank'>http://www.linuxtv.org/downloads/linuxtv-1.1.1.tar.bz2</a>

    скрипт так и неисправлен, так что копируйте его у NuclearCat и запускайте: ./makedev-dvb.sh. Впрочем, думаю, что лучше использовать devfs.

    Теперь настаёт достаточно сложный и ответственный момент: нам предстоит настроить карту на приём информации. Для этого понадобится набор утилит <a href='http://www.linuxtv.org/downloads/linuxtv-dvb-apps-1.1.0.tar.bz2' target='_blank'>http://www.linuxtv.org/downloads/linuxt ... .0.tar.bz2</a>

    всё с того же сайта LinuxTV. Если мы под ядром 2.4.xx.x, то всё в порядке — просто распаковываем поставку, заходим в получившуюся директорию linuxtv-dvb-apps-1.1.0 набираем make, если же ядро 2.6.xx.x, то нужно зайти в директорию linuxtv-dvb-apps-1.1.0/util/ и набрать make. После компилляции, получившиеся файлы:


    linuxtv-dvb-apps-1.1.0/utils/av7110_loadkeys/evtest

    linuxtv-dvb-apps-1.1.0/utils/av7110_loadkesy/av7110_evtest

    linuxtv-dvb-apps-1.1.0/utils/dvbdate/dvbdate

    linuxtv-dvb-apps-1.1.0/utils/dvbnet/dvbnet

    linuxtv-dvb-apps-1.1.0/utils/dvbtraffic

    linuxtv-dvb-apps-1.1.0/utils/scan/dvb-c

    linuxtv-dvb-apps-1.1.0/utils/scan/dvb-s

    linuxtv-dvb-apps-1.1.0/utils/scan/dvb-t

    linuxtv-dvb-apps-1.1.0/utils/szap/czap

    linuxtv-dvb-apps-1.1.0/utils/szap/szap

    linuxtv-dvb-apps-1.1.0/utils/szap/tzap

    либо в локальный ~/bin, в /usr/local/bin/ или ещё куда-нибудь, в «исполняемую» директорию. В этой «игре» нам понадобится всего три утилиты: szap, dvbnet и dvbtraffic

    Теперь нужно «рассказать» карте о том, с каким транспондером и с каким каналом ей предстоит работать. Например, для Сервиса Raduga, спутник Intelsat-904:

    частота 11595 GHz
    поляризация Вертикальная
    скороть передачи 29270 Msps
    PID 4155

    Формат файла, содержащего в себе описания каналов S-диапазона таков:

    Поле Значение Описание
    Название канала/сервиса - Если есть символы, отличные от буквенно-цифровых или пробелы, то название заключить в двойные кавычки.

    Частота GHz Частота передачи канала со спутника в GHz.

    поляриазция v/h Поляриазция: v — вертикальная, h — горизонтальная (соответственно, для круговой h — левая круговая, v — правая круговая)

    diseqc 0/1 Если принимающая головка одна, то «0», если больше, то «1»

    symbol rate Msps Скороcть символьной передачи данных (symbol rate — Mega symbols per rate)

    V-PID номер Идентификатор Пакетов Видеопотока (Video Packet Identificator)

    A-PID номер Идентификтора Аудио Пакетов (Audio Packet Identificator)

    SID номер Идентификатор Сервиса (используется только в цифровом вещании) для использованием рессивера определённого сервиса (Service ID)


    Соответственно, создаём файл /etc/channels.conf и делаем в нём запись:

    Raduga:11595: v: 0: 29270: 0: 0: 0

    Конечно, можно было бы и создать файл, скажем с названием Intelsat-904.60W и нашпиговать его параметрами транспондеров. Ну путь это будет спутник Intelsat-904 W60°. Параметры можно будет взять с сайта SatCodX:

    S 11155000 H 2963000 3/4
    S 11491000 V 5787000 3/4
    S 11520000 V 12000000 3/4
    S 11529000 V 2893000 3/4
    S 11555000 H 2927000 5/6
    S 11595000 H 29270000 5/6
    S 11595000 V 29270000 7/8

    «напустить» scan на этот файл. Если всё верно настроено и антена хорошо сориентирована, то на экране получится что-то вроде

    scanning Intel904.60W
    using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
    initial transponder 11595000 H 29270000 7
    initial transponder 11595000 V 29270000 7
    initial transponder 11520000 V 12000000 3

    >>> tune to: 11595: h: 0: 29270
    WARNING: >>> tuning failed!!!
    >>> tune to: 11595: h: 0: 29270 (tuning failed)
    WARNING: >>> tuning failed!!!
    >>> tune to: 11595: v: 0: 29270
    WARNING: filter timeout pid 0x0011
    WARNING: filter timeout pid 0x0000
    WARNING: filter timeout pid 0x0010
    >>> tune to: 11520: v: 0: 12000
    0x0000 0x0001: pmt_pid 0x0105 MIR-Teleport -- Moskow (running)
    0x0000 0x0002: pmt_pid 0x0106 Teleport MIR -- HTB (running)
    0x0000 0x0003: pmt_pid 0x0107 MIR-Teleport -- MIR-TV (running)
    0x0000 0x0004: pmt_pid 0x0108 MIR Teleport -- MGOU (running)
    0x0000 0x0006: pmt_pid 0x010a MIR-Teleport -- MIR Radio Service (running)
    0x0000 0x0007: pmt_pid 0x0101 MIR-Teleport -- MAYAK FM (running)
    0x0000 0x0008: pmt_pid 0x0100 MIR-Teleport -- MIR Service (running)
    0x0000 0x0009: pmt_pid 0x0102 Mir Teleport -- Radio MIR (running)
    Network Name 'NDS'
    dumping lists (8 services)
    Moskow:11520: v: 0: 12000: 512: 650: 1
    HTB:11520: v: 0: 12000: 515: 653: 2
    MIR-TV:11520: v: 0: 12000: 514: 652: 3
    MGOU:11520: v: 0: 12000: 517: 655: 4
    MIR Radio Service:11520: v: 0:12000:0:660:6
    MAYAK FM:11520: v: 0: 12000: 0: 662: 7
    MIR Service:11520: v: 0: 12000: 513: 651: 8
    Radio MIR:11520: v: 0: 12000: 0: 665: 9
    Done.

    Только беда в том, что сервисы данных scan не «отловит» (обратите внимание на строчку >>> tune to: 11595:h:0:29270 WARNING: >>> tuning failed!!! Как раз, нужный мне транспондер) так что для настроек на Интернет Провайдера, придётся создавать файл channels.conf вручную.

    Попробуем настроить карту на приём данных: /bin/szap -c /etc/channels.conf. Опять же, если всё было сделано верно, то мы увидим на экране следующее:

    brat3 util # szap -c /etc/channels.conf -n 1 -x
    reading channels from file '/etc/channels.conf'
    zapping to 1 'I904':
    sat 0, frequency = 11595 MHz V, symbolrate 29270000, vpid = 0x0000, apid = 0x0000
    using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
    status 03 | signal ba7a | snr 7aeb | ber 000026cd | unc 00000000 |
    status 1f | signal b8fe | snr cfe1 | ber 000005c6 | unc 00000000 | FE_HAS_LOCK


    Понятно, что если сигнал по той или иной причине пропал, ну например, произошло затенение отражателя, то эту процедуру надо повторить.

    Осталось активировать сетевой интерфейс. Будьте внимательны — всё завист от того, какой тип фильтрации сетевых пакетов использует Ваш Интернет Провайдер. Если фильтрация пакетов идёт по MAC-адресу, то исправлять ничего не надо. Если фильтрация идёт по IP-адресу, то необходимо установить MAC-адрес карты в нужное значение. Например, если выданный мне провайдером IP-адрес 10.252.155.40, то его необходимо перевести в шестнадцатеричную форму: 0A:FC:9B:28 и прибавить в начале ещё два нуля: 00:00:0A:FC:9B:28. Иногда, правда, провайдер добавляет специальный префикс. Например, 02:00:0A:FC:9B:28. Впрочем, всю эту информацию вы у него и должны узнать.

    Адрес карты устанавливаем произвольный, причём, желательно, чтоб этот адрес не попадал ни в одну из внутренних подсетей. Ну, например, для выше названной сети вполне подойдёт адрес 10.95.2.1, Поскольку внутренняя подсеть 10.95.1.0/24. Итак:

    1. Настраиваем фильтрацию по PID-у, указанному провайдером (Идентификатору Пакетов) и создаём сетевой интерфейс. Например: dvbnet -p 4152.

    brat3 root # dvbnet -p 4152

    DVB Network Interface Manager
    Version 1.1.0-TVF (Build Fri Aug 12 14: 12: 43 2005)
    Copyright © 2003, TV Files S.p.A

    Device: /dev/dvb/adapter0/net0
    Status: device dvb0_0 for pid 4152 created successfully.
    2. Присваиваем интерфейсу IP-адрес и MAC-адрес. Здесь будьте внимательны — если вы сделаете что-то неверно, то tcpdump будет показывать наличие траффика, но работать ничего не будет.

    ifconfig dvb0_0 10.95.2.1 netmask 255.255.255.255 broadcast 255.255.255.255

    ifconfig dvb0_0 hw ether 00:D0:5C:0A:9B:28

    route add 10.95.2.1 dev dvb0_0

    Теперь ipconfig должен показать что-то в этом роде:

    dvb0_0 Link encap:Ethernet HWaddr 00:D0:5C:0A:F3:9F
    inet addr:10.95.2.1 Bcast:255.255.255.255 Mask:255.255.255.255
    UP BROADCAST RUNNING NOARP MULTICAST MTU:4096 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    Base address:0x1038

    а в таблице маршрутизации должна появится следующая строка:

    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    10.95.2.1 0.0.0.0 255.255.255.255 UH 0 0 0 dvb0_0
    Настал трепетный момент проверки работоспособности сетевого интрефейса. Вариантов два. Самый простой:

    # tcpdump -ni dvb0_0
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on dvb0_0, link-type EN10MB (Ethernet), capture size 96 bytes
    21: 42: 01.020568 IP 217.10.39.84.80 > 88.2909: . 1195548608:1195549945(1337)
    ack 1701755686 win 57491
    21: 42: 01.020584 IP 217.10.39.84.80 > 88.2909: . 1337:2674(1337) ack 1 win
    57491
    21: 42: 01.020586 IP 217.16.19.219.80 > 10.252.246.254.2394: S 3017247152:3017247152(0)
    ack 4146269160 win 5840

    Второй вариант проверки работоспособности интерфейса и того проще:

    brat3 root # dvbtraffic
    0365 10 p/s 1 kb/s 15 kbit
    1029 89 p/s 16 kb/s 134 kbit
    1030 166 p/s 30 kb/s 250 kbit
    1031 774 p/s 142 kb/s 1164 kbit
    1036 312 p/s 57 kb/s 469 kbit
    1037 616 p/s 113 kb/s 926 kbit
    1038 1035 p/s 190 kb/s 1557 kbit
    1039 678 p/s 124 kb/s 1020 kbit
    1040 91 p/s 16 kb/s 137 kbit
    1042 119 p/s 21 kb/s 180 kbit
    1050 1 p/s 0 kb/s 2 kbit
    1051 2161 p/s 396 kb/s 3250 kbit
    1056 5 p/s 0 kb/s 8 kbit
    1057 359 p/s 65 kb/s 540 kbit
    1058 961 p/s 176 kb/s 1445 kbit
    1059 5 p/s 0 kb/s 8 kbit
    1101 244 p/s 44 kb/s 367 kbit
    1102 222 p/s 40 kb/s 334 kbit
    1103 9 p/s 1 kb/s 14 kbit
    1104 166 p/s 30 kb/s 249 kbit
    1105 49 p/s 8 kb/s 73 kbit
    1109 1095 p/s 201 kb/s 1647 kbit
    2000 9177 p/s 1684 kb/s 13802 kbit
    -PID--FREQ-----BANDWIDTH-BANDWIDTH-
    0365 9 p/s 1 kb/s 14 kbit

    Теперь неплохо бы собрать это всё в один скрипт. Ну пусть он называется, скажем, [
    URL="http://www.opennet.ru/docs/RUS/linuxsat/files/dvb.sh"]dvb.sh[/url]. Его можно взять из заметки Виталия Прядко <a href='http://opennet.ru/base/sys/skystar2_linux.txt.html/' target='_blank'>«Установка Skystar-2 на Linux (skystar dvb linux driver)»</a>
  2. pilot22
    Оффлайн

    pilot22 Active Member

    Credit:
    $23,28
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    <span style='color:green'>Пишем простую систему учета трафика. </span>

    У многих начинающих системных администраторов часто стоит вопрос, а как организовать систему учета трафика?
    В рамках данной статьи мы рассмотрим простую систему учета трафика, которая должна будет обладать следующими характеристиками:

    Учет всего трафика, проходящего через маршрутизатор работающий под ОС Linux;

    Возможность быстрого изменения конфигурации без внесения изменений в код;

    Данные о трафике должны храниться в базе данных, в нашем случае мы в качестве сервера баз данных будем использовать MySQL.
    В рассматриваемом примере будем считать, что все IP адреса в нашей сети реальные. Начнем с создания конфигурационного файла, назовем его billing.conf. Пусть он имеет следующий вид:

    # Формируем список IP адресов машин или сетей, для которых мы будем считать
    # трафик
    # Рабочее место
    WS1="192.168.0.1"
    # Ceть нашего клиента
    NET="192.168.1.0/24"
    # Объединим объединим все сети и адреса в один список.
    ALLNETS="$WS1 $NET"

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

    Программы формирования правил учета для firewall, с использованием iptables;

    Программы снятия статистики;

    Программы отображения статистики;
    Рассмотрим программу формирования правил учета для firewall, названную в нашем случае rc.firewall, которую нужно будет добавить в один из файлов, который будет выполняться при загрузке системы.

    Для начала немного теории, в ядрах Linux серии 2.4.X используется firewall NetFilter, интерфейсом к которому является программа iptables. В NetFilter cущестуют несколько цепочек: INPUT - все входящие пакеты, адресованные маршрутизатору, OUTPUT - все исходящии из маршрутизатора пакеты, FORWARD - все пересланные маршрутизатором пакеты во внешнюю сеть.

    #!/bin/bash
    # Подключаем конфигурационный файл
    . /etc/lbiling.conf
    IPTABLES="/sbin/iptables" # Задаем путь к программе iptables
    ###################################
    # Учет трафика
    ###################################
    # Функция для создания правила учета
    addrule(){
    $IPTABLES -N ACCT_IN_ # Создаем правило для учета входяшего трафика
    $IPTABLES -N ACCT_OUT_ # Создаем правило для учета изходяшего трафика
    $IPTABLES -F ACCT_IN_ # Обнулим полученные цепочки
    $IPTABLES -F ACCT_OUT_
    $IPTABLES -A INPUT -j ACCT_IN_ # Включим учет по цепочкам
    $IPTABLES -A FORWARD -j ACCT_IN_
    $IPTABLES -A FORWARD -j ACCT_OUT_
    $IPTABLES -A OUTPUT -j ACCT_OUT_
    $IPTABLES -A ACCT_IN_ -s # Считать входящим трафик у которого источник
    # адрес
    $IPTABLES -A ACCT_OUT_ -d # Считать исходящим трафик у которого получатель
    # адрес
    }
    # Создаем правила для учета трафика
    for NET in $ALLNETS; do
    # Для всех сетей в списке $ALLNET создать правила учета трафика
    addrule $NET $NET
    done

    После выполнения нашей программы rc.firewall, набрав в консоли:

    # iptables -L

    Вы должны будете увидеть нечто подобное:

    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    ACCT_IN_192.168.0.1 all -- anywhere anywhere
    ACCT_IN_192.168.1.0/24 all -- anywhere anywhere

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    ACCT_IN_192.168.0.1 all -- anywhere anywhere
    ACCT_OUT_192.168.0.1 all -- anywhere anywhere
    ACCT_IN_192.168.1.0/24 all -- anywhere anywhere
    ACCT_OUT_192.168.1.0/24 all -- anywhere anywhere

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    ACCT_OUT_192.168.0.1 all -- anywhere anywhere
    ACCT_OUT_192.168.1.0/24 all -- anywhere anywhere

    Chain ACCT_IN_192.168.0.1 (2 references)
    target prot opt source destination
    all -- 192.168.0.1 anywhere

    Chain ACCT_IN_192.168.1.0/24 (2 references)
    target prot opt source destination
    all -- 192.168.1.0/24 anywhere

    Chain ACCT_OUT_192.168.0.1 (2 references)
    target prot opt source destination
    all -- anywhere 192.168.0.1

    Chain ACCT_OUT_192.168.1.0/24 (2 references)
    target prot opt source destination
    all -- anywhere 192.168.1.0/24

    Создадим базу данных в MySQL с названием trafficbd, для этого необходимо будет выполнить следующий SQL запрос (вопрос "как это сделать" не входит в рамки нашей статьи, обратитесь к документации MySQL):

    CREATE DATABASE IF NOT EXISTS trafficbd;
    use trafficbd;

    #
    # Структура таблицы `traffic`
    #

    CREATE TABLE traffic (
    id int(11) NOT NULL auto_increment,
    date datetime NOT NULL default '0000-00-00 00:00:00',
    ip varchar(20) NOT NULL default '',
    inb int(11) NOT NULL default '0',
    outb int(11) NOT NULL default '0',
    KEY id (id)
    ) TYPE=MyISAM;

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

    #!/usr/bin/perl
    # Функция занимающаяся сбором и внесением данных в БД.
    sub account{
    $name=$_[0]; # Имя правила
    $IP_IN=0; # Инициализация счетчиков
    $IP_OUT=0;
    # Командная строка MySQL для внесения данных в таблицу.
    $mysqlcommand="/usr/bin/mysql -hlocalhost trafficbd -e";
    # Снимем данные со счетчика входящего трафика и обнулим
    $ipstuff=`/sbin/iptables -L -Z ACCT_IN_$name -v -x`;
    # Выделим из вывода предыдущей команды значение счетчика
    @IPTBMASS=split(/ /,$ipstuff);
    chomp $IPTBMASS[2];
    $string=$IPTBMASS[2];
    $string=~ s/s{1,}/ /g;
    @INFOMASS=split(/ /,$string);
    $IP_IN=$INFOMASS[2];
    # Снимем данные со счетчика исходящего трафика и обнулим
    $ipstuff=`/sbin/iptables -L -Z ACCT_OUT_$name -v -x`;
    # Выделим из вывода предыдущей команды значение счетчика
    @IPTBMASS=split(/ /,$ipstuff);
    $string=$IPTBMASS[2];
    $string=~ s/s{1,}/ /g;
    @INFOMASS2=split(/ /,$string);
    $IP_OUT=$INFOMASS2[2];
    # Получим текущее время
    ($min, $hours, $day, $mounth,$year) = (localtime)[1,2,3,4,5];
    $time=$hours.":".$min.":00";
    $mounth=$mounth+1;
    $year=$year+1900;
    $date=$year."-".$mounth."-".$day;
    # Формируем SQL запрос
    $sql="insert into traffic values('','".$date." ".$time."','".$name."','".$IP_IN."','".$IP_OUT."') ;";
    # Выполняем его
    `$mysqlcommand "$sql"`;
    } # На этом функция account заканчивается:)
    # Основная программа

    $config=`./lconfreader.sh`; # Прочитаем конфигурационный файл.

    # Ниже приводится текст скрипта lconfreader.sh:
    # #!/bin/bash
    # . ./lbiling.conf # Включить конфигурационный файл
    # echo $ALLNETS # Вывести в stdout список всех сетей, покоторым ведется учет.
    #

    chomp $config;

    @NETMASS=split(/ /,$config);

    foreach $nets(@NETMASS)
    {
    # Для каждого элемента списка, выполнить функцию account
    account $nets;
    }

    Вот собственно и вся биллинговая система :)
  3. Nochnoy Gonshk
    Оффлайн

    Nochnoy Gonshk Новичок

    Credit:
    $0,00
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    .::pilot::., опять умничаем??? =) :x
  4. Old Ranger
    Оффлайн

    Old Ranger Active Member

    Credit:
    $3,97
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    Афтар -пиши исчо!
    Как работать с ТТ-1401
  5. pilot22
    Оффлайн

    pilot22 Active Member

    Credit:
    $23,28
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    Ночной ГонщЫк, опять повторяю тебе тормазу, когда ты тут прибегал и писал на весь форум, а как мне то, а как мне это...... лучше читай и впитывай инфу и искать не придеться....
  6. pilot22
    Оффлайн

    pilot22 Active Member

    Credit:
    $23,28
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    Old Ranger, Здарова, давно не виделись, надо пивка попить :) ТТ-1401 аналогия настройки SS1 все тоже самое только с софтом для ТТ-1401....
  7. heygor
    Оффлайн

    heygor Новичок

    Credit:
    $0,00
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    Афтар сам то это проделывал или копирнул текст мышой и вставил - а вдруг там с ошибками технология описана?
    Свои-бы наработки выложил ну например "как настроить TH-7021A под линухой" ну или хотя-бы под виндой :)
  8. pilot22
    Оффлайн

    pilot22 Active Member

    Credit:
    $23,28
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    heygor, конечно делал, поэтому и вставил статьи, которые тоже взяты не от туда где я брал...Ставил на SS1
  9. Nochnoy Gonshk
    Оффлайн

    Nochnoy Gonshk Новичок

    Credit:
    $0,00
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    heygor, .::pilot::., яж говорю поумничать решил =), передрать проще всего., а вот написать ...
  10. pilot22
    Оффлайн

    pilot22 Active Member

    Credit:
    $23,28
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    Ночной ГонщЫк, писать статьи за бесплатно нет желания :)
  11. DVD
    Оффлайн

    DVD Новичок

    Credit:
    $784,89
    Book Reviews:
    0
    re:уРХФОЙЛПЧЩК йОФЕТОЕФ ДМС РТПДЧЙОХФЩИ

    +1

Поделиться этой страницей