|
Ключевые слова: asus, openwrt, firmware, linux, boot, wifi, (найти похожие документы)
From: Михаил Григорьев <sleuthhound@gmail.com.> Newsgroups: email Date: Mon, 16 Apr 2009 14:31:37 +0000 (UTC) Subject: Настройка доступа в Интернет на ASUS WL-600G с прошивкой OpenWRT через модем ZTE MF627 Исходные данные: 1. Роутер ASUS WL-600G 2. USB модем ZTE MF627 (MF626). На WL-600G установлена последняя версия прошивки OpenWRT под кодовым именем Backfire. Прошивку можно скачать здесь: http://downloads.openwrt.org/backfire/10.03/brcm63xx/openwrt-96348GW-10-squashfs-bc300-cfe.bin Модем ZTE MF627 (MF626) разлочен и на него установлена прошивка от Globe Telecom. Инструкция по перепрошивке модема здесь: http://habrahabr.ru/blogs/hardware/81971/ IP адрес роутера: 192.168.1.1 IP адрес моего компьютера: 192.168.1.10 Компьютер подключен к первому Ethernet порту роутера. Задача: Настроить доступ в Интернет c роутера через модем ZTE MF627 (MF626). В качестве провайдера используется МТС с безлимитный тарифом МТС Коннект-2. Дополнительная задача: Обеспечить возможность выхода в Интернет с компьютеров подключенных к роутеру через порты Ethernet и Wi-Fi. Решение: Существует несколько подходов к решению данной задачи, я попробую пойти самым простым. Следует отметить, что в модеме MF627 (MF626) применяете технология ZeroCD, поэтому при подключении модема вначале он представляется как съёмный диск, на котором находятся драйвера для Windows. Для того, чтобы начать работу непосредственно с модемом, нужно "извлечь диск", то есть переключить устройство в режим модема. Т.к. у нас используется Linux, то есть 2 способа переключения устройства в режим модема. 1. Вариант с отключением ZeroCD. 2. И вариант без отключения ZeroCD. У каждого варианта есть свои плюсы и минусы. Если Вы не хотите ждать, пока модем переподключится, и не хотите ковыряться в Linux ядре, то можно поковыряться в модеме. Я предпочел первый вариант как наиболее быстрый. Для отключения ZeroCD в Windows нам потребуется программа QPST от Qualcomm. Сама Qualcomm не распространяет открыто эту программу, но, поискав в Интернете её можно найти. Далее следует установить её, запустить "QPST Configuration", выбрать нужный COM-порт, подключиться к модему, и открыть программу EFSExplorer, которая позволяет работать с файловой системой устройства. В корне файловой системе устройства нужно найти файл CD_STARTUP_FLAG размером в один байт. Сохраните этот файл на компьютере, а так же запишите какие права были у него выставлены. После этого данный файл нужно удалить. В результате устройство будет подключаться сразу в режиме модема. В варианте без отключения ZeroCD необходимо пересобрать Linux ядро в нашей прошивке OpenWRT, а так же скомпилировать программу usb_modeswitch для переключения MF627 (MF626) в режим модема. После того как MF627 (MF626) стал сразу же переключатся в режим модема можно приступить к настройке OpenWRT. 1. Необходимо включить поддержку USB и USB-Serial в OpenWRT, т.к. в базовой прошивке она отключена. Т.к. наш модем еще не может выходить в интернет, а для установки необходимых пакетов он нам нужен, то возможны 2 варианта: 1. Можно запустить у себя в сети web-сервер и скачать туда определеннй набор файлов и произвести обновление с него. 2. Настроить временный выход в интернет для нашего роутера через локальную сеть. Я выбрал первый вариант, для этого я скачал с сайта http://downloads.openwrt.org/backfire/10.03/brcm63xx/packages/ следующие файлы и разместил их в корне своего веб-сервера: chat_2.4.4-5_brcm63xx.ipk kmod-hid_2.6.32.10-1_brcm63xx.ipk kmod-input-core_2.6.32.10-1_brcm63xx.ipk kmod-input-evdev_2.6.32.10-1_brcm63xx.ipk kmod-nls-base_2.6.32.10-1_brcm63xx.ipk kmod-scsi-core_2.6.32.10-1_brcm63xx.ipk kmod-usb-core_2.6.32.10-1_brcm63xx.ipk kmod-usb-hid_2.6.32.10-1_brcm63xx.ipk kmod-usb-serial-option_2.6.32.10-1_brcm63xx.ipk kmod-usb-serial_2.6.32.10-1_brcm63xx.ipk kmod-usb-storage_2.6.32.10-1_brcm63xx.ipk kmod-usb-uhci_2.6.32.10-1_brcm63xx.ipk kmod-usb2_2.6.32.10-1_brcm63xx.ipk Packages Packages.gz Потом необходимо на нашем роутере в файле /etc/opkg.conf исправить адрес сервера обновления. Вариант моего файла opkg.conf: src/gz snapshots http://192.168.1.10 dest root / dest ram /tmp lists_dir ext /var/opkg-lists option overlay_root /overlay Теперь можно приступить к установке необходимых пакетов на наш роутер, для этого в консоли последовательно выполняем команды: # 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 Почему именно такая последовательность? В принципе можно было начать установку с самого последнего пакета, а он бы по своим зависимостям притянул все остальное. Иногда такое срабатывает, но на моей практике это было раза два, во всех остальных случаях USB модем просто не определялся и более того, всё что связано с USB просто не работало. Поэтому я ставил пакеты по порядку. После успешной установки всех пакетом перезагружаем роутер и подключаем наш USB модем. Если на предыдущих шагах все прошло гладко, то при подключении USB модема роутер выдаст нам следующее: 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 Это значит, что модем найден, а также найдено устройство чтения microSD карт памяти. По команде: # ls /dev/ |grep ttyU ttyUSB0 ttyUSB1 ttyUSB2 Будет выведен список интерфейсов модема. Аппаратный интерфейс устройства можно посмотреть по команде: # cat /proc/bus/usb/devices T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 4 B: Alloc= 1/800 us ( 0%), #Int= 1, #Iso= 0 D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev= 2.06 S: Manufacturer=Linux 2.6.32.10 ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:07.2 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 5 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=19d2 ProdID=0031 Rev= 0.00 S: Manufacturer=ZTE, Incorporated S: Product=ZTE CDMA Technologies MSM S: SerialNumber=1234567890ABCDEF C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms I:* If#= 2 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=2ms E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms Как можно увидеть, каждый интерфейс предназначен для определённой цели. Так, третий интерфейс является стандартным преобразователем USB-Serial, к нему подключён драйвер usb-serial-option, и через этот интерфейс осуществляется основной обмен данными. Второй интерфейс предоставляет доступ к карте microSD, и к данному интерфейсу подключён драйвер usb-storage. Первый интерфейс предназначен для отправки специфических команд, речь о которых пойдёт ниже. Нулевой интерфейс предназначен для настройки устройства, именно через него работает программа QPST. Далее необходимо настроить службу PPP для установки соединения. В интернете на этот счет есть множество статей и огромный список проблем с которыми сталкиваются люди. Конкретно для OpenWRT я не нашел готового решения, поэтому разработал свое, довольно просто и работоспособное. Итак, на роутере выполняем следующее: Переходим в каталог /etc/ppp/ # cd /etc/ppp/ Открываем для редактирования файл 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.me/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 Примечание: Можно не создавать каталог peers и файл mts-serial, а записать эти строчки в файл /etc/ppp/options, но это лишит нас некоторой универсальности. Ведь в каталоге peers можно создать несколько файлов под разных операторов и несколько файлов XXX-chat и указывать их в параметрах запуска pppd. На этом настройка завершена, можно запустить pppd командой: # pppd connect 'chat -f /etc/ppp/mts-chat' call mts-serial /dev/ttyUSB2 115200 Думаю здесь все аргументы pppd понятны и в разъяснениях не нуждаются. Проверяем с помощью команды 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 должен запуститься автоматически. Для визуальной сигнализации включения-отключение интерфейса напишем пару простых скриптов для управления светодиодом на передней панели роутера: 1. Создадим файл /etc/ppp/ip-up.d/led-on.sh который будет выполнятся при включении интерфейса ppp0: #!/bin/sh /usr/bin/gpioctl clear 3 2. Создадим файл /etc/ppp/ip-down.d/led-off.sh который будет выполнятся при отключении интерфейса ppp0: #!/bin/sh /usr/bin/gpioctl set 3 3. Установим права на наши файлы: # chmod 755 /etc/ppp/ip-up.d/led-on.sh # chmod 755 /etc/ppp/ip-down.d/led-off.sh Теперь при включении и отключении интерфейса ppp0 на передней панели будет загораться и гаснуть светодиод с обозначением IP. Теперь приступим к настройке раздачи Интернета через Ethernet-порты и Wi-Fi. 1. Настроим раздачу Интернета через 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 подключилась. :) 2. Настраиваем Wi-Fi карту в нашем роутере. По-умолчанию Wi-Fi в OpenWRT отключен. Нам его необходимо включить и настроить. Для этого открываем файл /etc/config/wireless и приводим его к виду: config wifi-device radio0 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 radio0 option network lan option mode ap option ssid MYROUTER option encryption psk-mixed/tkip+aes option key PASSWORD Значения параметров macaddr, ssid и key у вас будут другие. На этом настройка Wi-Fi завершена, можно рестартануть роутер и проверить Wi-Fi. Я проверял подключение к роутеру с помощью игровой приставки Sony PSP, никаких проблем выявлено не было, подключение в точке доступа прошло успешно, тест на доступ в Интернет так же прошел успешно. В данной статье я не затронул настройки сервиса DHCP, т.к. в прошивке OpenWRT он уже настроен и для подсети 192.168.1.0/24 ничего дополнительно не нужно. Но если Вам все-таки потребуется что-то настроить дополнительно, то вся конфигурация находится в файле /etc/config/dhcp На этом все, если есть вопросы, пишите, буду рад ответить. (с) Михаил Григорьев ([email protected])
|
Обсуждение | [ Линейный режим | Показать все | RSS ] |
|
Добавить комментарий |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |