Linux Wive Firmware для RTL8186 — беспроводных точек, роутеров

Linux Wive Firmware для DLink DWL-G700AP на RTL8186

DLink DWL-G700AP – это Wifi-точка доступа для домашнего пользования, поддержвающая стандарты 802.11b/g.

Устройство интересно своей низкой стоимостью. Минус = Длинковский интерфейс несмотря на наличие 2х сетевых интерфейсов, оно умеет быть только мостом (bridge).

Но Альтернативная прошивка и ПО с открытым кодом для платформ на базе SoC Realtek RTL8186 поможет :).

1.Идем на страницу с прошивкой нажимаем на “Our project page on SF.NET”, и загружаем прошивку Wive v0.6.1. (Wive-v0.6.1-pre6-20071216.tar.gz), еще есть новее Wive-v0.6.1-preX-20090115.tar.gz, так же выкладываю тут:

2.Загружаем и устанавливаем tftp клиент. Например отсюда
3. Подключаем точку доступа к ПК по проводному интерфейсу.
4.Устанавливаем на компьюетере IP-адрес 192.168.1.2/255.255.255.0
(для чистоты эксперемента лучше все остальные сетевые карты отключить)
5.Выключаем питание точки доступа
Зажимаем кнопку Reset
Не отпуская кнопку включаем питание.
Ждем 5-10 секунд
6.Выполняем
tftp -i 192.168.1.6 PUT wive_rev_b.bin
и ждем завершения
7. Через секунд 30-40 точка будет доступна только на проводном интерфейсе по адресу 192.168.0.50/255.255.255.0
8. Меняем IP вашего ПК на 192.168.0.2 и подключаемся к точке telnet-ом или ssh
Логин: root
Пароль: rtl8186
Теперь точка работает в режиме роутера. Управление по протоколам: SSH или telnet.

Итак, после первым делом после входа по протоколу telnet/ssh необходимо сменить пароль:

1
2
3
4
5
[Wive@/]# passwd
Changing password for root
New password: ********
Retype password: ********
Password for root changed by root

Далее РЕДАКТИРУЕМ имя точки доступа в WiFi сети (SSID):
[Wive@/]# vi /etc/network/wifi/general

1
iwpriv wlan0 set_mib ssid="Wive"

заменяя “Wive” на что-либо

Далее в файл /etc/network/interfaces вносим IP и MAC-адрес, указанные при подключения к провайдеру (в моем случае Skyhome):

1
2
ETH0_IPADDR=10.200.XXX.XXX/23
ETH0_MACADDR=000000CCDDEE

включаем и настраиваем беспроводный интерфейс:

1
2
3
4
5
6
WLAN_ENABLED=yes
WLAN_FORCEIP=no
WLAN_IN_BR0=yes
WLAN_USE_DHCP=no
WLAN_IPADDR=172.16.1.1/24
WLAN_MACADDR=001000CCDDEE

Настраиваем беспроводной интерфейс(возможно это работает только на новой версии).
Переходим в каталог wifi: cd wifi
Редактируем файл general: vi general
Нажимаем “I”

1
2
3
4
5
6
7
8
    * iwpriv wlan0 set_mib ssid="myessid" (устнавливаем SSID вашей сети)
    * iwpriv wlan0 set_mib opmode=8 (режим работы – Сlient)
    * iwpriv wlan0 set_mib channel=6 (канал на котором работает беспроводная сеть)
    * iwpriv wlan0 set_mib initialGain=4 (Чувствительность приемника от 0 до 7,не рекомендуется ставить 0,оптимальное 3-4)
    * CCKPOWER=18 (установка мощности для 802.11b режима)
    * OFDMPOWER=18 (установка мощности для 802.11g)
    * iwpriv wlan0 set_mib nat25_disable=0 (включает режим МАКклон – клонирует все маки которые через нее идут меняет на свой)
    * iwpriv wlan0 set_mib macclone_enable=0 (не меняем)

Выходим с настроек два раза Esc, потом “Shift” + “:” и wq Касаемо выходной мощности – CCKPOWER, OFDMPOWER. Диапазон допустимых значений 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1a, 1b, 1c, 1d, 1e, 1f, 20, 21, 22. Но значения выше 20 ставить не рекомендую. При 21 у меня выгорел выходной каскад. Только при условии дополнительного охлаждения выходного каскада можно пробовать поднимать мощность, и то на свой страх и риск! Выходной каскад построен на микросхеме sst12pl15, которая используется и в R52-350 с выходной мощностью 350мВт!!!

Команда wl scangraph выводит графический сканер эфира. rssi показывает уровень сигнала удаленной AP.

Сохраняем изменения и выполняем перенос файлов конфигурации из временной в постоянную память устройства (дабы при его reboot не потерять внесенные изменения).

1
2
3
4
5
[Wive@/]# fs save
tar: removing leading '/' from member names
0+1 records in
0+1 records out
[Wive@/]# reboot

Теперь можно смело отключать кабель, включать WiFi и выполнять поиск беспроводной сети.

Теперь указываем в настройках WiFi-карты любой IP из диапазона 172.16.1.0/24 (кроме 172.16.1.1) и снова поключаемся к точке доступа но уже по новому IP-адресу 172.16.1.1.

Далее указываем IP-адрес шлюза провайдера

1
2
3
[Wive@/]# vi /etc/network/routes
#!/bin/sh
ip ro add default via 10.200.XXX.XXX

Указываем DNS-сервера, полученные от провайдера

1
[Wive@/]# vi /etc/resolv.conf

Включаем NAT из безпроводной сети в проводную:

vi /etc/network/iptables

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward
 
 
 
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
 
#/sbin/iptables -I FORWARD -o ppp+ -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --cl
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#разрешить icmp через iptables/sbin/iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -p icmp --icmp-type 6 -j ACCEPT
/sbin/iptables -A OUTPUT -p icmp --icmp-type 6 -j ACCEPT

Настраиваем DHCP-сервер:

1
2
3
4
[Wive@/]# vi /etc/udhcpd.conf
# Тут уже сами разберетесь следуя комментариям
# особенно стоит обратить внимание на параметры
# interface и static_lease

Для авто-запуска udhcpd при старте системы, необходимо выполнить

1
[Wive@/]# chmod a+x /etc/rc.d/S65udhcpd

Ну и после всего этого не забываем

1
[Wive@/]# fs save

Далем reboot, подключаем в проводной интерфейс кабель от провайдера, указываем в настройках беспроводной сетевой карты “Получить IP автоматически” и наслаждаемся “отвязанностью от проводов” :)

Что касается безопасности – это отдельная история. Тут уже на вкус-и-цвет..
IMHO для домашнего пользования вполне должно хватать фильтрации по MAC и WEP-ключа.
Чтоб включить фильтрацию по MAC-адресу, нужно отредактировать файл
/etc/network/wifi/acl (там вроде все ясно из комментариев)

Настройки WEP/WPA указываются в /etc/network/wifi/wep

Пример настройки DHCP клиента в Wive.

Только что лично проверил три раза и лишнийраз убедился, что всё работает!

В первую очередь необходимо задать интерфейс, который должен получать адрес, шюз, ДНС от DHCP сервера.
Для этого редактируем скрипт: /etc/rc.d/S22udhcpc следующим образом:
Если бридж выключен (по умолчанию он включен) и, например, хотим чтобы точка получала у нас адрес на беспроводной интерфейс, то указанный срипт должен содержать следующее:

1
2
3
#!/bin/sh
 
udhcpc -i wlan0 -q -s /etc/scripts/default.script

Посе правки и сохранения скрипта, ему нужно назначить права на исполнение: 755
Права можно назначить через консоль командой:

1
chmod 755 /etc/rc.d/S22udhcpc

Чтобы функции DHCP клиента были полноценные (кроме IP адреса ещё и шлюз и ДНС палучала точка от DHCP сервера), необходимо создать файл:
/etc/scripts/default.script

Содержимое этого скрипта следующее:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
#!/bin/sh
 
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
 
RESOLV_CONF="/etc/resolv.conf"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"
 
case "$1" in
    deconfig)
        /sbin/ifconfig $interface 0.0.0.0
    ;;
 
    renew|bound)
        /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
 
        if [ -n "$router" ]; then
            echo "deleting routers"
            while route del default gw 0.0.0.0 dev $interface; do
                :
            done
 
            for i in $router; do
                route add default gw $i dev $interface
            done
        fi
 
        echo -n > $RESOLV_CONF
        [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
        for i in $dns; do
            echo adding dns $i
            echo nameserver $i >> $RESOLV_CONF
        done
    ;;
esac
 
exit 0

После перезагрузки точка получит всю необходимую информацию от DHCP сервера и через несколько секунд станет доступен по выданному ей адресу.


Leave a Comment

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

Загрузка...
Menu Title