Превращаем D-Link DIR-825 в 3G-роутер с помощью Huawei E1750 и OpenWRT

Имея в наличии роутер D-Link DIR-825 под управление OpenWRT с usb-портом на борту и 3G-модем Huawei E1750, почему бы не попробовать их объединить? Тем более, Huawei E1750 прекрасно работает в Linux. Таким образом можно получить очень функциональный 3G-роутер или резервный канал доступа в интернет.

Итак, что нам для этого понадобится:

root@openwrt:~$ opkg update
root@openwrt:~$ opkg install kmod-usb-acm kmod-usb-core kmod-usb-ohci kmod-usb-serial \
kmod-usb-serial-option kmod-usb-storage kmod-usb-uhci kmod-usb2  usb-modeswitch comgt

После этого — подключаем модем, должны увидеть примерно следующее:

root@openwrt:~$ dmesg
...
sb 2-1: new full speed USB device using ar71xx-ohci and address 2
usb 2-1: configuration #1 chosen from 1 choice
scsi0 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
scsi1 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
scsi 0:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
usb-storage: device scan complete
scsi 1:0:0:0: Direct-Access     HUAWEI   SD Storage       2.31 PQ: 0 ANSI: 2
usb-storage: device scan complete
sd 1:0:0:0: [sda] Attached SCSI removable disk

Настроим usb-modeswitch, чтобы получить, собственно, модем. Для этого создаем файл /etc/usb-modeswitch.conf:

########################################################
# Мegafon 3G Modem E1750
# Use device /dev/ttyUSB0 for connecting 
DefaultVendor=0x12d1
DefaultProduct=0x1446
MessageContent="55534243000000000000000000000011060000000000000000000000000000"

Инициализируем модем:

root@openwrt:~$ usb_modeswitch -c /etc/usb-modeswitch.conf
Warning: TargetProductList overrides TargetProduct!

Looking for target devices ...
 No devices in target mode or class found
Looking for default devices ...
 Found devices in default mode or class (1)
Accessing device 006 on bus 002 ...
Using endpoints 0x01 (out) and 0x81 (in)
Using endpoints 0x01 (out) and 0x81 (in)
Inquiring device details; driver will be detached ...
Looking for active driver ...
 OK, driver found ("usb-storage")
 OK, driver "usb-storage" detached

SCSI inquiry data (for identification)
-------------------------
  Vendor String: HUAWEI
   Model String: Mass Storage
Revision String: 2.31
-------------------------

USB description data (for identification)
-------------------------
Manufacturer: HUAWEI Technology
     Product: HUAWEI Mobile
  Serial No.: not provided
-------------------------
Setting up communication with interface 0 ...
Using endpoint 0x01 for message sending ...
Trying to send message 1 to endpoint 0x01 ...
 Device seems to have vanished right after sending. Good.
 Device is gone, skipping any further commands

Checking for mode switch (max. 20 times, once per second) ...
 Original device is gone already, not checking
 Searching for target devices ...
 Searching for target devices ...
 Searching for target devices ...
 Searching for target devices ...
 Searching for target devices ...
 Found correct target device

Mode switch succeeded. Bye.

После этого получаем заветные девайсы:

root@openwrt:~$ dmesg
...
usb 2-1: new full speed USB device using ar71xx-ohci and address 2
usbcore: registered new interface driver usbserial
USB Serial support registered for generic
usb 2-1: configuration #1 chosen from 1 choice
usbserial_generic 2-1:1.0: generic converter detected
usb 2-1: generic converter now attached to ttyUSB0
usbserial_generic 2-1:1.1: generic converter detected
usb 2-1: generic converter now attached to ttyUSB1
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
...

Выполнять такие манипуляции каждый раз при перезагрузке или подключении модема не очень то хочется, от этого нас избавит udev:

root@openwrt:~$ opkg update
root@openwrt:~$ opkg install udev

Создаем файл /etc/udev/rules.d/40-usb_modeswitch.rules:

ACTION!="add", GOTO="modeswitch_rules_end"

SUBSYSTEM!="usb", GOTO="modeswitch_rules_end"

# Most known install partitions are on interface 0, one on 5, one on 9
ATTRS{bInterfaceNumber}!="0[059]", GOTO="modeswitch_rules_end"

# only storage class devices are handled; negative
# filtering here would exclude some quirky devices
ATTRS{bDeviceClass}=="08", GOTO="modeswitch_rules_begin"
ATTRS{bInterfaceClass}=="08", GOTO="modeswitch_rules_begin"
GOTO="modeswitch_rules_end"

LABEL="modeswitch_rules_begin"

# Huawei, newer modems
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1446", RUN+="usb_modeswitch '%b/%k'"

LABEL="modeswitch_rules_end"

Приступим к конфигурации интерфейса, добавим в /etc/config/network (APN указана для МегаФона, у других операторов может отличаться):

config 'interface' 'wan2'
	option 'ifname' 'ppp0'
	option 'peerdns' '1'
	option 'defaultroute' '1'
	option 'proto' '3g'
	option 'device' '/dev/ttyUSB0'
	option 'apn' 'internet'
	option 'pincode' '1234'

И подключаемся:

root@openwrt:~$ ifup wan2
SIM ready
PIN set successfully
root@openwrt:~$ ifconfig 3g-wan2
3g-wan2   Link encap:Point-to-Point Protocol  
          inet addr:10.237.xxx.xxx  P-t-P:10.64.xxx.xxx  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:56 (56.0 B)  TX bytes:44 (44.0 B)

Переходим к настройкам межсетевого экрана. В /etc/config/firewall добавляем:

config 'zone'
	option 'output' 'ACCEPT'
	option 'name' 'wan2'
	option 'network' 'wan2'
	option 'input' 'REJECT'
	option 'forward' 'REJECT'
	option 'masq' '1'
	option 'mtu_fix' '1'

config 'forwarding'
	option 'dest' 'wan2'
	option 'src' 'lan'

Перезачитываем конфиг:

root@openwrt:~$ /etc/init.d/firewall relad

Устройство полностью готово к работе!

2 комментария “Превращаем D-Link DIR-825 в 3G-роутер с помощью Huawei E1750 и OpenWRT”

Комментирование закрыто.