Настройка точки доступа 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 на своем ноутбуке. Это довольно сложный процесс, но если разобраться, то вполне можно выполнить. Если у вас остались вопросы, спрашивайте в комментариях!

Оцените статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Пока оценок нет)
Загрузка...

Один комментарий

  1. yurij Ноябрь 27, 2017 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: