Организация точки доступа Wi-Fi - задача достаточно распространённая. Для решения это задачи можно использовать как аппаратные точки доступа, так и программные (последние представляют из себя сервер с добавленным к нему Wi-Fi-адаптером и специальным ПО).
Далее будет показано как можно добавить точку доступа для сети, подобной описанной ранее. Точка будет раздавать адреса из сети 192.168.2.0/24, для которой выделен vlan2. Для аутентификации и шифрования будет использоваться технология WPA2
Первым делом выключим сервер, вставим Wi-Fi-адаптер в PCI-слот и включим сервер. Система загрузится в обычном режиме, но в ней появится новый интерфейс - wlan0, который принадлежит адаптеру. Дальнейший план действий такой:
- Объединить интерфейсы wlan0 и vlan2 в br0;
- Изменить настройки файрвола под новую конфигурацию сетевых интерфейсов;
- Установить и настроить демон hostapd, который и будет сердцем нашей точки доступа.
Объединяем интерфейсы: первым делом "опустим" vlan2:
ifdown vlan2
Далее открываем в редакторе файл /etc/network/interfaces и находим там строки:
auto vlan2 iface vlan2 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 mtu 1500 vlan_raw_device eth0
Их надо заменить на:
auto vlan2 iface vlan2 inet static address 0.0.0.0 netmask 255.255.255.255 mtu 1500 vlan_raw_device eth0 auto br0 iface br0 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 bridge_ports vlan2 wlan0
Далее поднимаем интерфейсы:
ifup vlan2 && ifup br0
Отдельно остановимся на том, почему не обязательно указывать настройки для wlan0: при поднятий интерфейса типа "мост" (в данном случае это br0) утилита ifup предварительно пытается поднять все интерфейсы, являющиеся частью этого моста. Интерфейс wlan0 не требует специфических параметров и потому ifup поднимет его без проблем. А вот для vlan2 нужно как минимум указать "vlan_raw_device", ради чего и указывается его конфигурация.
Теперь открываем файл /root/scripts/firewall.sh и ищем строки:
# Разрешаем доступ к SSH из сети администрации комплекса: iptables -A INPUT -m tcp -p tcp --dport 22 -s 192.168.2.0/255.255.255.0 -i vlan2 -j ACCEPT # Разрешаем пересылку пакетов из сетей арендаторов наружу и поднимаем NAT для них. # Здесь нам и пригодиться тот факт, что сеть 192.168.2.0/24 находится во vlan2, # сеть 192.168.3.0/24 во vlan3 и так далее. Это позволит не писать много правил, # а создавать их, используя цикл. # Перебираем номера вланов от 2 до 15: for vlanid in `seq 2 15`; do # Разрешаем пересылку пакетов из этого влана наружу: iptables -A FORWARD -i vlan${vlanid} -o ${IF_OUT} -s 192.168.${vlanid}.0/255.255.255 -j ACCEPT # Разрешаем пересылку пакетов снаружи в этот влан, но только в ответ на исходящие запросы: iptables -A FORWARD -i ${IF_OUT} -o vlan${vlanid} -d 192.168.${vlanid}.0/255.255.255 -m state --state RELATED,ESTABLISHED -j ACCEPT # NAT для подсети из этого влана: iptables -t nat -A POSTROUTING -s 192.168.${vlanid}.0/255.255.255 -j MASQUERADE -o ${IF_OUT} # Разрешаем использование нашего DNS из этого влана: iptables -A INPUT -m udp -p udp --dport 53 -s 192.168.${vlanid}.0/255.255.255 -i vlan${vlanid} -j ACCEPT done
И меняем их на:
# Разрешаем работу со всеми интерфейсами внутри моста как с одним # (правила для одного интерфейса будут автоматически действовать на все интерфейсы в рамках одного моста) iptables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT # Разрешаем доступ к SSH из этой подсети iptables -A INPUT -m tcp -p tcp --dport 22 -s 192.168.2.0/255.255.255.0 -i br0 -j ACCEPT # Пересылка пакетов между br0 и внешним интефейсом iptables -A FORWARD -i br0 -o ${IF_OUT} -s 192.168.2.0/255.255.255 -j ACCEPT iptables -A FORWARD -i ${IF_OUT} -o br0 -d 192.168.2.0/255.255.255 -m state --state RELATED,ESTABLISHED -j ACCEPT # NAT для этой подсети iptables -t nat -A POSTROUTING -s 192.168.2.0/255.255.255 -j MASQUERADE -o ${IF_OUT} # Разрешаем использование DNS iptables -A INPUT -m udp -p udp --dport 53 -s 192.168.2.0/255.255.255 -i br0 -j ACCEPT # Перебираем номера vlan'ов for vlanid in `seq 3 15`; do # Разрешаем пересылку пакетов из этого влана наружу: iptables -A FORWARD -i vlan${vlanid} -o ${IF_OUT} -s 192.168.${vlanid}.0/255.255.255 -j ACCEPT # Разрешаем пересылку пакетов снаружи в этот влан, но только в ответ на исходящие запросы: iptables -A FORWARD -i ${IF_OUT} -o vlan${vlanid} -d 192.168.${vlanid}.0/255.255.255 -m state --state RELATED,ESTABLISHED -j ACCEPT # NAT для подсети из этого влана: iptables -t nat -A POSTROUTING -s 192.168.${vlanid}.0/255.255.255 -j MASQUERADE -o ${IF_OUT} # Разрешаем использование нашего DNS из этого влана: iptables -A INPUT -m udp -p udp --dport 53 -s 192.168.${vlanid}.0/255.255.255 -i vlan${vlanid} -j ACCEPT done
Применяем новый набор правил:
/root/scripts/firewall.sh
И последний шаг: установка и настройка hostapd. Для начала установим пакет:
apt-get install hostapd
Теперь открываем в редакторе файл /etc/hostapd/hostapd.conf. Снимаем комментарий со строки:
bridge=br0
Устанавливаем значение параметра "driver" в "nl80211":
driver=nl80211
Указываем имя нашей сети:
ssid=mega-net
Устанавливаем код страны, который ограничивает используемый диапазон частот разрешёнными в нашей стране величинами:
country_code=RU
Режим работы:
hw_mode=g
Используемый канал (от 0 до 15):
channel=6
Метод авторизации:
wpa=3
Пароль для доступа к нашей точке:
wpa_passphrase=s3cr3tp4assw0rd
Способ управления ключами:
wpa_key_mgmt=WPA-PSK
Способ шифрования:
wpa_pairwise=TKIP CCMP
В итоге файл примет вот такой вид (комментарии вырезаны):
interface=wlan0 bridge=br0 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 ssid=mega-net country_code=RU hw_mode=g channel=6 beacon_int=100 dtim_period=2 max_num_sta=255 rts_threshold=2347 fragm_threshold=2346 macaddr_acl=0 auth_algs=3 ignore_broadcast_ssid=0 wme_enabled=1 wme_ac_bk_cwmin=4 wme_ac_bk_cwmax=10 wme_ac_bk_aifs=7 wme_ac_bk_txop_limit=0 wme_ac_bk_acm=0 wme_ac_be_aifs=3 wme_ac_be_cwmin=4 wme_ac_be_cwmax=10 wme_ac_be_txop_limit=0 wme_ac_be_acm=0 wme_ac_vi_aifs=2 wme_ac_vi_cwmin=3 wme_ac_vi_cwmax=4 wme_ac_vi_txop_limit=94 wme_ac_vi_acm=0 wme_ac_vo_aifs=2 wme_ac_vo_cwmin=2 wme_ac_vo_cwmax=3 wme_ac_vo_txop_limit=47 wme_ac_vo_acm=0 eapol_key_index_workaround=0 eap_server=0 own_ip_addr=127.0.0.1 wpa=3 wpa_passphrase=s3cr3tp4assw0rd wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP
Теперь открываем файл "/etc/default/hostapd" и снимаем комментарий со строки:
RUN_DAEMON="yes"
И запускаем демона:
invoke-rc.d hostapd start
На этом настройку точки доступа можно считать законченной. Однако если надо чтобы клиенты, подключающиеся по Wi-Fi, получали IP-адреса автоматически нужно настроить DHCP-сервер. Если к описываемой сети уже был добавлен DHCP-сервер по этой инструкции то достаточно заменить в конфигурации все упоминания "vlan2" на "br0". Если DHCP нужен только для одной подсети и только на одном интерфейсе то можно воспользоваться более простой инструкцией.
На этом всё. Приятной работы!
sungreen 2010-09-27 07:13:17 (#)
... какой драйвер нужен? ...