В бюджетных ноутбуках часто используются беспроводные сетевые адаптеры от компании 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 Комментарии