В бюджетных ноутбуках часто используются беспроводные сетевые адаптеры от компании 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
Если есть вот такие строчки, то все ок и драйвер загружен правильно:
Но если загружен 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
Теперь установим 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
С настройкой hostapd все, но запускать точку доступа еще рано, я бы даже сказал очень рано. Перейдем к конфигурации сетевого интерфейса. Нам нужно задать статический ip, dns, режим и еще несколько настроек. Для этого идем в /etc/conf.d/net и добавляем следующие строки:
vi /etc/conf.d/net
Осталось настроить dhcp сервер для раздачи ip пользователям, которые будут подключаться к нашей сети. Для этого используем dnsmasq:
sudo emerge -av dnsmasq
После установки открываем конфигурационный файл и добавляем туда несколько строк, чтобы программа слушала интерфейс wlp3s0, и выдавала адреса в диапазоне 10.10.0.x:
sudo vi /etc/dnsmasq/dnsmasq.conf
Осталось настроить 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 на своем ноутбуке. Это довольно сложный процесс, но если разобраться, то вполне можно выполнить. Если у вас остались вопросы, спрашивайте в комментариях!

Статья Настройка точки доступа wifi broadcom в Linux распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
не получается. то команда не найдена, то еще какая-то хуйня. походу в каждом выпуске что то меняется и невозможно настроить по чужим советам. так же и по оптимизации и ускорению загрузки-то строчек таких нет, то команда не найдена, то еще какая-нибудь шляпа. где, что курить, не понятно, а хочется. уж больно вин 10 не нравится. (установил и отключаешь, удаляешь, получается огрызок с не удаляемым хламом) попробую OpenSUSE. или семерку как вторая. ткни носом где, что почитать(подлататься в LINUXe)