Точка доступа на основе wi-fi карточки D-link DWA-520 (ath5k)

Configuring Linux
Хотите получить wi-fi точку доступа из барахла которое завалялось в гараже? Тогда вам под кат т.к., сегодня мы будем собирать программную точку доступа (AP) на основе wi-fi карточки D-link DWA-520 на чипсете Atheros AR5001X+ (ath5k) и Ubuntu Server 9.04.

Сперва удостоверяемся в том, что карточка определяется:
lspci -v

Вывод должен быть примерно таковым:
...

01:0b.0 Ethernet controller: Atheros Communications Inc. Atheros AR5001X+ Wireless Network Adapter (rev 01)
        Subsystem: D-Link System Inc Device 3a73
        Flags: bus master, medium devsel, latency 168, IRQ 10
        Memory at fc9f0000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: <access denied>
        Kernel driver in use: ath5k
        Kernel modules: ath5k

...

Как видно, для нашей карты используется драйвер ath5k.
Для нормальной работы необходимо обновить ядро до более нового (в стандартной поставке ядро 2.6.28). Штатными средствами это сделать не удаётся — поэтому будем качать и ставить пакеты с новым ядром. Ядра лежат вот тут: http://kernel.ubuntu.com/~kernel-ppa/mainline/.
Качаем пакеты с ядром:
wget -c http://kernel.ubuntu.com/%7Ekernel-ppa/mainline/v2.6.30.5/linux-headers-2.6.30-02063005-generic_2.6.30-02063005_i386.deb
wget -c http://kernel.ubuntu.com/%7Ekernel-ppa/mainline/v2.6.30.5/linux-headers-2.6.30-02063005_2.6.30-02063005_all.deb
wget -c http://kernel.ubuntu.com/%7Ekernel-ppa/mainline/v2.6.30.5/linux-image-2.6.30-02063005-generic_2.6.30-02063005_i386.deb
wget -c http://kernel.ubuntu.com/%7Ekernel-ppa/mainline/v2.6.30.5/linux-source-2.6.30_2.6.30-02063005_all.deb

Последнее качать не обязательно, это исходники ядра.
Устанавливаем:
sudo dpkg -i *.deb

Перезагружаемся.
Теперь нам необходимы свежие версии драйверов на wi-fi. Для этого идём на сайт http://linuxwireless.org. Как гласит вот эта страничка: http://linuxwireless.org/en/users/Drivers — ath5k драйвер не поддерживает работу в режиме AP в стандартной комплектации. Но это поправимо накладыванием патча на исходники ath5k.Для этого сначала скачаем исходные коды драйверов отсюда http://linuxwireless.org/en/users/Download. Нас интересует сборка под 2.6.30 ядро поэтому:
wget http://www.orbit-lab.org/kernel/compat-wireless-2.6-stable/v2.6.30/compat-wireless-2.6.30.tar.bz2

Далее распаковываем всё это хозяйство:
tar jxvf compat-wireless-2.6.30.tar.bz2

Теперь редактируем исходники (не нужно пугаться — тут всё очень просто). В файлике compat-wireless-2.6.30/drivers/net/wireless/ath5/base.c ищем вот такое место:
hw->wiphy->interface_modes =
        BIT(NL80211_IFTYPE_STATION) |
        BIT(NL80211_IFTYPE_ADHOC) |
        BIT(NL80211_IFTYPE_MESH_POINT);

И приводим его вот к такому виду, добавив стоку "BIT(NL80211_IFTYPE_AP) |":
hw->wiphy->interface_modes =
        BIT(NL80211_IFTYPE_STATION) |
        BIT(NL80211_IFTYPE_ADHOC) |
        BIT(NL80211_IFTYPE_AP) |
        BIT(NL80211_IFTYPE_MESH_POINT);

Далее собираем и устанавливаем:
    make
    sudo make install
    sudo make unload

Для точности эксперимента ребутаемся, хотя это и не критично вроде =).
Далее нам необходимо установить hostapd. Я рекомендую ставить самую последнюю версию:
wget -c http://mirror.yandex.ru/ubuntu/pool/universe/h/hostapd/hostapd_0.6.9-3_i386.deb

Теперь приступим к его настройке. Копируем старый конфиг:
sudo mv /etc/hostapd/hostapd.conf /etc/hostapd/original-hostapd.conf

И пишем в новый:
sudoedit /etc/hostapd/hostapd.conf

вот это:
    interface=wlan0
    driver=nl80211

    #Ваше названи точки доступа
    ssid=MySuperAP
    country_code=RU
    hw_mode=g
    channel=1

    macaddr_acl=0

    wpa=3
    wpa_key_mgmt=WPA-PSK
    #Ваш пароль
    wpa_passphrase=MySuperPass123
    wpa_pairwise=TKIP CCMP

Далее:
    sudoedit /etc/default/hostapd

    RUN_DAEMON="yes"
    DAEMON_CONF="/etc/hostapd/hostapd.conf"

Теперь приступаем к общим настройкам сети.
Разрешаем форвардинг трафика:
sudoedit /etc/sysctl.conf

и расскоментируем строку:
net.ipv4.ip_forward=1

Редактируем интерфейсы:
    sudoedit /etc/network/interfaces

    #Обратная петля
    auto lo
    iface lo inet loopback

    #Интерфейс на который приходит интернет к примеру от модема
    auto eth0
    iface eth1 inet static
            address 192.168.1.2
            netmask 255.255.255.0
            gateway 192.168.1.1

    #Наш wi-fi интерфейс
    auto wlan0
    iface wlan0 inet static
            address 192.168.0.1
            netmask 255.255.255.0
            gateway 192.168.0.1
            pre-up iptables-restore /etc/iptables.rules

Создаём файлик правил iptables:
sudoedit /etc/iptables.rules

пишем в него правило для маскарадинга:
    # Generated by iptables-save
    *nat
    :PREROUTING ACCEPT [4430:389020]
    :POSTROUTING ACCEPT [24:2723]
    :OUTPUT ACCEPT [28:3602]
    -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
    COMMIT

Ставим и настраиваем dhcp сервер:
    sudo aptitude install dhcp3-server
    sudoedit /etc/dhcp3/dhcpd.conf

Примерно так должен выглядеть конфиг:
    ddns-update-style none;
    option domain-name "MySuperNet";
    option domain-name-servers IPS_OF_DNS_SERVERS;
    default-lease-time 42300;
    max-lease-time 84600;
    log-facility local7;
    subnet 192.168.0.0 netmask 255.255.255.0 {
      range 192.168.0.100 192.168.0.200;
      option routers 192.168.0.1;
    }

Далее в файле:
sudoedit /etc/default/dhcp3-server

Указываем наш интерфейс для раздачи слонов айпишников:
INTERFACES="wlan0"

Теперь с чистой совестью и распирающей гордостью можем перезагружать наш роутер и наслаждаться wi-fi интернетом и сэкономленными деньгами на покупке железного роутера.

З.Ы. Для отлова неполадок hostapd логи смотрим вот тут:
tail -f /var/log/daemon.log

Полезные ссылки


1. Всё о драйвере ath5k: http://madwifi-project.org/wiki/About/ath5k;
2. Подробнее про hostapd читаем тут: http://hostap.epitest.fi/hostapd/ либо оригинальный конфиг;
3. Сайт посвящённый wi-fi драйверам: http://linuxwireless.org;
4. Два howto, которые помогли в написании этого творения: http://forum.ubuntu.ru/index.php?topic=61834 и http://forum.ubuntu.ru/index.php?topic=62844.
_________

Tags:ath5kAtherosd-linkdwa-520hostapdrouterwi-filinuxubuntu
Hubs: Configuring Linux
+31
13.6k 73
Comments 49

Popular right now

Безопасность Linux
February 12, 202130,000 ₽OTUS
SEO-специалист
January 25, 202136,000 ₽GeekBrains
UI-дизайнер
January 25, 202159,900 ₽Нетология
UX/UI дизайнер
January 25, 2021104,900 ₽Нетология
Профессия Android-разработчик
January 25, 202130,000 ₽Loftschool

Top of the last 24 hours