Условия:
- Камерами можно будет управлять через интернет
- Ограниченный бюджет
- В городе есть 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
Что нам нужно.
- Компьютер.
- Временный доступ в интернет через компьютер.
- Роутер который поддерживает OpenWRT и 3G usb модема. (для примера TP-LINK MR 3420)
- Сервер с внешним ip адресом на базе Linux.
- 3G usb модем (Я использовал Huawey).
- IP Видеокамера.
- Хороший USB хаб, с внешним питанием.
Ход работы.
- Настраиваем на сервере openVPN, генерируем ключи для клиента openVPN.
- Настраиваем на роутере openWRT + openVPN и 3G модем для выхода в интернет.
- Если 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мм
- Концы двух квадратов спаиваем вместе, чтобы получилась сплошная конструкция, наносим припой также на противоположный угол
- Антенный провод зачищаем и надеваем на него коннектор, делаем сердцевину провода так чтобы она выглядывала из коннектора на сантиметр
- Припаиваем сбоку к телу коннектора кусочек сердцевины провода ( так как не всегда удается припаять оплетку провода с помощью канифоли)
- После этого припаиваем оба штырька, идущие от коннектора к нашим квадратам
- Теперь делаем рефлектор для лучшего приема — берем нашу фанерку 120 на 135 мм и оборачиваем ее в фольгу, делаем в середине дырку под провод.
- Сам каркас антенны из проволоки должен находиться над рефлектором на расстоянии 35мм, для этого берем колпачок от пены для бриться или что-то похожее. Он по высоте 4.5 см, поэтому вырезаем в нем пазы в 1 см, чтобы антенна была от рефлектора на нужном расстоянии.
- Сзади всей этой конструкции подставляем рефлектор, сделанный нами ранее и получается готовая антенна:
Следующим шагом нужно припаять другой конец провода к модему:
Вскрываем корпус модема.
На лицевой стороне расположены: модуль для карты памяти, контакты для SIM-карты, радио модуль под крышечкой, разъём, внутренняя антенна и USB-выход.
Интересно, что этот разъём недоступен без разборки корпуса, то есть почти все обладатели этого модема об этом разъёме даже не подозревают. Пусть он остаётся на месте, он нам не нужен и нисколько не мешает. А мешает нам внутренняя антенна:
Антенна вытравлена прямо на плате, и нам необходимо её отключить. Для этого сначала выкусываем SMD-конденсатор, предназначенный для резонансной согласовки антенны. Потом небольшой фрезой, зажатой в дрель, делаем пропил по антенне, оставляя только небольшую площадку для припайки кабеля. Разрез делаем неглубоко, так как печатная плата многослойная. Прозваниваем тестером, успешно ли прошла «ампутация» и нет ли КЗ между площадкой под припайку кабеля и отрезанной антенной. Кстати, иногда эта площадка может иметь КЗ на землю – таковы особенности архитектуры некоторых модемов. Если бы мы не отрезали внутреннюю антенну, то после подключения внешней антенны сигнал бы делился между ними, возникло бы рассогласование и ничего бы не получилось.
Припаиваем кабель к модему. Паяем быстро, точно и аккуратно, не перегреваем плату. Центральную жилу припаиваем на площадку, оставшуюся от внутренней антенны; оплётку припаиваем к любому месту, являющемуся землёй и расположенному как можно ближе к площадке с припаянной центральной жилой.
После припайки кабеля, нужно аккуратно собрать модем и необходимо поднять антенну на максимальную высоту, затем методом проб поймать наилучший сигнал и закрепить на месте.
На этом все.
Источники:
ссылка на оригинал статьи http://habrahabr.ru/post/202278/
Добавить комментарий