Видео наблюдения за городом посредством 3G интернета

от автора

Появилась такая задача: Установить видеонаблюдение, в 15 км от города, где доступен только gprs интернет.
Условия:

  • Камерами можно будет управлять через интернет
  • Ограниченный бюджет
  • В городе есть 3G интернет но в области нет.

Что бы решить данную задачу я решил построить такую сеть.
Взять самый дешевый сервер VDS. Недорогой роутер TP-LINK MR 3420, 3G модем от beeline, ip камеру. И построить такую сеть как на схеме.
Суть идеи такова: На сервере поднимается openvpn сервер, на роутере поднимается openvpn клиент, далее объединяем локальную сеть с сетью openvpn. Затем пробрасываем необходимые порты на сервере.



Описание сети:
Первая сеть это роутер + ip камера + ваш компьютер (шлюз). Адрес сети будет 192.168.0.0
У роутера 192.168.0.1
У камеры 192.168.0.100
У вашего компьютера, который будет шлюзом 192.168.0.2

Вторая сеть, это сеть openVPN – 192.168.3.0
IP адрес openVPN вашего роутера будет 192.168.3.2
IP адрес вашего сервера будет 192.168.3.1

И внешний ip адрес сервера для примера будет 205.234.139.100

Что нам нужно.

  1. Компьютер.
  2. Временный доступ в интернет через компьютер.
  3. Роутер который поддерживает OpenWRT и 3G usb модема. (для примера TP-LINK MR 3420)
  4. Сервер с внешним ip адресом на базе Linux.
  5. 3G usb модем (Я использовал Huawey).
  6. IP Видеокамера.
  7. Хороший USB хаб, с внешним питанием.

Ход работы.

  1. Настраиваем на сервере openVPN, генерируем ключи для клиента openVPN.
  2. Настраиваем на роутере openWRT + openVPN и 3G модем для выхода в интернет.
  3. Если 3G связь ловит плохо, собираем антенну Харченко для усиления сигнала.
Настройка openVPN на сервере.

Как настроить сервер openvpn, до пункта “Объединение сетей”, описано тут: Настраиваем OpenVPN сервер на подключения клиентов

Конфигурация сервера выглядит примерно так:

daemon local 205.234.139.100 # Внешний ip сервера port 1194 mode server proto tcp crl-verify crl.pem dev tap ca ca.crt cert server.crt key server.key dh dh1024.pem client-config-dir ccd server 192.168.3.0 255.255.255.0 # ip самого openvpn push "route 192.168.3.0 255.255.255.0" ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo persist-key persist-tun client-to-client status openvpn-status.log log /var/log/openvpn.log verb 3 

Чтобы каждому клиенту выдавался определенный ip адрес, в конфиге есть строчка

ifconfig-pool-persist ipp.txt 

Создаем на сервере документ в папке /etc/openvpn/
Под названием ipp.txt

nano /etc/openvpn/ipp.txt 

И в нем пишем “имя клиента, ip адрес”
Например вот так

openwrt,192.168.3.2 
Прошивка и настройка роутера TP-LINK MR3420.

Как прошить роутер описано по ссылке: TP-Link TL-MR3420 & TL-MR3220

Для начало нужно дать выход роутеру в интернет для установки дополнительного ПО.
Для этого нужно сделать шлюзом к ваш компьютер.
Заходим через web, заходим в network. Далее жмем edit в lan
Переходим на вкладку ввода ip и изменяем ip локальное сети на
IP адрес: 192.168.0.1
Маска: 255.255.255.0
Шлюз: 192.168.0.2
DNS: 8.8.8.8

На компьютере поставим себе ip 192.168.0.2, и используем его как шлюз.

Теперь нужно расширить память роутера для установки дополнительного ПО.
Для этого берем флэшку (Например 4 Гб) и форматируем ее с файловой системой ext4.
Затем вставляем ее в USB хаб и подключаем к роутеру USB хаб.
Потом нужно перенести все настройки на флэшку и сделать что бы она сама монтировалась при старте.

Устанавливаем пакеты для флэшки:

opkg update opkg install kmod-usb-uhci kmod-usb-storage block-mount kmod-fs-ext4 insmod usb-ohci 

Создаем точку подключения:

mkdir /mnt/sda 

Затем монтируем флэшку:

mount -t ext4 /dev/sda /mnt/sda -o rw,sync 

Копируем туда установленные пакеты:

tar -C /overlay -cvf - . | tar -C /mnt/sda -xvf – 

Немного правим конфиг:

vi /etc/config/fstab 

Чтобы выглядело вот так:

config 'mount' option target /overlay option device /dev/sda option fstype ext4 option options rw,sync option enabled 1 option enabled_fsck 1 

Затем перезагружаем роутер:

reboot 

Теперь мы не ограничены исходным размером flash роутера. И можем себе позволить поставить практически все
Смотрим свободное место:

df –h 

Filesystem                Size      Used Available Use% Mounted on rootfs                    3.7G    128.2M      3.4G   4% / /dev/root                 2.0M      2.0M         0 100% /rom tmpfs                    14.3M    688.0K     13.6M   5% /tmp tmpfs                   512.0K         0    512.0K   0% /dev /dev/sda                  3.7G    128.2M      3.4G   4% /overlay overlayfs:/overlay        3.7G    128.2M      3.4G   4% / 

Теперь нам нужно установить openvpn клиент на роутер, заодно и текстовый редактор nano, файловый мэнеджер mc, и русификатор luci.

Устанавливаем необходимые нам пакеты:

opkg install openvpn nano mc luci-i18n-russian 

Для нормальной работы mc нужно выполнить две строчки:

export TERMINFO=/usr/share/terminfo export TERM=xterm 

И чтобы каждый раз их не выполнять руками нужно их добавить в /etc/profile:

nano /etc/profile 

Затем копируем на роутер в /etc/openvpn/ ключи и сертификаты созданные на сервере openvpn:

ca.crt dh1024.pem openwrt.crt openwrt.key ta.key 

Правим конфиг:

nano /etc/config/openvpn 
client tls-client dev tap proto tcp remote 205.234.139.100 1194 # Вашь Ip и порт сервера resolv-retry infinite nobind persist-tun persist-key ca /etc/openvpn/ca.crt cert /etc/openvpn/openwrt.crt key /etc/openvpn/ openwrt.key dh /etc/openvpn/dh1024.pem comp-lzo verb 3 

Запускаем openvpn:

openvpn --config /etc/config/openvpn 

Если ваше Интернет-соединение в порядке и конфигурационный файл openvpn составлен правильно, вы должны увидеть такую надпись:

  • Initialization Sequence Completed

Если вы хотите, чтобы vpn-соединение восстанавливалось после каждой перезагрузки маршрутизатора, добавьте эту строку в /etc/rc.local перед строкой exit 0:

openvpn --config /etc/config/openvpn  & exit 0  

Объединим сети 192.168.0.0 и 192.168.3.0:
Ваш ip сервера openvpn 192.168.3.1, а ваш Ip на роутере openvpn адаптера tap0 192.168.3.2

Тогда что бы ваш сервер смог увидеть вашу локальную сеть (192.168.0.0) нужно на сервере прописать маршрут.

ip route add 192.168.0.0/24 via 192.168.3.2 

Теперь вашу локальную сеть на роутере вид ит сервер с openvpn.

Настроим проброс порта:

Допустим ваша ip камера работает по порту 99, тогда чтобы пробросить порт камеры или другого сетевого устройства добавим такие строки:

EXT_IP="205.234.139.100" # Вашь сервер ip INT_IP="192.168.3.1"           # Локальный шлюз (ip вашей сетевой карты tap0) EXT_IF=venet0:0                   # Сетевая карта внешнего ip INT_IF=tap0                           # Сетевая карта openvrt LAN_IP="192.168.0.100"    # ip на который нужно пробросить порт SRV_PORT=99		     # Порт который нужно пробросить  iptables -t nat -A PREROUTING --dst $EXT_IP -p tcp --dport $SRV_PORT -j DNAT --to-destination $LAN_IP iptables -t nat -A POSTROUTING --dst $LAN_IP -p tcp --dport $SRV_PORT -j SNAT --to-source $INT_IP iptables -t nat -A OUTPUT --dst $EXT_IP -p tcp --dport $SRV_PORT -j DNAT --to-destination $LAN_IP iptables -I FORWARD 1 -i $EXT_IF -o $INT_IF -d $LAN_IP -p tcp -m tcp --dport $SRV_PORT -j ACCEPT 

Теперь вы можете конектится к ip камере по адресу 205.234.139.100:99.
А чтобы не делать это вручную после перезагрузки сервера, создадим скрипт, в папке /root/ файл с названием start
и дадим ему права на выполнения:

chmod  777 /root/start 

Затем добавим строку в /etc/crontab

@reboot root /root/start 

Теперь после перезагрузки сервера скрипт автоматически запустится.

Установка usb 3g Ethernet модема от huawey

opkg update opkg install usb-modeswitch usb-modeswitch-data kmod-usb-net-cdc-ether 

Вставляем модем в USB хаб,
И пишем команду dmesg, вы должны увидеть примерно такие строки:

 [   99.220000] usb 1-1.1.1: new high-speed USB device number 6 using ehci-platform [   99.330000] cdc_ether 1-1.1.1:1.0: eth2: register 'cdc_ether' at usb-ehci-platform-1.1.1, CDC Ethernet Device, 58:2c:80:13:92:63 

Это говорит о том что модем установлен и определился как eth2.
Потом заходим в веб, сеть -> wan. В основных настройках ставим DHCP клиент.
В настройках канала ставим eth2.

Нажимаем “сохранить и применить”.
Все, вы можете выходить в интернет через модем.

Далее нужно добавить зону в фаирволе для, перенаправления пакетов по локальной сети.
Для этого изменим файл /etc/config/firewall

nano /etc/config/firewall 

Сделать примерно так:

config defaults         option syn_flood '1'         option input 'ACCEPT'         option output 'ACCEPT'         option forward 'ACCEPT'  config include         option path '/etc/firewall.user'  config zone         option name 'newzone'         option input 'ACCEPT'         option forward 'ACCEPT'         option output 'ACCEPT'         option masq '1'         option network '3G lan' 
Усиления 3G сигнала на модеме.

Для того чтобы увеличить сигнал 3G модема нужно собрать антенну Харченко.
Обычно, популярные 3G модемы работают на частотах от 800 до 2100 МГц.

Делается это просто.
Нам потребуется:

  • Провод RG6U (толстый белый для антенн – на нем меньше всего затухания) метров 6
  • Коннектор на него
  • Кусок медной проволоки от 1 до 4 мм толщиной ( у меня 1.5)
  • Колпачок от пены для бритья.
  • Паяльник, припой, канифоль и немного навыков работы с ними.
  • Кусок фанерки (120мм на 134мм) и фольга. Либо не травленая плата, покрытая медью с одной стороны.

Начнем.

  • Берем кусок нашей проволоки и сгибаем его в два квадрата, как показано на рисунке. Сторона квадрата должна быть 53мм
  • Концы двух квадратов спаиваем вместе, чтобы получилась сплошная конструкция, наносим припой также на противоположный угол

image

  • Антенный провод зачищаем и надеваем на него коннектор, делаем сердцевину провода так чтобы она выглядывала из коннектора на сантиметр
  • Припаиваем сбоку к телу коннектора кусочек сердцевины провода ( так как не всегда удается припаять оплетку провода с помощью канифоли)
  • После этого припаиваем оба штырька, идущие от коннектора к нашим квадратам

image

  • Теперь делаем рефлектор для лучшего приема — берем нашу фанерку 120 на 135 мм и оборачиваем ее в фольгу, делаем в середине дырку под провод.
  • Сам каркас антенны из проволоки должен находиться над рефлектором на расстоянии 35мм, для этого берем колпачок от пены для бриться или что-то похожее. Он по высоте 4.5 см, поэтому вырезаем в нем пазы в 1 см, чтобы антенна была от рефлектора на нужном расстоянии.

image

  • Сзади всей этой конструкции подставляем рефлектор, сделанный нами ранее и получается готовая антенна:

image

Следующим шагом нужно припаять другой конец провода к модему:
Вскрываем корпус модема.

image

На лицевой стороне расположены: модуль для карты памяти, контакты для SIM-карты, радио модуль под крышечкой, разъём, внутренняя антенна и USB-выход.

image

Интересно, что этот разъём недоступен без разборки корпуса, то есть почти все обладатели этого модема об этом разъёме даже не подозревают. Пусть он остаётся на месте, он нам не нужен и нисколько не мешает. А мешает нам внутренняя антенна:

image

Антенна вытравлена прямо на плате, и нам необходимо её отключить. Для этого сначала выкусываем SMD-конденсатор, предназначенный для резонансной согласовки антенны. Потом небольшой фрезой, зажатой в дрель, делаем пропил по антенне, оставляя только небольшую площадку для припайки кабеля. Разрез делаем неглубоко, так как печатная плата многослойная. Прозваниваем тестером, успешно ли прошла «ампутация» и нет ли КЗ между площадкой под припайку кабеля и отрезанной антенной. Кстати, иногда эта площадка может иметь КЗ на землю – таковы особенности архитектуры некоторых модемов. Если бы мы не отрезали внутреннюю антенну, то после подключения внешней антенны сигнал бы делился между ними, возникло бы рассогласование и ничего бы не получилось.

image

Припаиваем кабель к модему. Паяем быстро, точно и аккуратно, не перегреваем плату. Центральную жилу припаиваем на площадку, оставшуюся от внутренней антенны; оплётку припаиваем к любому месту, являющемуся землёй и расположенному как можно ближе к площадке с припаянной центральной жилой.

image

image

После припайки кабеля, нужно аккуратно собрать модем и необходимо поднять антенну на максимальную высоту, затем методом проб поймать наилучший сигнал и закрепить на месте.

На этом все.

Источники:

  1. Антенна 3G своими руками для Huawei E1550 и других – 2100 mHz
  2. Ускорим 3G модем при помощи внешней антенны
  3. OpenVPN клиент на роутере TP-Link TL-MR3020 с OpenWRT
  4. Настраиваем OpenVPN сервер на подключения клиентов
  5. Openvpn-клиент на OpenWRT (tap)

ссылка на оригинал статьи http://habrahabr.ru/post/202278/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *