Провайдер спутникового Internet: SatSpeed
Спутниковая (DVB) карта: Telemann SM200DTP
Запросный канал: dial-up соединение
ОС: Linux (kernel 2.4.x)
Внимание! Все описанные действия описываются, подразумевая, что у вас уже имеется установленная машина с ОС Linux (я использовал RedHat 7.1 в конфигурации не по умолчанию). За основу установки был принят "шаблон", правда нескольно скорректированный и дополненный, с www.bog.pp.ru
Установка DVB Telemann SM200DTP
Итак, первое, что необходимо сделать, это установить DVB карту. В своих экспериментах я использовал различные версии ядра 2.4: от 2.4.2 до 2.4.17. В данный момент все работает на 2.4.18. Перекомпилируем ядро с поддержкой модулей и всего вашего оборудования.
Теперь нам необходимы драйвера для карты: берем их с сайта производителя: http://www.telemann.com/datadown/sm200d/sm200d_linux_text_v2.01.tar.gz (у меня заработала версия 2.01). И еще нам нужен один файл sm200d_v2.01.24.src.tar.gz с http://ts-zone.tripod.com/sm200, или на этом сайте. Теперь разворачиваем их. Заменяем родной файл sm2_drv.c на такой-же, но из второго, скаченного нами, архива (без этого драйвер не собирается). Теперь немного правим файл ./drv/drv.mak
Было:
CFLAGS = -DMODULE –D__KERNEL__ -Wall –c –DSM200D –O
Надо:
CFLAGS = -DMODULE –D__KERNEL__ -Wall –c –DSM200D –O –I /usr/src/linux/include
Иначе драйвер компилируется, но работать не хочет.
Затем все это дело компилируем. Получаем директорию ./Realease. В ней расположены все файлы, которые нам нужны.
Теперь можно проверить как собрались драйвера. Подключаем их к ядру:
> insmod sm200d_lnx.o
Посмотрим, как оно поживает :)
> lsmod
должны получить, что-то типа этого:
Module Size Used by
Sm200d_lnx 20240 1
Ну, все, драйвер подцепляется. Идем дальше.
Для автоматического подключения и настройки карты я изготовил небольшой скриптик (точнее я его переделал из http://www.ll.net.ua/pptp/soft/sm200 )
Вот, что, что получилось у меня:
#!/bin/sh
# sm200d Start/Stop the sm200d.
# chkconfig: 2345 10 91
# description: sm200d is a DVB card to receive satellite data channel.
# processname: sm200d
# pidfile: /var/run/sm200d.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Paths to commands:
PS=/bin/ps
GREP=/bin/grep
WC=/usr/bin/wc
AWK=/usr/bin/awk
ECHO=/bin/echo
INSMOD=/sbin/insmod
RMMOD=/sbin/rmmod
IFCONFIG=/sbin/ifconfig
PWD=/bin/pwd
SH=/bin/sh
KILL=/bin/kill
TOUCH=/bin/touch
RM=/bin/rm
# sm200d software directory:
SM200D_DIR={сюда пропишите свою директорию Realease}
RETVAL=0
# See how we were called.
case "$1" in
start)
$ECHO -n "Starting sm200d: "
r=`$PS axw | $GREP "SkyData" | $GREP -v "grep"
| $WC |\
$AWK '{print $1}'`
if [ $r != "0" ]; then
$ECHO -ne "already running.\n"
RETVAL=1
else
#
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward
$INSMOD -fs $SM200D_DIR/sm200d_lnx.o
DIR=`$PWD`
cd $SM200D_DIR
./SkyData 2>/dev/null &
sleep 1
$IFCONFIG sm200d 192.168.4.1 up
echo 0 > /proc/sys/net/ipv4/conf/sm200d/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/sm200d/accept_redirects
echo 1 > /proc/sys/net/ipv4/conf/sm200d/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/sm200d/log_martians
echo 1 > /proc/sys/net/ipv4/conf/sm200d/send_redirects
cd $DIR
$ECHO
RETVAL=0
fi
[ $RETVAL -eq 0 ] && $TOUCH /var/lock/subsys/sm200d
;;
stop)
$ECHO -n "Stopping sm200d: "
DIR=`$PWD`
$KILL `$PS axw | $GREP "sm200d.run" | $GREP -v "grep" |\
$AWK '{print $1}'` >/dev/null 2>/dev/null
$KILL `$PS axw | $GREP "SkyData" | $GREP -v "grep"
|\
$AWK '{print $1}'` >/dev/null 2>/dev/null
cd $DIR
$IFCONFIG sm200d down >/dev/null 2>/dev/null
$RMMOD sm200d_lnx >/dev/null 2>/dev/null
RETVAL=$?
$ECHO
[ $RETVAL -eq 0 ] && $RM -f /var/lock/subsys/sm200d
;;
status)
r=`$PS axw | $GREP "SkyData" | $GREP -v "grep" | $WC |\ $AWK '{print $1}'`
if [ $r != "0" ]; then
$ECHO -ne "sm200d is running.\n"
else
$ECHO -ne "sm200d is not running.\n"
fi
RETVAL=0
;;
restart)
$0 stop
$0 start
RETVAL=$?
;;
reload)
$0 restart
RETVAL=$?
;;
*)
$ECHO "Usage: sm200d {start|stop|status|restart}"
exit 1
esac
exit $RETVAL
Frequency = 12525
SymbolRate = 14649
LocalOscillator = 10600
Alignment = H
LNBHigh = 1
LNBPower = 1
ToneBurst = 0
DiseqcPort = 0
DataPID = 1C3,3
DataPID = 200,3
MACFilter = 1
#Это наш IP адрес, который мы установили для sm200d
IPAddress = 192.168.4.1
Я столкнулся с тем, что карта вроде работает, но из нее ничего не выходит. Оказалось надо дать команду
echo 0 > /proc/sys/net/ipv4/conf/sm200d/rp_filter
И тогда, все начинает работать. Эта команда прописана в начальной загрузке.
И еще один момент. Каждый раз после соединения через модем (т.е. по ppp0) параметр rp_filter у sm200d изменяется на 1. Т.е. работать не будет. По этому пришлось написать еще файлик и запускать его сразу после соединения по ppp0. Вот он.
#!/bin/sh
echo 0 > /proc/sys/net/ipv4/conf/sm200d/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/sm200d/accept_redirects
echo 1 > /proc/sys/net/ipv4/conf/sm200d/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/sm200d/log_martians
echo 1 > /proc/sys/net/ipv4/conf/sm200d/send_redirects
На этом настройка карты завершена.
Настройка клиента sat4u
Теперь надо настроить клиентский (локальный) прокси сервер sat4u. Я установил sat4u версию 0.7 (на текущий момент 11.04.2002 она как раз и работает.)
Здесь все просто. Скачиваем из любого места. Например с http://www.internetvia-satellit.de/download/linux-sat4u-0.7
Разворачиваем.
Генерируем ключи:
./keygen ./sat4u > key.ini
Затем эти ключи надо зарегистрировать. Открывает на этой-же машине браузер (хотя люди говорят, что можно и с другой. Главное, что бы ключи были сгенерированны на машине с катрой), и вводим в адресной строке:
https://ors2.satspeed.de/register.php?key1=”первый-ключ”&key2=”второй-ключ”
после ввода логина на вывалившейся странице должно появится сообщение о успешной регистрации. Прописываем в браузере настройки прокси:
http proxy: localhost:9202
socks proxy: localhost:9203
Теперь можно запускать клиента.
./sat4u
Теперь через браузер заходим на http://localhost:2517/www/client/login/login.html
Вводим пароль еще раз. И все. Да, поставьте галочку «Remember Password». После этого не надо будет повторно вводить пароль. Он будет храниться в зашифрованном виде.
Ну и конечно это все тоже хорошо было бы автоматизировать при загрузке. Пожалуйста:
#!/bin/sh
#
#chkconfig: 345 90 95
# description: sat4u Client
# processname: sat4u
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /(путьк sat4u) ] || exit 0
# See how we were called.
case "$1" in
start)
# Start client.
echo -n "Starting sat4u: "
cd (путь к sat4u)/sat4u-0.7
./sat4u &
touch /var/lock/subsys/sat4u
echo
;;
stop)
# Stop client.
echo -n "Shutting down sat4u: "
killproc sat4u
echo "done"
rm -f /var/lock/subsys/sat4u
;;
status)
# Status client
status sat4u
;;
restart)
# Restart client sat4u
$0 stop
$0 start
;;
*)
echo "Usage: sat4u {start|stop|restart|status}"
exit 1
esac
exit 0
И конечно не забудем chkconfig.
Ну вот, вроде и все.
Можно конечно сделать чтобы пользователи из локальной сети работали через этот канал. Но, как говорится, это уже другая история.
Удачи.
С великим удовольствием прочитаю все пожелания и предложения по корректировке неправильностей и недоделанностей. Эта инструкция писалась исходя из того, что мне в свое время не удалось найти ничего подобного в Internet-е в одном месте. Все приходилось собирать по кускам и немного доделывать. Может быть все, то, что я написал и не правильно, но, оно работает (даже по сети).
e-mail: paganelp@yahoo.com
Полезные ссылки:
http://ts-zone.tripod.com/sm200/index_rus.html
http://www.ll.net.ua/pptp/soft/sm200