(495) 545-63-20
WiMax и спутниковый интернет: от 9000 руб
Видеонаблюдение: от 10.000 руб
Пожарная сигнализация: от 12.000 руб
Обслуживание пожарной сигнализации
РегистрацияВход
Sunday 20 May 2012 | 04:09  



Спутниковый интернет шлюз на Ubuntu 10.04.1 LTS server от fly electronics HOW TO……

Делаем спутниковый интернет-шлюз на Linux
Делаем спутниковый интернет-шлюз на Linux
Итак, прежде чем начать грузить вас малопонятными командами операционной системы, скриптами и конфигами, небольшое лирическое отступление.
На тему последних новостей, которые как из рога изобилия сыпятся на нас из «зомбоящика» и интернета. Основная цель этой преамбулы воззвать к здравому смыслу читателей и задуматься над тем, до чего мы всё-таки докатились. Итак, мы дожили до того, что за определённое число нулей и единиц наконец то могут посадить!!!! Помните знаменитый фильм про матрицу, так вот там один из героев за виртуальный бифштекс продал своих боевых товарищей. Как вы догадались, разговор пойдёт о праве копирования или, как любят называть это буржуи «Copy right». Вроде бы всё хорошо с этим правом копирования, написал ты какую-нибудь прогу, продал x копий и получил x*y вечнозелёных единиц, где y - цена копии. С точки зрения правообладателя казалось бы всё гладко и понятно, но есть одно НО!!!! И это НО совсем не какая-нибудь малозначительная ерунда. Мы забыли о потребителях интеллектуальной собственности (читайте: о миллиардах простых людей). Давайте на миг забудем о собственности интеллектуальной и вернёмся к собственности материальной. Итак, давайте вспомним банальный закон о защите прав потребителя. Если, скажем, вы приобрели в ларьке тухлое пиво или мокрые сигареты, которые невозможно курить, с нами никто не будет спорить и нам тут же вернут наши деньги.... Второй пример: мы купили телевизор и нам ну Очень захотелось залезть в него с паяльником... (Ну, например, мы купили модель, в которой нет, скажем, телетекста, потому что у нас не было денег и мы решили его припаять, или просто нас заинтересовало - какого д%рьма за наши кровные туда напихали), в данном случае с продавца просто снимаются обязательства по гарантии, ну или вы купили микроволновую печь, а из за недостатка её конструкции вы облысели или машину, в которой неисправны тормоза (естественно в данном случае отвечать будет производитель)... Теперь вернёмся к собственности интеллектуальной. Её производитель АБСОЛЮТНО НИ ЗА ЧТО НЕ ОТВЕЧАЕТ!!!!!!!!!!!!!! Вы когда - нибудь читали лицензионное соглашение какой-нибудь платной программы????? Если эта прога, например, отформатирует винт с вашей любимой бухгалтерией, или из за её отказа погибнут люди, производителю АБСОЛЮТНО ЗА ЭТО НИЧЕГО НЕ БУДЕТ. И так обстоят дела с любой интеллектуальной собственностью. Покупая любой лицензионный диск с мультиками, Вы сразу соглашаетесь с тем, что ваш ребёнок может стать заикой, или начать кричать по ночам. Производителю таких «хороших» мультиков тоже ничего не грозит.... Мы с ребёнком как-то пошли в кино на «замечательный» фильм «Элвин и бурундуки 2» так что вы думаете это хорошо, когда маленькому ребёнку показывают сцену, как кого-то кунают головой в унитаз??? И эти «детские мультипликаторы» тоже НИ ЗА ЧТО НЕ ОТВЕЧАЮТ!!! Итак, мы пришли к тому, что от вещей виртуальных вред может быть весьма реальный! И это ещё не всё!!! Покупая платную программу вы соглашаетесь с тем, что не будете ЕЁ ИЗУЧАТЬ РАЗБИРАТЬ И МОДЕРНИЗИРОВАТЬ. Это значит, что если в платной программе даже есть ТРОЯН, который отправляет конфиденциальную информацию о вас и вашей семье разработчикам, ВАС ПОСАДЯТ ЗА ТО ЧТО ВЫ ЕГО ОБНАРУЖИЛИ ПОТОМУ ЧТО ВЫ НАРУШИЛИ ЗАКОН И ДИЗАССЕМБЛИРОВАЛИ ЕЁ. А если вы купили новый альбом популярного певца и он вам "тупа не понравился", естественно вам никто не вернёт денег. К тому же почему в тех же библиотеках люди могут бесплатно пользоваться интеллектуальной собственностью, а разместить текст книги в интернете незаконно? А вы задумывались, получают ли авторы деньги за свои произведения? Во многих случаях не получают ни копейки. Дело в том что зачастую пресловутые «Copy Right» продаются автором на корню сразу после создания им произведения и денежки за каждый диск получает какая-нибудь фирма ТипаИнкорпорейтед (собственно вообще не понятно, за что она получает эти деньги: собственность интеллектуальную она не производила, не испытывала никаких творческих мук, а всего лишь торгует даже не воздухом, а виртуальными нулями и единицами). Я думаю что закон должен защищать интересы простого народа. Авторские права нельзя продавать, дарить и передавать по наследству, они должны быть собственностью исключительно автора, а не правообладателя. Автор может брать деньги за концерты и публичные показы своего произведения (радио, телек, кинотеатры, выставки), а так же неограниченно принимать пожертвования и подарки почитателей и это не должно облагаться никакими налогами.
Как общественная деятельность (к тому же направленная на благо человечества), Интернет должен быть свободен от продажи интеллектуальной собственности. Копирование информации не должно преследоваться. А те кто думает, что талантливые и умные люди останутся без денег, те, я думаю, ошибаются, всё равно люди будут ходить в кинотеатры, всё равно будут ходить на концерты, всё равно программисты будут получать деньги (но не будет спекулянтов в области интелектуальной собственности типа всяких компаний которые подают в суд на пользователей вконтакте и школьных учителей) Ну и конечно, автор должен нести ответственность за ущерб, нанесённый его творчеством, пусть эта ответственность и будет хотя бы административной.
При создании этой статьи и спутникового интернет-шлюза автор не использовал никаких платных програмных продуктов.


Ну что, приступим к установке и сборке интернет шлюза!
Системные требования:
Процессор с архитектурой X-86 600 мгц и выше (подойдёт любой процессор от intel или AMD, на процессорах VIA шлюз не работает)
Сетевая карта ethernet (любая 10,100 или 1000 мбит.)
Карта спутникового тюнера Tevii S420.
Оперативная память Любая (автор использовал 512 Мб DDR2, меньше просто не удалось приобрести )
HDD — Любой более 10 гб (меньше я думаю найти уже проблематично)
USB GSM модем HUAWEI E1550

Итак предположим, что вы собрали компьютер и настроили тарелку на спутник.
Для начала установим Ubuntu Server 10.04.1 LTS (если вы не смогли этого не смогли сделать, просто закажите установку спутникового интернета на нашем сайте, естественно что мы возьмём с вас деньги только за стоимость оборудования и монтажа, линукс у нас конечно же бесплатный)
При установке Ubuntu Server выберите установку пакетов Bind9 и SSH
когда будите форматировать жёсткий диск, раздел подкачки создавать необязательно.
Затем установим необходимые для работы шлюза пакеты:
1. Установим компилятор си:
sudo apt-get install gcc
2. Установим миднайт командер (очень удобный файлменеджер с текстовым редактором, пригодится нам для дальнейшей настройки шлюза)
sudo apt-get install mc
3. Установим пакет dvb-apps (необходим для работы спутникового тюнера)
sudo apt-get install dvb-apps
4. Установим пакет usb-modeswitch (необходим для корректной работы модема)
5. Установим DHCP server
apt-get install dhcp3-server.
6. Установим драйвера на Tevii, для этого скачаем с сайта производителя скрипт автоматической установки драйверов install.sh
Если не хотите скачивать приведу вам его содержимое:
#!/bin/bash
sudo wget http://tevii.ru/support/downloads/Linux/linux-tevii.tar.bz2
sudo tar xjf linux-tevii.tar.bz2
cd linux-tevii
sudo cp *.fw /lib/firmware
cd linux-tevii-ds3000
sudo make && sudo make install
cd ../../
sudo rm -rf linux-tevii.tar.bz2 linux-tevii

Запускать нужно так: sudo sh /путь к скрипту/install.sh
Да совсем забыл! обязательно нужно установить звонилку wvdial
apt-get install wvdial

Настройка спутникового интернета.
1. создадим файл channels.conf
sudo touch /etc/channels.conf
запустим миднайт командер и отредактируем этот файл
sudo mc
содержимое файла должно быть таким:

satgate:12148:h:0:27500.5:0:0:0:

где satgate — название провайдера (может быть любым)
h- поляризация
27500 скорость потока.
2. Попробуем настроится на спутник: для этого введём команду:
szap -c /etc/channels.conf -n 1 -H
Итак если вы увидели что то подобное, то тарелка правильно настроена на спутник и сигнал захвачен:

root@gateway:/home/sysop# szap -c /etc/channels.conf -n 1 -H
reading channels from file '/etc/channels.conf'
zapping to 1 'satgate':
sat 0, frequency = 12148 MHz H, symbolrate 27500000, vpid = 0x1fff, apid = 0x1fff sid = 0x0000
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 00 | signal 100% | snr 64% | ber 4116 | unc 4116 |
status 10 | signal 89% | snr 85% | ber 204 | unc 204 | FE_HAS_LOCK
status 10 | signal 89% | snr 85% | ber 460 | unc 460 | FE_HAS_LOCK
status 10 | signal 89% | snr 85% | ber 204 | unc 204 | FE_HAS_LOCK
status 10 | signal 89% | snr 85% | ber 192 | unc 192 | FE_HAS_LOCK
status 10 | signal 89% | snr 85% | ber 327 | unc 327 | FE_HAS_LOCK
status 10 | signal 89% | snr 85% | ber 327 | unc 327 | FE_HAS_LOCK
status 10 | signal 89% | snr 85% | ber 327 | unc 397 | FE_HAS_LOCK


3. Теперь создадим файлы скриптов, у меня они находятся в /home/sysop
первый файл : start.sh следующего содержания:


#!/bin/bash


bash /home/sysop/slonax.sh > /dev/null& # запускаем автозапускалку слонакса

bash /home/sysop/test.sh > /dev/null& # Запускаем скрипт автореконнекта



4. В той же самой папке создадим скрипт slonax.sh следующего содержания:

run_slonax () {
while true
do
/usr/sbin/slonax_3g
sleep 1
done
}
run_slonax &

5. Там же создадим скрипт test.sh следующего содержания:


#!/bin/bash




run_killer () {
test_ips=( # проверяемые сервера (домены можно заменить на их ip)
"82.198.6.24"
"77.94.34.160"

)
kill_after=3 # через сколько неудачных попыток убивать
sleep_delay=30 # число секунд между проверками

((error_counter = 0))

while true
do
for test_ip in "${test_ips[@]}"
do
ping -n -c 1 "$test_ip" >/dev/null 2>/dev/null
if [ $? == 0 ]
then
echo 'status: сеть есть'

((error_counter = 0))
else
echo 'status: возможно сети нет (error_counter: '"$error_counter"')'

((++error_counter))
fi

if ((error_counter >= kill_after))
then
echo 'status: терпения больше нет! Перезапускаем интернет......'
kill
/etc/init.d/networking restart

((error_counter = 0))
fi

sleep "$sleep_delay"
done
done
}

run_killer&

6. Там же создадим скрипт xz.sh в котором напишем следующее:

#!/bin/bash
/sbin/modprobe cx8800
/sbin/modprobe cx8802
/sbin/modprobe cx88_dvb
/sbin/modprobe cx88_vp3054_i2c
/sbin/modprobe videobuf_dvb
/sbin/modprobe dvb_core
/usr/bin/dvbnet -a 0 -p XXX > /dev/null # Здесь нужно указать ваш PID из личного кабинета
#провайдера


7. обязательно не забудьте скопировать файл slonax_3g в папку /usr/sbin (его можно скачать с сайта Сатгейта или с сайта разработчика), а так же создать файл sx3g_cli.conf и поместить его в /etc
Приведу содержание своего конфигурационного файла слонакса:



# WELCOME TO SLONAX 3G
# --------------------
#
# C L I E N T C O N F I G U R A T I O N
# F I L E
#
# This is the default Slonax3g configuration file. You may wish
# to look at the Slonax3G home page for the FAQ and other documentation.
#

# AUTHENTICATION
# ----------------------
#
# TAG: auth_server
# Usage: hostname:port
# 1.2.3.4:port
auth_server=sx3g.satgate.net:1122 # Если вы решили использовать другого #провайдера не забудьте прописать здесь его сервер слонакса


# TAG: login
# Usage: write_you_login_here
login=login # Ваш логин тот же что и для входа в личный кабинет

# TAG: password
# Usage: write_you_password_here
password=password # Ваш пароль, такой же что и для входа в личный кабинет



# TRANSPORT
# ----------------------
#
# TAG: transport_type
# Usage: protocol_type
#
# NOTE: Now support only UDP.
protocol_type=UDP

# TAG: transport_peer
# Usage:
# transport_peer=proxy_type://proxy_host:proxy_port
#
# proxy_type: 'socks', 'http' or 'none'
# For example:
# transport_peer=socks://192.168.168.1:1080
transport_peer=none

# TAG: speed_in_auto
# Usage: Yes or No
# Note: automatic setup speed_in by remote side.
speed_in_auto=no

# TAG: transport_speed_in
# Usage: Incoming_speed
# Note: in kilobit per second (kbit/s)
speed_in=128

# TAG: speed_out
# Usage: outgoing_speed
# Note: in kilobit per second (kbit/s)
speed_out=64

# TAG: mtu
# Usage: MTU_in_bytes
mtu=800

# TAG: mru
# Usage: MRU_in_bytes
mru=1400


# TAG: alive_pkts_send_period
# Usage: alive_send_period_in_seconds
#
alive_pkts_send_period=40

# TAG: alive_pkts_max_loss
# Usage: maximum number of remore alive packets
# Note: If number_of_loss_packets > alive_pkts_max_loss we supposed
# that remote side is down.
alive_pkts_max_loss=5


# TAG: jumbo_mode
# Usage: Yes or No
# Note: enable small packets aggregation into one big packet. May reduce pps.
jumbo_mode=Yes


# TAG: flow_ctrl_mode
# Usage: 1 or 2
# Note: 1 - SX3G_FLOW_CTRL_MANY_FLOWS
# 2 - SX3G_FLOW_CTRL_ONE_FLOW
#
flow_ctrl_mode=2


# TAG: tcp_heartbeat
# Usage: frequency of tcp echo packet sending (in seconds)
# Note: Sometimes wireless channels (like GPRS or EDGE) force disconnected
# cause no TX or RX TCP traffic. If tcp_heartbeat>0 slonax will be
# generated TCP traffic each N seconds. For disable echo packets set
# tcp_heartbeat to 0
#
tcp_heartbeat=0




# NETWORK
# -----------------------
#
# TAG: defaultroute_set
# Usage: Yes or No
# Note: Add a default route to the system routing tables, using the peer as the #gateway.
defaultroute_set=Yes


# TAG: defaultroute_method
# Usage: METRIC_CHANGE or REPLACE
# Note: change setup method of default route.
#
defaultroute_method=REPLACE

# TAG: dns_set
# Usage: Yes or No
# Note: Ask the peer for up to 2 DNS server addresses. In addition, slonax will create an
# /etc/resolv.conf file containing one or two nameserver lines with the address(es)
# supplied by the peer. (On UNIX systems). On Win32 just save dns on TAP interface settings
dns_set=Yes


# TAG: nat_enable
# Usage: Yes or No
# Note: Add NAT support for Slonax
nat_enable=Yes



# TUN/TAP
# -----------------------
#
# TAG: iface_mode
# Usage: ptp, ether, auto
# Note: Tunnel interface mode
iface_mode=auto




# TCP TUNE
# -----------------------
#
# TAG: tcp_sess_timeout
# Usage: timeout in seconds
# Note: if session is not active within tcp_sess_timeout seconds slonax
# will close this session.
#
tcp_sess_timeout=3600

# TAG: tcp_suspect_timeout
# Usage: timeout in seconds
# Note: Close timeout for suspect tcp sessions, like session without traffic.
#
tcp_suspect_timeout=60



# COMPRESSION
# -----------------------
#
# TAG: compress_level
# Usage: 0-9
# Note: 0-No compression 9-Max level
compress_level=9

# TAG: compress_lib
# Usage: zlib lzma
# Note: compression algorithm selection.
# Now support only zlib
compress_lib=zlib



# ENCRYPTION
# ----------------------
#
# TAG: encryption_enable
# Usage: Yes or No
# Note: Disabled temporaly
encryption_enable=No


# TAG: encryption_method
# Usage: blowfish twofish
#
encryption_method=blowfish

# TAG: encryption_psk
# Usage: encryption_text_pre_shared_key
#
encryption_psk=a_very_secret_psk


# TCP SERVICES
# -------------------------
#
# TAG: http_proxy
# Usage: bind_address:bind_port
# Note: Just simly HTTP proy with CONNECT method suport
#
http_proxy=127.0.0.1:8080

# TAG: http_eproxy
# Usage: bind_address:bind_port
# Note: Enhanced HTTP proxy with image compress
#
http_eproxy=127.0.0.1:8081

# TAG: tcp_portmap_bind
# Usage: bind_local_host
# Note: Address of the host on which sit tcp portmaps.
tcp_portmap_bind=127.0.0.1


# TAG: tcp_portmap
# Usage: bind_port->remote_ip:remote_port
# Note: allow multiple usage.
#
#tcp_portmap=110->pop3.mail.ru:110


# WIN32 Specific options
# --------------------------------
#
# TAG: win32_autoconnect
# Usage: integer (time in seconds)
# Note: if integer != -1, windows client
# try connect at program startup
# 0 for connect immediately.
#
win32_autoconnect=15

# TAG: win32_ras_dial
# Usage: string (name of RAS windows connection)
# Note: if string != NULL slonax before connect try
# dial dail-up or VPN connection.
win32_ras_dial="NULL"




# LOGGING
# ---------------------
#
# TAG: logging_enable
# Usage: Yes or NO
#
logging_enable=Yes

# TAG: logging_file
# Usage: path_to_logfile
#
#
logging_file=/var/log/sx3g_client.log
logging_file=sx3g_client.log


# TAG: logging_level
# Usage: 0-5
# Note: 0-Minimum 5-Maximum logging level
logging_level=5


# TAG: logging_subsystems
# Usage: "SCK", "TCP", "PRT", "FLW",
# "SHA", "TRA", "TUN", "COM",
# "CRY", "SYS", "MUX", "DMX",
# "AUT", "ALL"
# Note: Filter logging output. Filter 'ALL' - shows all subsystems
#
# For example: So if you want debug only encryption
# and flow-control subsystem
# logging_subsystems=CRY|FLW
logging_subsystems=AUT|SYS


# TAG: logging_raw_sockets
# Usage: yes or no
# Note: dump raw traffic of tcp sockets to ./dumps directory
#
logging_raw_sockets=no


# TAG: debug_console
# Usage: Yes or No
# Note: Enable debug console
#
debug_console=Yes


# TAG: debug_console_port
# Usage: 1-65535
# Note: Debug console TCP port
#
debug_console_port=2323
8. Теперь отредактируем файл /etc/network/interfaces и приведём его к виду:


auto lo eth0
iface lo inet loopback
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0




auto dvb0_0
iface dvb0_0 inet manual
pre-up sh /home/sysop/xz.sh > /dev/null
up ifconfig dvb0_0 hw ether XX:XX:XX:XX:XX:XX 172.20.XX.XX netmask 255.255.255.0 up > /dev/null #XX:XX — MAC из личного кабинета, 172.20.XX.XX IP из #личного кабинета
up sh -c '/sbin/sysctl -w net.ipv4.conf.dvb0_0.rp_filter=0 > /dev/null'
up sh -c '/usr/bin/szap -c /etc/channels.conf -n 1 > /dev/null &'
up sh -c '/sbin/modprobe ipt_MASQUERADE > /dev/null'
up sh -c '/sbin/iptables -F; /sbin/iptables -t nat -F; /sbin/iptables -t mangle -F > /dev/null'
up sh -c '/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE > /dev/null'
up sh -c '/sbin/sysctl -w net.ipv4.ip_forward=1 > /dev/null'
up sh -c '/sbin/sysctl -w net.ipv4.conf.default.rp_filter=0 > /dev/null'
up sh -c '/sbin/sysctl -w net.ipv4.conf.all.rp_filter=0 > /dev/null'
down ifconfig dvb0_0 down > /dev/null
down /usr/bin/dvbnet -d 0 > /dev/null

iface ppp0 inet wvdial
provider wvdial
auto ppp0


9. Теперь осталось только настроить звонилку и врубить автозагрузку шлюза:
для этого отредактируем файл /etc/wvdial.conf и приведём его к следующему виду (настройки приведены для провайдера Мегафон; Билайн или МТС настраиваются аналогично):



[Dialer Defaults]
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","internet"
Modem Type = USB Modem
Baud = 460800
New PPPD = yes
Idle Seconds = 0
Modem = /dev/ttyUSB0
ISDN = 0
Phone = *99#
Password = gdata
Username = gdata
Dial Attempts = 0


10. И в заключении врубаем автозагрузку шлюза, для этого редактируем файл /etc/rc.local и добавляемс в него строчку:


/home/sysop/start.sh


небходимо в файл /etc/ppp/ip-up добавить строчки:
killall "/usr/sbin/slonax_3g"
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
sysctl -w net.ipv4.conf.default.forwarding=1
sysctl -w net.ipv4.conf.all.forwarding=1
iptables -A FORWARD ! -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT

Как настроить SSH сервер, DHCP сервер, и кеширующий DNS сервер в этой статье я писать не буду, по этой теме в интернете написано огромное количество статей. Если вы всё настроили правильно, то после перезагрузки шлюза он автоматически установит соединение с интернетом и поднимет NAT
ENJOY :-)
PS. Огромное спасибо Андрею Антонову за его неоценимую помощь в создании интернет шлюза. Если вы где либо будете использовать текст этой статьи, обязательно укажите ссылку на первоисточник http://radiodesant.ru
Со всеми вопросами, пожеланиями, предложениями, пожеланиями и пожертвованиями :-) обращайтесь


Обслуживание пожарной сигнализации


Для добавления комментариев, вы должны войти под логином либо зарегистрироваться.

<< Вернуться назад