The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройка спутникового интернета в linux (dvb linux)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: dvb, linux,  (найти похожие документы)
From: Vsevolod Balashov <http://vsevolod.balashov.name>; Date: Mon, 28 Feb 2007 14:31:37 +0000 (UTC) Subject: Настройка спутникового интернета в linux Оригинал: http://vsevolod.balashov.name/2007/2/28/dvb-sat-linux Я живу в крайне тяжелых онлайновых условиях. О безлимитной выделенке нет и речи. ;) До недавнего времени доступ в интернет у меня дома был посредством gprs, а с недавних пор к нему добавилась спутниковая тарелка. В домашнем сетевом хозяйстве раздачей трафика занимался старый пентиум, тихо жужжащий в углу. Все было настроено 1 раз и забыто. Но однажды он умер... Переставив dvb карту в живой компьютер, я внезапно обнаружил отсутствие бекапа конфигов и большие пробелы в памяти как вообще все это работает. Пришлось вспоминать. Далее описываю по горячим следам. Все нижеописанное происходит в ubuntu последней версии. Настрою соединение через globax без vpn. Ставлю утилиты работы с dvb картой. У меня, как и у многих skystar2, но когда нибудь я куплю twinhan ;). $ sudo aptitude install dvb-utils Нужно сделать что бы карта не "засыпала". Что это и как - об этом можно почитать в многочисленных околоспутниковых форумах. Решение следующее: Добавляем файлик, который грузит модуль карты с параметром, запрещающим засыпание. $ cat /etc/modprobe.d/dvb-core options dvb-core dvb_shutdown_timeout=0 Теперь нужно выгрузить/загрузить этот модуль (и все зависимые от него). Я просто перезагрузил компьютер. Качаю дистрибутив (ссылка может устареть) globax for linux, извлекаю из него исполняемый файл globax. Остальное не требуется. $ ls /usr/local/sbin/globax /usr/local/sbin/globax Конфиг глобакса. Получен мною от провайдера stv.su и используется практически без изменений. $ cat /etc/globax.conf [server] port = 6768 log = /var/log/globax.log datatimeout = 60 [remote] name = globax server = 195.10.212.10:1111 login = globax_login passwd = globax_password speed_in = 320000:384000 speed_out = 3000 mtu = 576 mru = 1500 flush_time = 500 [local] # http/https proxy remote = globax port = 127.0.0.1:3128 service_int = 0 [local] # socks 4/4a/5 proxy remote = globax port = 127.0.0.1:1080 service_int = 2 [local] # transparent port # http://faq.spacegate.com.ua/index.php?action=artikel&cat=7&id=97&artlang=ru remote = globax port = 127.0.0.1:8000 transparent Globax в процессе работы пишет логи, и их надо чистить. =) Поскольку неизвестно, умеет ли он переоткрывать файловый дескриптор по сигналу, а экспериментировать лень - делаю так же как с рельсами. $ cat /etc/logrotate.d/globax.logrotate /var/log/globax.log { rotate 7 missingok compress delaycompress notifempty copytruncate } Параметры настройки dvb карты на спутник. Они хранятся, как правило, в файле channels.conf. Для моего провайдера нагуглить их почему то не получилось. Я долго тупил. Потом понял, что они есть в отладочном выводе команды szap, которых предостаточно на форумах. Вот сравните: $ sudo szap -c /etc/channels.conf -n 1 -x reading channels from file '/etc/channels.conf' zapping to 1 'stv': sat 0, frequency = 11595 MHz V, symbolrate 29270000, vpid = 0x1040, apid = 0x1040 using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0' status 00 | signal 5353 | snr f8f8 | ber 00000000 | unc 00000000 | status 1f | signal 4040 | snr 3333 | ber 00000000 | unc 00000042 | FE_HAS_LOCK И теперь собственно сам файл. Для спутникового интернета важны частота, поляризация и символьная скорость. $ cat /etc/channels.conf stv:11595:v:0:29270:0:0:0 Скрипт, который собирает все это вместе, настраивает dvb карту и запускает globax. $ cat /etc/init.d/dbvd #!/bin/sh PATH=/usr/sbin:/usr/bin:/sbin:/bin NAME=`basename $0` # https://cabinet.stv.su/index.php?m=info IP="192.168.XXX.XXX" MAC="00:00:C0:A8:XX:XX" PID="4160" # https://cabinet.stv.su/index.php?m=conf GLOBAX_BIN="/usr/local/sbin/globax" GLOBAX_CONF="/etc/globax.conf" CHANNELS_CONF="/etc/channels.conf" do_szap() { szap -c $CHANNELS_CONF -n 1 -x } do_ifup() { dvbnet -p $PID ifconfig dvb0_0 $IP ifconfig dvb0_0 hw ether $MAC echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter } do_ifdn() { ifconfig dvb0_0 down dvbnet -d 0 } do_glup() { $GLOBAX_BIN $GLOBAX_CONF sleep 2 kill `ps ax|grep ${GLOBAX_BIN}|head -n +1|awk '{print $1}'` } do_gldn() { killall $GLOBAX_BIN } case "$1" in start) echo "starting $NAME..." do_szap do_ifup do_glup ;; stop) echo "stoping $NAME..." do_gldn do_ifdn ;; reload) do_szap ;; restart) do_ifdn rmmod b2c2_flexcop_pci b2c2_flexcop \ mt352 mt312 bcm3510 stv0299 stv0297 nxt200x lgdt330x \ dvb_pll dvb_core sleep 2 modprobe b2c2_flexcop_pci do_szap do_ifup ;; *) echo "usage: $NAME start|stop|reload|restart" exit 3 ;; esac exit 0 Устанавливаю его в автозагрузку и запускаю. $ sudo update-rc.d dvbd start 99 S . $ sudo invoke-rc.d dvbd start Нисходящий канал готов. Время настроить программы на использование http/socks прокси, а неимеющие таких настроек соксифицировать с помощью, например, tsocks (есть в дистрибутиве). За рамками рассмотрения остались: * прокладка тунелля pptp l2tp openvpn или какого другого * кеширование http трафика squid или oops * прозрачное проксирование (последняя секция в globax.conf) * автоматизация поднятия наземного канала diald И тут выясняется одна неприятная особенность: Встроенные в globax http/https и socks4a/5 позволяют подключаться к интернет ресурсам используя доменные имена (то есть не преобразуя их в IP адреса на локальном компьютере) Но некоторые программы все равно желают локального разрешения имен. Им нужен локальный доступ к dns серверу. По медленному и дорогому наземному каналу. Пару слов об оптимизации наземного канала: Ставлю локальный кеширующий сервер dnsmasq $ sudo aptitude install dnsmasq К идущему в пакете конфигу добавляю 1 строчку: $ cat /etc/dnsmasq.conf | grep resolv-file resolv-file=/etc/ppp/resolv.conf Теперь dnsmasq при отстутствии у себя информации о доменном имени будет запрашивать один из серверов имен наземного провайдера. В конфиге дозвона к наземному провайдеру (/etc/ppp/peers/provider_name) у меня присутствует: * nodefaultroute * usepeerdns Скрипты выполняемые при поднятии и опускании интерфейса я выключил за ненадобностью. $ sudo chmod -x /etc/ppp/ip-up.d/* $ sudo chmod -x /etc/ppp/ip-down.d/* А потом написал свой, попроще. В нем сохраняю имена dns серверов провайдера и прописываю маршруты к ним, и к серверу globax. $ cat /etc/ppp/ip-up.d/0dvb-up #!/bin/sh PATH=/usr/sbin:/usr/bin:/sbin:/bin GLOBAX_IP="195.10.212.10" route add -host $DNS1 gw $IPREMOTE route add -host $DNS2 gw $IPREMOTE echo "#" >/etc/ppp/resolv.conf echo "nameserver $DNS1" >>/etc/ppp/resolv.conf echo "nameserver $DNS2" >>/etc/ppp/resolv.conf killall -sighup dnsmasq route add -host $GLOBAX_IP gw $IPREMOTE Последний штрих: $ cat /etc/resolv.conf nameserver 127.0.0.1 Эта вся пертушка с up/down скриптами затеяна потому что по умолчанию они либо переписывают /etc/resolv.conf либо не отдают имена dns серверов. Подозреваю, есть более элегантное решение ;) Придумал сейчас как с помощью socat, iptables и какой то матери натравить dnsmasq через globax на dns сервер спутникового провайдера. Пойду поиграюсь... =) UPDATE Отдельные борцы за чистоту терминов оскорбились, что я клиентскую часть globax обозвал сервером. Исправил. ;) UPDATE2 Оказывается есть такие особенности как "интерференция" и "залипание". Если кто с ними сталкивался, пожалуйста опишите как они выглядят и, по возможности, как с ними бороться. А то мне как то везет. Или не везет. ;) Спасибо. :) UPDATE2.1 Немного дороботал скрипт /etc/init.d/dvbd по идее теперь если его запускать с параметром reload то это должно быть борьбой с интерференцией. А с параметром restart - борьба с залипанием. Пресловутыми "интреференцией" и "залипанием". А вот скрипт, для автоматизации проверок, путем вызова из crontab $ cat /usr/local/sbin/dvb-check #!/bin/sh # если статус карты не 1f значит она не залочена. if [ '1f' != `femon | head -3 | tail -1 | awk '{print $2}'` ]; then invoke-rc.d dvbd reload else #если карта залочена, а нету пидов с трафиком значит она повисла. if [ '10' != `dvbtraffic | head -10 | wc -l` ]; then invoke-rc.d dvbd restart fi fi

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Злобный Аноним (?), 00:38, 09/07/2008 [ответить]  
  • +/
    Славно! И для Убунту подойдет... Странно, у меня в modprobe.d указано, чтобы карта не засыпала, а не работает. Какая может быть причина? 7.10 Убунту GNU/Линукс
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру