Краткое интро: данную статью я держал скопипизженной давно, и не знал что она ГАВНО! Когда наконец сам столкнулся — понял что и как,и теперь я переписываю на базе оригинала статьи уже свой манул. Основанный на моем тяжком опыте настройки)) Описанное далее уже мой личный опыт)
Имеем след.интерфейсы:
eth0 – сетевушка, подключенная в локальную сеть.
eth2 – сетевушка, подключенная в «инет» сеть.
wlan1 – wi-fi карточка, которая будет выполнять роль точки доступа.
В Debian 6 уже стоит нужное нам ядро с нужными нам драйверами. Поэтому ставим только binutils:
apt-get install binutils
Далее ставим из репозиториев пакеты, которые нам понадобяться для точки доступа:
apt-get
install
hostapd libnl1 wireless-tools libiw30 linux-backports-modules-wireles
Далее устанавливаем утилиты моста. Обязательно!:
apt-get install bridge-utils
и настраиваем сетевой мост со всеми интерфейсами:
nano /etc/network/interfaces
у меня он выглядет так:
auto lo
iface lo inet loopback
auto eth2
allow-hotplug eth2
iface eth2 inet static
address 172.хх.хх.44
netmask 255.255.0.0
gateway 172.хх.0.1
#auto eth0
#allow-hotplug eth0
#iface eth0 inet static
#address 192.168.1.1
#netmask 255.255.255.0
#gateway 192.168.1.1
post-up /etc/nat
auto br0
iface br0 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
bridge_ports eth0 wlan1
Тут мы видем что настройки еht0 закомментированы — то есть их там считай что нет. Как такового сетевого интерфейса eth0 теперь в системе не будет.Вместо него будет общий br0. Учтите это! То есть если у вас какой нить dnsmasq настроен на работу на карте eth0, то теперь надо поменять его в конфиге на br0! И т.д. Забудьте теперь про eth0))
Далее, конфигурируем точку доступа:
nano /etc/hostapd/hostapd.conf
Замечу что файл будет пустой. Мы его первый раз создаем с нуля) Теперь пишем в него такие настройки:
interface=wlan1
bridge=br0
driver=nl80211
ssid=RUSUA Wi-Fi
country_code=US
hw_mode=g
channel=4
macaddr_acl=0
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_passphrase=пароль
wpa_pairwise=TKIP CCMP
ieee80211n=1
wme_enabled=1
ht_capab=[HT40+]
Теперь многим на заметку расскажу что же оно все значит(сам по крупинкам собирал по этим вашим интернетам):
interface — имя сетевого интерфейса wi-fi в системе; bridge — указываем что вафля у нас в мосте,не сама по себе; driver — обязательно именно nl80211 и ничего другого,иначе не будет работать!; ssid — имя нашей сети,которое будет видно всем соседям; country_code — это по задумкам буржуев должно регулировать мощность излучения…Но мы то с вами знаем)); hw_mode — режим точки доступа. a,b,g; channel — номер радио канала; macaddr_acl — фильтр по МАС адресам. 0 — выключено; wpa — какой из протоколов WPA(1), WPA2(2) или оба(3);wpa_passphrase — пароль на сеть;wpa_pairwise — протокол шифрования пароля. Пишите как у меня);ieee80211n— N-режим 1-вкл, 0-выкл.Если не указать — выкл;wme — wireless multimedia extension); ht_capab — преамбула коротка, или длинная.Сам толком не знаю чо оно)
Далее в /etc/default/hostapd в пункте раскомментируем и допишим вот этот пункт: DAEMON_CONF=»/etc/hostapd/hostapd.conf»
Разрешим пропуск трафика. В файлике /etc/sysctl.conf раскоментируем строку: net.ipv4.ip_forward=1
Но вообще у меня например в файле /etc/network/interfaces в конце дописана строка запуска скриптов при загрузке системы: post-up /etc/nat. И там уже у меня есть команда разрешения форвардинга пакетов, и правила iptables и т.д. Вот пример содержания скрипта /etc/nat(кста обязательно должен иметь аттрибут Исполнимый!):
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i br0 -o eth2 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.1.0/24 -j MASQUERADE
iptables -A FORWARD -m state —state INVALID -j DROP
iptables -A INPUT -m state —state INVALID -j DROP
Тут мы сразу прописываем правила iptables для того,что б наш мост успешно работал с точкой доступа. Имхо удобно и просто.
Про DHCP cервер писать не буду. Для этого отдельная статья. Да и там просто все.
Кстати, столкнулся с тем, что при подключении к точке доступа, ПК производит несколько попыток и отключается. В логах сервера вот типа такого:
Feb 1 00:17:19 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed IEEE 802.11: authenticated
Feb 1 00:17:19 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed IEEE 802.11: associated (aid 1)
Feb 1 00:17:22 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed IEEE 802.11: deauthenticated due to local deauth request
Feb 1 00:17:24 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed IEEE 802.11: authenticated
Feb 1 00:17:24 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed IEEE 802.11: associated (aid 1)
Feb 1 00:17:24 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed WPA: received EAPOL-Key 2/4 Pairwise with unexpected replay counter
Feb 1 00:17:27 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed IEEE 802.11: deauthenticated due to local deauth request
Feb 1 00:17:29 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed IEEE 802.11: authenticated
Feb 1 00:17:29 rusua hostapd: wlan1: STA 1c:65:9d:f9:ef:ed IEEE 802.11: associated (aid 1)
Решение нашел не сразу, но помогло. Вот оно :
ath9k это имя вашего драйвера. Выполним комманду:
modprobe ath9k nohwcrypt=1
и все заработало!
Следует так же упомянуть, что этот ман применим не для всех Wi-Fi адаптеров, т.к. на все чипсеты поддерживают режим АР. Инфу о возможности запуска адаптера в режиме АР нужно смотреть на сайте http://wireless.kernel.org/en/users/Drivers
Согласен. Хорошее замечание) Хотя вроде как процент адаптеров,без поддержки режима АР крайне мал — тем более тут мы юзаем полноценную внутреннюю карту, а не какой нить USB свисток)