Tuesday, September 26th, 2017

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

Published on Март 30, 2009 by   ·   Комментариев нет

Я живу в крайне тяжелых онлайновых условиях.

О безлимитной выделенке нет и речи. ;) До недавнего времени доступ в
интернет у меня дома был посредством 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)
            <div style="display: none"></div>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 [ &#039;1f&#039; != `femon | head -3 | tail -1 | awk &#039;{print $2}&#039;` ]; then
                invoke-rc.d dvbd reload
        else
        #если карта залочена, а нету пидов с трафиком значит она повисла.
                if [ &#039;10&#039; != `dvbtraffic | head -10 | wc -l` ]; then
                        invoke-rc.d dvbd restart
                fi
        fi
zp8497586rq











































Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]