TP-Link tl-wr1043nd, openwrt, zte mf626 и 3G-интернет

Другой вариант заголовка «интернетизация деревень», или «как сделать интернет на даче при слабом GSM-сигнале», но сделал так, чтобы проще гуглилось. Надеюсь, действительно будет проще гуглиться.

Опишу задачу, которую я решал.
Есть загородный дом, окружённый лесом, в восьми километрах от ближайшей базовой станции по прямой. Сигнала с лихвой хватает для голосовых вызовов, но данные пролазят со скрипом ночью и почти не пролазят днём. А в связи с издержками профессии надо как раз бывает днём. Причём необходимо и достаточно работать с электронной почтой и ssh-терминалом, но было бы приятно вечером читнуть твиттеры-жежешечки. В условиях высокой срочности кое-что нагуглил, кое-что приобрёл, кое-что сделал на страх и риск, но результат оправдал ожидания.

Следующий текст является компиляцией нескольких чужих текстов и моего практического опыта. Рассчитан на пользователя знакомого с telnet, ssh и тем как пользоваться web-интерфейсом роутера. Следование этому how-to приведёт к результату с весьма высокой вероятностью. Тем не менее, все манипуляции вы осуществляете на свой страх и риск, автор не несёт никакой ответственности за зря потраченные деньги, или испорченное оборудование..

Прежде всего, для усиления сигнала нужна хорошая антенна, желательно направленная. Я приобрёл S 12/1900-2170
. Антенну заказал с приделанным кабелем длиной 5 метров(в моём случае достаточно, но вы можете заказать и 10 и 15 метров, и сколько захотите) и переходником для втыкания в крошечный разъём на модеме.

Затем нужен 3G-модем, в который можно воткнуть антенну. Выбирал между Huawei E160G и ZTE MF-626. Выбрал последний, поскольку в Москве он шире продаётся и дешевле вдвое. Такие недорого продаются брендированными в офисах сотовых операторов, но там велик риск получить программно испорченный агрегат(например известно, что БиЛайн перед продажей вводит в модем неверный код разблокирования 10 раз, что делает невозможным отвязку устройства от этого оператора).

Перечисленного достаточно, чтобы подключиться к сети, воткнув модем в ноутбук, или ПК, но кому же захочется быть привязанным к антенне коротким кабелем(чем длиннее кабель, тем сильнее затухание сигнала, выцарапанного из воздуха антенной)? :)
Поэтому мне понадобился wifi-роутер. В составе готовых решений часто продаётся Zyxel Keenetic. Но я знаю вариант лучше и дешевле. Это мой фаворит TP-Link TL-WR1043ND. Не буду расписывать все его достоинства, в этот раз для меня были важны два:
существующая стабильная прошивка Open-WRT для него и
мощный встроенный модуль WiFi, который уверенно накрывает всю придомовую территорию с постройками и несколько соседних участков.

Получив в руки антенну, роутер и модем, я рванул за город, что было ошибкой. В городе, подключившись к интернету через ethernet, я мог бы проделать все манипуляции меньше чем за час, но в деревне на это ушёл целый день. Так что советую подготовить роутер и модем заранее.

Начнём с модема.
В модеме MF627 (MF626) применяется технология ZeroCD, поэтому при подключении модема вначале он представляется как съёмный диск, на котором находятся драйвера для Windows.

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

Для отключения ZeroCD в Windows нам потребуется программа QPST от
Qualcomm. Сама Qualcomm не распространяет открыто эту программу, но,
поискав в Интернете её можно найти.

Далее следует установить её, запустить «QPST Configuration», выбрать нужный COM-порт, подключиться к модему, и открыть программу EFSExplorer, которая позволяет работать с файловой системой устройства. В корне файловой системе устройства нужно найти файл CD_STARTUP_FLAG размером в один байт. Сохраните этот файл на компьютере, а так же запишите какие права были у него выставлены. После этого данный файл нужно удалить. В результате устройство будет подключаться сразу в режиме модема.

После того как MF627 (MF626) стал сразу же переключатся в режим модема можно приступить к прошивке и настройке OpenWRT.

ВАЖНО!
НИКОГДА не обновляйте прошивку на маршрутизаторе через беспроводное соединение Wi-Fi. Вы можете испортить ваш маршрутизатор.
НИКОГДА не выключайте питание компьютера или мрашрутизатора в процессе обновления прошивки. Это может испортить маршрутизатор.

Прошивку берём эту: http://downloads.openwrt.org/backfire/10.03.1-rc5/ar71xx/openwrt-ar71xx-tl-wr1043nd-v1-squashfs-factory.bin

Для обновления с заводской прошивки TP-Link TL-WR1043ND на OpenWrt, прежде всего необходимо сбросить все настройки на заводские.
Выберите в меню System Tools — Factory Defaults. Нажмите на кнопку Restore для сброса настроек на заводские.

Вы увидите сообщение «Factory settings restored successfully!», и маршрутизатор начнёт перезагружаться.

По умолчанию IP адрес TP-Link WR1043ND — 192.168.1.1
Маска подсети (netmask) — 255.255.255.0
Если вы проводите обновление firmware из Windows (я использовал компьютер с Windows XP), выберите меню (панель) Network Connections (Сетевые соединения) и измените IP адрес компьютера на статический, из той же подсети чтои адрес маршрутизатораhas.
Например: 192.168.1.200

Сделайте ping адреса маршрутизатора из комнадной строки Windows (>ping 192.168.1.1), чтобы убедиться что к маршрутизатору есть доступ.
Отсоедините все кабели от маршрутизатора кроме кабеля, которым он подключён к компьютеру (другие компьютеры, кабель от провайдера — WAN интерфейс, или кабель от кабельного/DSL модема)

Откройте веб-интерфейс маршрутизатора.
Выберите в меню System Tools — Firmware Upgrade. Введите имя файла (с локального диска), в котором находится заранее загруженная прошивка OpenWrt. Нажмите кнопку Upgrade.

Вы увидите сообщение «Please wait until system reboots…»

Подождите пока появится сообщение «Software Upgraded Successfully! Restarting…»

Не выключайте компьютер или маршрутизатор пока вы не увидите это сообщение
По моему опыту, эта процедура проходит с маршрутизатором WR1043ND достаточно быстро, намного быстрее по сравнению с маршрутизаторами, которые я «обновлял» до этого. Примерно время — 2-3 минуты.

Подождите пока не обновится сообщение в браузере. т.е. пока маршрутизатор не перезагрузится.
Снова откройте адрес 192.168.1.1 в броузере.
Иногда получается, что мешает кэш в броузере. Поэтому рекомендуется также удалить кэш, или использовать другой броузер (скажем Google Chrome) для проверки процесса.

Перед этим рекомнедуется проверить ping 192.168.1.1 из командной строки, чтобы убедиться что Ethernet интерфейс стартовал и сконфигурировался нормально.

После этого вы увидите интерфейс OpenWrt LuCI с предложением сделать login.

Пользователь по умолчанию root. Нажмите на кнопку Login, без указания какого-либо пароля.

Выберите меню System — Admin, и введите новый пароль.

Прошивка установлена, теперь можно приступить к настройке.

Сконфигурируйте роутер для работы с вашим интернет-подключением, это понадобится для установки недостающих пакетов. Затем зайдите на роутер при помощи telnet, или ssh(включается автоматически после задания пароля для root, telnet при этом отключается).

В терминале нужно ввести следующие команды для обновления списка пакетов и установки нужных:
opkg update
opkg install kmod-scsi-core
opkg install kmod-nls-base
opkg install kmod-usb-core
opkg install kmod-usb-storage
opkg install kmod-usb2
opkg install kmod-usb-serial
opkg install kmod-usb-serial-option
opkg install kmod-input-core
opkg install kmod-input-evdev
opkg install kmod-hid
opkg install kmod-usb-hid
opkg install chat
opkg install wpad-mini
opkg install kmod-ath9k

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

Если на предыдущих шагах все прошло гладко, то при подключении USB
модема роутер выдаст нам следующее(смотреть командой dmesg):
usb 1-2: new high speed USB device using ehci_hcd and address 5
usb 1-2: configuration #1 chosen from 1 choice
option 1-2:1.0: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
option 1-2:1.1: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
scsi3 : SCSI emulation for USB Mass Storage devices
option 1-2:1.3: GSM modem (1-port) converter detected
usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2
scsi 3:0:0:0: Direct-Access ZTE MMC Storage 2.31 PQ: 0 ANSI: 2
sd 3:0:0:0: [sda] Attached SCSI removable disk

Это значит, что модем найден.
Далее необходимо настроить службу PPP для установки соединения.

На роутере выполняем следующее:

Переходим в каталог /etc/ppp/
cd /etc/ppp/

Открываем для редактирования(например vi chap-secrets) файл chap-secrets и записываем в него строчку:
mts * mts *

Создаем файл mts-chat и записываем в него следующие строки:
ABORT BUSY
ABORT ERROR
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
ABORT 'NO DIALTONE'
ABORT 'Invalid Login'
ABORT 'Login incorrect'
TIMEOUT 5
'' '\\d'
'' '\\d'
'' '\\d'
'' '\\d'
'' '\\d'
'' AT
OK 'ATV1'
OK 'ATE0'
OK 'AT&F&D2&C1S0=0'
OK 'ATS7=60S30=0'
OK 'ATS0=0'
TIMEOUT 10
'' 'ATZ'
OK 'AT+CGDCONT=1,\"IP\",\"internet.mts.ru\"'
TIMEOUT 20
OK 'ATDT*99#'
CONNECT ''
TIMEOUT 5
'~--' ''

Создаем каталог peers
# mkdir peers
В каталоге peers создаем файл mts-serial и записываем в него следующие строки:
ipcp-accept-local
ipcp-accept-remote
noipdefault
defaultroute
usepeerdns
user mts
noauth
novj
nobsdcomp
crtscts
modem
lock
mtu 1500
mru 1500
persist
logfile /dev/null

Кому интересно, почитать значение параметров можно здесь: http://www.opennet.ru/docs/HOWTO-RU/PPP-HOWTO.html#s12

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

Если понадобится вывод отладочной информации в файл, то в mts-serial меняем
logfile /dev/null

на
logfile /var/log/mts-gprs.log

При этом не забываем создать mts-gprs.log командой
touch /var/log/mts-gprs.log

На этом настройка завершена, можно запустить pppd командой:
pppd connect 'chat -f /etc/ppp/mts-chat' call mts-serial /dev/ttyUSB2 115200

Проверяем с помощью команды ifconfig поднялся ли интерфейс ppp0:
ppp0 Link encap:Point-to-Point Protocol
inet addr:172.29.69.168 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:6 errors:2 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:108 (108.0 B) TX bytes:102 (102.0 B)

Проверяем ping:
root@OpenWrt:/etc/ppp# ping www.ru
PING www.ru (194.87.0.50): 56 data bytes
64 bytes from 194.87.0.50: seq=0 ttl=55 time=2162.011 ms
64 bytes from 194.87.0.50: seq=1 ttl=55 time=1161.568 ms
64 bytes from 194.87.0.50: seq=2 ttl=55 time=180.317 ms
64 bytes from 194.87.0.50: seq=3 ttl=55 time=199.691 ms
64 bytes from 194.87.0.50: seq=4 ttl=55 time=199.090 ms
^C
--- www.ru ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 180.317/780.535/2162.011 ms

Все работает! :)

Для автоматизации запуска pppd создаем файл /etc/init.d/pppd:
#!/bin/sh /etc/rc.common

START=99
start() {
/usr/sbin/pppd connect 'chat -f /etc/ppp/mts-chat' call mts-serial /dev/ttyUSB2 115200
}
stop() {
killall pppd
}

Устанавливаем права:
chmod 755 /etc/init.d/pppd

Создаем симлинк для автостарта:
ln -s /etc/init.d/pppd /etc/rc.d/S99pppd

Перезагружаемся, pppd должен запуститься автоматически.

Теперь приступим к настройке раздачи Интернета через Ethernet-порты и Wi-Fi.

Настроим раздачу Интернета через Ethernet-порты.
Здесь все довольно просто, нужно лишь настроить NAT.
Для этого открываем файл /etc/firewall.user и добавляем туда несколько строк:
#/bin/sh

# Clear all rule
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -F

# NAT
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Вначале мы очищаем все правила iptables, потом добавляем самое простое правило для NAT.

Запускаем скрипт:
sh /etc/firewall.user

Проверяем выход в Интернет с компьютера. Все работает, сайты открываются, icq подключилась. :)

Настраиваем Wi-Fi карту в нашем роутере.
По-умолчанию Wi-Fi в OpenWRT отключен. Нам его необходимо включить и настроить.
Для этого открываем файл /etc/config/wireless и приводим его к виду:
config wifi-device wlan0
option type mac80211
option channel 5
option macaddr 00:22:15:a3:42:e9
option hwmode 11g
option disabled 0

config wifi-iface
option device wlan0
option network lan
option mode ap
option ssid MYROUTER
option encryption psk-mixed/tkip+aes
option key PASSWORD

Значения параметров macaddr, ssid и key у вас будут другие. При этом macaddr должен в точности повторять MAС-адрес вашего беспроводного интерфейса wlan0(можно посмотреть командой ifconfig), ssid придумайте какой понравится, а key задайте не менее 8 символов.

На этом настройка Wi-Fi завершена, можно рестартануть роутер и проверить работу Wi-Fi.

В данной статье не затронуты настройки сервиса DHCP, т.к. в прошивке OpenWRT он уже настроен и для подсети 192.168.1.0/24 ничего дополнительно не нужно.

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

После проверки работы и нахождения результатов удовлетворительными я всё же залез на крышу с ноутбуком и немного покрутил антенну в стороны, проверяя эффект при помощи «скоростемерной» утилиты iperf.

Лучший результат у меня был ~120kbps, а средний ~90kbps. Работать на такой скорости вполне можно и даже сёрфить интернеты будет не слишком напряжно.

Библиография.
• Основа — статья Михаила Григорьева: http://www.opennet.ru/base/sys/asus_openwrt.txt.html
• «Напиллинг» модема: http://habrahabr.ru/blogs/hardware/81971/
• Прошивка роутера: http://vplessky.blogspot.com/2011/01/faq-openwrt-tp-link-wr1043nd.html
• Схожее хауту по настройке open-wrt с модемом huawei e367: http://blog.josefsson.org/2011/05/22/openwrt-with-huawei-e367-and-tp-link-tl-wr1043nd/

Запись опубликована в рубрике Без рубрики с метками , , , . Добавьте в закладки постоянную ссылку.

7 комментариев на «TP-Link tl-wr1043nd, openwrt, zte mf626 и 3G-интернет»

  1. Swamplord говорит:

    Добрый день!
    Помогите, пожалуйста.. Делал все, как описано (только дополнительные пакеты устанавливал через локальный http). Модем (huawei e150, разлочен, сим МТС) определяется, zero cd отключен
    при вводе команды dmesg сообщается:
    …..
    USB Mass Storage support registered.
    USB Serial support registered for GSM modem (1-port)
    usbcore: registered new interface driver option
    option: v0.7.2:USB Driver for GSM modems
    usbcore: registered new interface driver hiddev
    usbcore: registered new interface driver usbhid
    usbhid: v2.6:USB HID core driver
    ar71xx-wdt: enabling watchdog timer
    usb 1-1: new full speed USB device using ar71xx-ehci and address 2
    usb 1-1: configuration #1 chosen from 1 choice
    option 1-1:1.0: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
    option 1-1:1.1: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
    option 1-1:1.2: GSM modem (1-port) converter detected
    usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2

    Затем создаю файлы для настройки подключения — как описано. И пытаюсь поднять ppp0:
    pppd connect ‘chat -f /etc/ppp/mts-chat’ call mts-serial /dev/ttyUSB2 115200
    Но при запросе ifconfig сообщает только:
    br-lan    Link encap:Ethernet  HWaddr **:**:**:**:**:**  
              inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1242 errors:0 dropped:0 overruns:0 frame:0
              TX packets:893 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:122913 (120.0 KiB)  TX bytes:143694 (140.3 KiB)

    eth0      Link encap:Ethernet  HWaddr **:**:**:**:**:**  
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1374 errors:0 dropped:0 overruns:0 frame:0
              TX packets:1232 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:160742 (156.9 KiB)  TX bytes:285875 (279.1 KiB)
              Interrupt:4 

    eth0.1    Link encap:Ethernet  HWaddr **:**:**:**:**:**  
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1242 errors:0 dropped:0 overruns:0 frame:0
              TX packets:893 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:127881 (124.8 KiB)  TX bytes:147266 (143.8 KiB)

    eth0.2    Link encap:Ethernet  HWaddr **:**:**:**:**:** 
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:338 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 B)  TX bytes:137566 (134.3 KiB)

    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

    В чем может быть проблема?

    • KiwiBird говорит:

      Затрудняюсь так с ходу угадать, но видимо что-то не то между модемом и pppd.
      Возможно у Huawei e150 модем висит не на втором порту, а на каком-то другом, попробуйте подобрать.

  2. ToxaSTN говорит:

    Исправьте ошибку обязательно:
    Создаем файл mts-chat и записываем в него следующие строки:
    ….
    » ATZ
    ….
    на
    » ‘ATZ’
    ибо без кавычек не принимает конфиг.

  3. александр говорит:

    не входит через ssh
    пароль поставил
    куда ввести opkg update и т д

  4. Aleksey говорит:

    Спасибо! Ставил Openwrt без веб(так получилось). Не переопределяется DNS, полученный от провайдера(ppp) — не разобрался. Поставил 8.8.8.8. iptables — через ip-up. Спасибо!

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

Войти с помощью: 

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