Я его слепила… Настройка программной wifi точки доступа на базе Mint 12 и wifi адаптера D-Link DWA-140

С недавнего времени у меня появились гаджеты на системе android. Возникла потребность в раздаче на них интернета через wifi. Ни беспроводного модема ни беспроводной точки доступа у меня нет. Но по случаю в моих руках оказался «свисток», wifi адаптер D-Link DWA-140 (B2). Выяснилось, что подобные устройства способны работать в режиме программной точки доступа. К таковым относится и мой DWA-140.

Исходное состояние:

HTC Wildfire (android 2.2) и Asus EEE Pad Transformer (android 3.2)

Linux Mint 12. Машина с адресом 192.168.0.50 находится в локальной сети и получает интернет через прокси сервер 192.168.0.1.

Wifi адаптер D-Link DWA-140 с чипом Ralink 2870/3070

Ядра последних версий поддерживают чипы Ralink «из коробки», по-этому подключив адаптер к компьютеру я сразу увидел весело мигающий оранжевый огонек индикатора. Значит устройство было правильно распознано, драйвера работают. Проверим.

# lsusb
Bus 001 Device 002: ID 07d1:3c0a D-Link System DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT2870]

ifconfig показывает наличие сетевого интерфейса wlan0

Ура! Mint умница!

Значит с драйверами мучится не придется. Наивный…

Гуглим команду перевода адаптера в режим точки доступа. Оказывается, таких режимов два. Перый — Ad-hoc или «точка-точка», второй AP, вернее softAP. По отзывам, проблем меньше с поднятием Ad-hoc. Но… Так понравившийся мне Android c Ad-hoc не дружит (ох уж эти патенты >| ). А чтобы «задружил», надо рутовать устройства и править системные файлы, чего мне делать очень не хотелось.

Гуглим дальше…

Для поднятия softAP, драйвера, стоящие по умолчанию не подходят. А так хотелось чтобы всё было просто.

Будем отключать драйвера старого стиля и запускать новые. Заведомо побеспокоимся о наличии нужных программ iw, wireless-tools и hostapd

# sudo apt-get install iw wireless-tools hostapd

Cмотрим чипсеты/драйвера в справочнике: http://wireless.kernel.org/en/users/Devices/USB

Наше устройство требует драйвера rt2800usb. Он входит в состав пакета compat-wireless.

Качаем самую свежую версию compat-wireless: www.orbit-lab.org/kernel/

Распаковываем

# tar -xf /path/to/compat-wireless-2.6.tar.bz2

Заходим в распакованную папку

# cd /path/to/compat-wireless-2.6

Запускаем скрипт выбора драйвера. В нашем случае это rt2x00

# ./scripts/driver-select rt2x00

Компилируем и устанавливаем драйвера.

# make
# sudo make install

После этого обязательно выгружаем модули с драйверами.

# sudo make unload

Имейте ввиду, сеть в этом случае может пропасть. После перезагрузки всё встанет на свои места. Но сначала включим модули драйверов в систему

# modules="cfg80211 mac80211 rt2x00"
# for i in $modules; do sudo modprobe -l $i; done

После компиляции и инсталляции отключаем старые драйвера. Добавляем в файл /etc/modprobe.d/blacklist.conf следующие строки

blacklist rt2870sta
blacklist ar9170usb

Раз у нас новые драйвера, значит и firmware для них должно быть новым.

Идем сюда: www.ralinktech.com ищем Support — Linux, скачиваем и распаковываем RT2870_Firmware_V22.zip

# cd RT2870_Firmware_V22
# sudo cp rt2870.bin /lib/firmware

При копировании файл заменяем.

Перезагружаем систему.

Проверяем наличие нужных модулей (rt2800usb, mac80211, cfg80211) командой lsmod. Если отсутствуют, придется включать вручную.

# sudo modprobe mac80211
# sudo modprobe cfg80211
# sudo modprobe rt2800usb

Mint загрузил всё автоматически.

Осталось перевести устройство в режим Master (режим точки доступа). Для этого нам потребуется программа hostapd. Напомню, мы её уже установили. Делаем копию оригинального конфига.

# cp /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.orig

Меняем значения в файле /etc/hostapd/hostapd.conf

# где слушать
interface=wlan0
driver=nl80211
# Если при загрузки ругается на nl80211, значит драйвер старый
# как увидят сеть клиенты
ssid=MyNet
# влияет на список каналов и мощность
country_code=RU
# включаем режим wi-fi. Hostapd версии 7+ умеет работать с N
hw_mode=g
# выбор канала, 1 обычно всегда занят, да и 11 тоже
channel=9
# так надо!
auth_algs=1
logger_syslog=-1
logger_syslog_level=3
logger_stdout=-1
logger_stdout_level=2
ignore_broadcast_ssid=0
# Если WPA2, то:
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=VeryLongPassword
rsn_pairwise=CCMP
# Если WPA,то
wpa=1wpa_p
airwise=TKIP
wpa_passphrase=VeryLongPassword

И наконец-то включаем программную точку доступа. Для проверки ставим параметр -d

# hostapd -d /etc/hostapd/hostapd.conf

Если проблем нет, ставим hostapd в автоматическую загрузку. Раскомментируем пару строк в файле /etc/default/hostapd

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

На всякий случай, да и для проверки автоматической загрузки, перезагружаемся.

Весело мигает оранжевый огонёк…

Лезу в настройки wifi на своём Transformer. В списке появилась новая сеть. Сигнал отличный. Ура! Подключаемся…

«Получение IP адреса…» и на этом всё. Значит для раздачи IP-шников потребуется dhcp сервер.

Настраиваем сетевые интерфейсы в файле /etc/network/interfaces

auto lo
iface lo inet loopback

# Интернет-интерфейс.
auto eth0
iface eth0 inet static
address 192.168.0.50
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
proxy 192.168.0.1:3128
post-up iptables-restore < /etc/iptables.rules

# Беспроводной интерфейс
auto wlan0
iface wlan0 inet static
address 10.10.10.1
netmask 255.255.255.0

Здесь мы присваиваем wlan0 статичный IP 10.10.10.1. Последняя строка в блоке для eth0 была добавлена позже, для восстановления правил трансляции пакетов. Хочу сразу предупредить. В Ubuntu после таких манипуляций с interfaces перестаёт работать сеть. В этом случае советую удалить NetworkManager и поставить вместо него более продвинутый wicd.

Ставим dhcp сервер

#apt-get install dhcp3-server

Настраиваем работу сервера в файле /etc/dhcp3/dhcpd.conf:

#default-lease-time 3600;
max-lease-time 9000;
authoritative;
log-facility local7;
subnet 10.10.10.0 netmask 255.255.255.0 {
interface wlan0;
range 10.10.10.2 10.10.10.254;
option domain-name-servers 192.168.0.1;
option routers 10.10.10.1;
option broadcast-address 10.0.0.0;
}

Поясню. Раздаем адреса с 10.10.10.2 по 10.10.10.255. DNS сервера можно посмотреть у себя в /etc/resolv.conf. И не забудьте указать в качестве шлюза свою точку 10.10.10.1. Как раз строка option routers за это и отвечает. Если все сделали, то советую зайти еще в файл /etc/default/dhcp3-server. И здесь обязательно укажите, какой интерфейс будет раздавать IP. Это необходимо поправить в сл. строке:

INTERFACES="wlan0"

Перезагружаемся. (не вытравил ещё я из себя Windows)

Снова лезу в настройки wifi на Transformer. Сеть есть. Подключаемся. Ура! Заветное «Подключено». Запускаю браузер… Интернета нет. Дело в том что в локальную сеть и соответственно в интернет у нас смотрит интерфейс eth0, а мы подключены к wlan0.

Настраиваем трансляцию пакетов. Для этого в файле /etc/sysctl.conf раскомментируем строчку:

net.ipv4.ip_forward=1

И теперь зададим для iptables некоторые правила, которые будут транслировать пакеты из внутренней сети во внешнюю:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE

Сохраняем правила

# iptables-save > /etc/iptables.rules

И ещё один штрих. Интернет приходит в локальную сеть через прокси сервер 192.168.0.1:3128. Его то мы и прописываем в свойствах подключения к wifi на наших гаджетах.

Вот сейчас действительно ура!

Изначально все настройки проделывались в Ubuntu 10.04. Естественно не без экспериментов. В итоге режим Master поднять так и не удалось. В Mint выполнялись только проверенные команды и всё сразу заработало. Думаю что на неизмученной Ubuntu так-же всё заработает.

При подключении HTC Wildfire возникли проблемы с шифрованием. Упорно отказывается видеть режим wpa2.

Источники:

http://habrahabr.ru/blogs/sysadm/116297/

http://wikiadmin.net/Создание_многофункциональной_точки_доступа_из_старого_компьютера

Categories: Технические вопросы | Метки: , , | 14 комментариев

Навигация по записям

14 thoughts on “Я его слепила… Настройка программной wifi точки доступа на базе Mint 12 и wifi адаптера D-Link DWA-140

  1. кому надо, сэкономит много времени по этому мануалу 🙂

  2. aleks

    Огромное спасибо за подробное описание.Целую неделю копался в и-нете пока не нашел эту публикацию! У меня на всех windows этот USB адаптер работает. На линукс не хотел запускаться.И так -дошел до места ( # sudo make unload) драйверы никакие не устанавливал.
    После проделанных процедур перезагрузился.Адаптер свой драйвер и заморгал.Перезагрузился. Отключил провод от сетевой карты.Адаптер нашел сеть .Сеть затребовала пароль-ввел пароль.Опять перезагрузился. В Network
    Manager указал интерфеис-lwan0 и так-же ввел пароль на WPA Pepsonal ********** далее последний раз перезагрузился и получил интернет во всех установленных браузерах!!!
    Моя система Linux Mint12 с обновлением после установки загружен последний (compat-wireless-3.4-rc1-2.tar.bz2) модем DLINK 2500U, роутер ASUS WL 520GC, и адаптер wifi DLINK DWA 140 B3. провайдер Авангард. Еще раз спасибо!!!

  3. aleks

    Сегодня используя эту статью установил wifi на Linux ubuntu 2.6.35-32-generic (Ubuntu 10.04) только драйвер пришлось поставить RT2870_Firmware_V22.zip — после этого устройство DLINR DWA 140 нашлось и заморгало после перезагрузки. С uBUNTU 10.04 и пишу сообщение.

  4. aleks

    Хочу добавить. В файл /etc/modprobe.d/blacklist.conf — ничего не прописывал , он вот такой-

    # This file lists those modules which we don’t want to be loaded by
    # alias expansion, usually so some other driver will be loaded for the
    # device instead.

    # evbug is a debug tool that should be loaded explicitly
    blacklist evbug

    # these drivers are very simple, the HID drivers are usually preferred
    blacklist usbmouse
    blacklist usbkbd

    # replaced by e100
    blacklist eepro100

    # replaced by tulip
    blacklist de4x5

    # causes no end of confusion by creating unexpected network interfaces
    blacklist eth1394

    # snd_intel8x0m can interfere with snd_intel8x0, doesn’t seem to support much
    # hardware on its own (Ubuntu bug #2011, #6810)
    blacklist snd_intel8x0m

    # Conflicts with dvb driver (which is better for handling this device)
    blacklist snd_aw2

    # causes failure to suspend on HP compaq nc6000 (Ubuntu: #10306)
    blacklist i2c_i801

    # replaced by p54pci
    blacklist prism54

    # replaced by b43 and ssb.
    blacklist bcm43xx

    # most apps now use garmin usb driver directly (Ubuntu: #114565)
    blacklist garmin_gps

    # replaced by asus-laptop (Ubuntu: #184721)
    blacklist asus_acpi

    # low-quality, just noise when being used for sound playback, causes
    # hangs at desktop session start (Ubuntu: #246969)
    blacklist snd_pcsp

    # ugly and loud noise, getting on everyone’s nerves; this should be done by a
    # nice pulseaudio bing (Ubuntu: #77010)
    blacklist pcspkr

    # EDAC driver for amd76x clashes with the agp driver preventing the aperture
    # from being initialised (Ubuntu: #297750). Blacklist so that the driver
    # continues to build and is installable for the few cases where its
    # really needed.
    blacklist amd76x_edac

  5. кто-то

    не вводите людей в заблуждение
    вы сохраняете таблесы в # iptables-save > /etc/iptables.rules
    а поднимаете post-up iptables-restore < /etc/iptables.up.rules

  6. Sergey

    Спасибо огромное за статью, получилось настроить и у меня. Но радовался не долго, как оказалось к мобиле не поступает https трафик, не знаете в чем может быть причина?

  7. Sergey

    Мобила htc wildfire s , но это как бы не важно, браузер опера или приложения что обмениваются данными по https но это тоже не важно, главное что http трафик проходит без проблем а https — нет

  8. Sergey

    настраивал перед этим в винде все было нормально, думаю проблема где-то в iptables…

  9. Sergey

    прошу прощение, проблема была в маршрутизации, настроенной до этого, не пускало на конкретный сайт уже все сделал спасибо)

  10. Sergey

    а теперь другая проблема)) на линуксе с точкой доступа стоит sip сервер и sip клиент что конектится к 127.0.0.1 далее мобилой конекчусь к серверу и пробую звонить на клиента (тот что на компе) звонок происходит но комп меня слышет, а с компа на мобилу звук не идет… может подскажете что с данной настойки точки доступа блокирует rtp трафик?

Ответить на olegich99 Отменить ответ

Блог на WordPress.com.