Настройка точки доступа wifi broadcom в Linux

В бюджетных ноутбуках часто используются беспроводные сетевые адаптеры от компании Broadcom. Если в Windows не возникает никаких проблем при создании точки доступа на карте практически любого производителя, то в Linux  про точку доступа мы уже не говорим, просто подключиться к сети через WiFi может вызвать очень серьезные затруднения. Правда, в последнее время ситуация немного улучшилась.

В этой инструкции мы рассмотрим как создать точку доступа Wifi Linux на карте Broadcom серии bcm4313. Настройка будет рассмотрена в дистрибутиве Gnetoo, но в других дистрибутивах действия и настройки будут похожие, только файлы и команды установки могут немного отличаться. Настройка точки доступа Wifi в Linux

Для карт Broadcom есть аж четыре драйвера: стандартный и по умолчанию включенный b43, входящие в состав ядра brcmsmac и brcmfmac, а также проприетарный драйвер broadcom linux под названием wl. Сразу скажу что проприетарный драйвер совсем никудышный, так как не поддерживает не только режим точки доступа, но и неразборчивый режим тоже.

Стандартный b43 и brcmfmac нам не подходят потому что не работают в режиме точки доступа на нашей карте, хотя эти уже поддерживают режим монитора.

Остается только brcmsmac, который можно заставить раздать wfi linux только с помощью hostapd. Сначала разберемся с драйверами ядра. Теперь, когда мы определились что будем использовать, перейдем к настройке broadcom linux. Смотрим какой драйвер загружен:

lsmod 

Если есть вот такие строчки, то все ок и драйвер загружен правильно:

brcmsmac 497481 0 cordic 1024 1 brcmsmac brcmutil 4596 1 brcmsmac

Но если загружен b43 или broadcom-wl их нужно удалить. Например, для b43:

sudo rmmod b43

И запустить brcmsmac:

sudo modprobe brcmsmac

Лучше полностью удалить проприетарный драйвер broadcom linux из системы если он установлен и добавить в черный список ненужные драйверы, оставив только brcmsmac.  Чтобы при перезагрузке грузился только он, для этого добавляем такие строчки в файл /etc/modprobe.d/50-blacklist.conf:

sudo vi /etc/modprobe.d/50-blacklist.conf 

blacklist b43 blacklist b43-legacy

Теперь установим hostapd:

sudo emerge -av hostapd

Стандартная конфигурация программы нам не подойдет, поэтому оригинальный конфигурационный файл переименовываем и создаем вот такой:

sudo vi /etc/hostapd/hostapd.conf

/etc/hostapd/hostapd.conf interface=wlp3s0 driver=nl80211 logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 #dump_file=/tmp/hostapd.dump ctrl_interface=/var/run/hostapd ctrl_interface_group=0 macaddr_acl=1

ssid=your_ssid

hw_mode=g channel=7

macaddr_acl=0 auth_algs=3 ieee80211n=1 wmm_enabled=1

eap_server=0 eap_message=hello eapol_key_index_workaround=0 own_ip_addr=127.0.0.1 wpa=2 wpa_passphrase=your_password wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP TKIP rsn_pairwise=CCMP

Здесь и далее wlp3s0 - ваш сетевой интерфейс broadcom wifi. ssid устанавливает желаемое имя точки доступа, wpa_passphrase - пароль. Дальше открываем файл /etc/conf.d/hostapd и указываем в строчке INTERFACES имя своего сетевого интерфейса:

sudo vi /etc/conf.d/hostapd

INTERFACES="wlp3s0"

С настройкой hostapd все, но запускать точку доступа еще рано, я бы даже сказал очень рано. Перейдем к конфигурации сетевого интерфейса. Нам нужно задать статический ip, dns, режим и еще несколько настроек. Для этого идем в /etc/conf.d/net и добавляем следующие строки:

vi /etc/conf.d/net

modules_wlp3s0="!wpa_supplicant !iwconfig" config_wlp3s0="10.10.0.1 netmask 255.255.255.0" mode_wlp3s0="ap" dns_servers_wlp3s0="8.8.8.8"

Осталось настроить dhcp сервер для раздачи ip пользователям, которые будут подключаться к нашей сети. Для этого используем dnsmasq:

sudo emerge -av dnsmasq

После установки открываем конфигурационный файл и добавляем туда несколько строк, чтобы программа слушала интерфейс wlp3s0, и выдавала адреса в диапазоне 10.10.0.x:

sudo vi /etc/dnsmasq/dnsmasq.conf

dhcp-range=10.10.0.2,10.10.0.255,255.255.255.0,12h interface=wlp3s0 listen-address=127.0.0.1 dhcp-host=1c:3e:84:82:a2:52,10.10.0.1 cache-size=300 dhcp-authoritative server=8.8.8.8 no-resolv address=/backbone/10.10.0.1 dhcp-option=3,10.10.0.1 dhcp-option=1,255.255.255.0 log-queries log-dhcp

Осталось настроить iptables для пропускания трафика и настроить автозагрузку всего этого, но предлагаю пойти другим путем. Мы напишем скрипт, которым можно будет в любой момент раздать Wifi linux или gentoo, а также остановить раздачу. Вот сам скрипт:

 sudo vi /etc/init.d/wifi_access_point 

/bin/bash

case $1 in

start )

# на случай если интерфейс программно отключен rfkill unblock all

# запускаем сервисы /etc/init.d/hostapd start /etc/init.d/dnsmasq start

# включаем форвардинг пакетов

sysctl net.ipv4.ip_forward=1

# правила для iptables iptables -t nat -A POSTROUTING -o enp2s0f0 -j MASQUERADE iptables -A FORWARD -i enp2s0f0 -o wlp3s0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i wlp3s0 -o enp2s0f0 -j ACCEPT ;; stop ) /etc/init.d/hostapd stop /etc/init.d/dnsmasq stop sysctl net.ipv4.ip_forward=0 ;;

esac

После сохранения скрипта дайте ему права на выполнение:

sudo chmod ugo+x /etc/init.d/wifi_access_point

И вот только теперь можно тестировать. Для запуска точки доступа используйте:

sudo /etc/init.d/wifi_access_point start

А для остановки:

sudo /etc/init.d/wifi_access_point stop

Вы можете добавить этот скрипт в автозагрузку, чтобы настройка точки доступа wifi linux выполнялась автоматически. Выводы

Вот и все. Теперь вы знаете как выполняется настройка hostapd для беспроводной карты broadcom и сможете раздать wifi на своем ноутбуке. Это довольно сложный процесс, но если разобраться, то вполне можно выполнить. Если у вас остались вопросы, спрашивайте в комментариях!

Отправка комментария

0 Комментарии