Описывается настройка спутникового интернета провайдера "Радуга Интернет" через OpenVPN.
После установки спутниковой карты в свободный слот PCI и загрузки ОС создаем
файл "/etc/modprobe.d/dvb_core.modprobe"
options dvb_core dvb_shutdown_timeout=915360000
Этим мы препятствуем "засыпанию" карты. В новых ядрах, в отличие от старых,
установка параметра "dvb_shutdown_timeout" в 0 не помогает и потому надо выставлять
заведомо большое значение таймаута (в секундах).
Перезагружаем компьютер.
Устанавливаем требуемые утилиты
$ sudo aptitude install dvb-utils
Создаем файл /etc/channels.conf
Raduga:11671:v:0:18200:0:0:0
Здесь:
Raduga - название канала. Может быть любым.
11671 - частота
v - поляризация. Может быть H - горизонтальная и V - вертикальная
0 - FEC: 0 - Авто, 3 - 3/4,...
18200 - Величина потока (Symbol rate)
0 - Видео PID
0 - Аудио PID
0 - Program id
Пробуем залочиться на сигнал
$ szap -c /etc/channels.conf -x -n 1
reading channels from file '/etc/channels.conf'
zapping to 1 'Raduga':
sat 0, frequency = 11671 MHz V, symbolrate 18200000, vpid = 0, apid = 0
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 07 | signal 9797 | snr 3270 | ber 0000ff00 | unc 00000000 |
status 1f | signal 9696 | snr d344 | ber 00001800 | unc 00000000 | FE_HAS_LOCK
Ключевые значения: "status 1f" и "FE_HAS_LOCK". Остальные поля указывают уровень сигнала,
количество ошибок и т.п. Когда устойчивый сигнал будет получен, szap завершит свою работу.
Теперь отключим rp_filter, фильтрующий пакеты которые не могут уйти через тот
же интерфейс что и пришли.
В нашем случае пакет приходит через один интерфейс, а уходит через другой
$ sudo sh -c 'echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter'
Создаем сетевой интерфейс спутниковой карты
$ sudo dvbnet -p 1234
где "1234" - ваш PID. После выполнения команды должен появиться сетевой
интерфейс "dvb0_0" (неактивный).
Настраиваем интерфейс
$ sudo ifconfig dvb0_0 hw ether YOUR-MAC-ADDRESS YOUR-IP-ADDRESS netmask 255.255.255.0 up
где YOUR-MAC-ADDRESS и YOUR-IP-ADDRESS соответственно MAC-адрес и IP-адрес вашей подписки.
Смотрим на наличие входящего трафика на интерфейсе dvb0_0
$ sudo dvbtraffic
-PID--FREQ-----BANDWIDTH-BANDWIDTH-
0000 10 p/s 1 kb/s 15 kbit
0010 0 p/s 0 kb/s 1 kbit
0011 0 p/s 0 kb/s 1 kbit
0014 0 p/s 0 kb/s 1 kbit
0032 60 p/s 11 kb/s 90 kbit
003c 10 p/s 1 kb/s 15 kbit
003d 31 p/s 5 kb/s 47 kbit
0064 13 p/s 2 kb/s 20 kbit
Если программа ничего не выводит, то проблемы могут быть в неправильных
параметрах или "заснула" спутниковая карта.
Правим конфигурационный файл /etc/network/interfaces и добавляем
auto dvb0_0
iface dvb0_0 inet manual
pre-up sh -c '/usr/bin/dvbnet -a 0 -p 1234 > /dev/null'
up ifconfig $IFACE hw ether YOUR-MAC-ADDRESS YOUR-IP-ADDRESS netmask 255.255.255.0 up
up sh -c 'echo 0 > /proc/sys/net/ipv4/conf/dvb0_0/rp_filter'
up sh -c '/usr/bin/szap -c /etc/channels.conf -n 1 -x'
down ifconfig $IFACE down
down /usr/bin/dvbnet -d 0
Теперь приступим к установке и настройке openvpn
Установим openvpn
$ sudo aptitude install openvpn
Скачаем из личного кабинета архив с ключами для openvpn. Из архива распакуем файлы
ca.crt, client.ovpn, i0xxxxxx.csr, i0xxxxxx.crt, i0xxxxxx.key.
Скопируем все эти файлы в директорию /etc/openvpn
Сменим права доступа к файлу i0xxxxxx.key
$ sudo chmod 0400 /etc/openvpn/i0xxxxxx.key
Переименуем файл client.ovpn в raduga.conf и отредактируем его.
В итоге должно получиться примерно такое содержание
client
dev tap
# dev-node Raduga
proto udp
remote 80.81.208.66 55032
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/i0xxxxxx.crt
key /etc/openvpn/i0xxxxxx.key
ns-cert-type server
verb 3
comp-lzo
comp-noadapt
auth-user-pass /etc/openvpn/password.txt
route-up /etc/openvpn/tap0-route.sh
Создаем файл /etc/openvpn/password.txt с именем и паролем подписки
user
password
и делаем его доступным на чтение только владельцу
$ sudo chmod 0400 /etc/openvpn/password.txt
Создаем скрипт /etc/openvpn/tap0-route.sh, выполняемый после поднятия роутов.
netstat -rn | \
sed '1,2d' | \
awk '{ \
if ($1 == "0.0.0.0" && $2 == "10.251.32.1" && $3 == "0.0.0.0" && $8 != "tap0") { \
EX=sprintf("/sbin/route del -net 0.0.0.0/0 gw %s dev %s && /sbin/route add -net 0.0.0.0/0 gw %s dev tap0\n", \
$2, $8, $2); system(EX); } }'
В моем случае openvpn дефолтовый маршрут постоянно вешал на интерфейс dvb0_0
и пришлось прибегнуть к принудительной привязке скриптом роута к tap0. Делаем скрипт исполняемым
$ sudo chmod +x /etc/openvpn/tap0-route.sh
Редактируем файл /etc/default/openvpn и добавляем строку
AUTOSTART="raduga"
Пробуем соединиться к провайдеру из консоли
$ sudo openvpn /etc/openvpn/raduga.conf
Если успешно соединились с сервером, закрываем соединение нажатием "ctrl+c".
Перезапускаем даемон
$ sudo /etc/init.d/openvpn restart
|