Воскресенье, 05.05.2024, 21:35
Admin - IT
Приветствую Вас Гость | RSS
Главная Регистрация Вход
Форма входа

Меню сайта

Категории раздела
Общие [1]

Наш опрос
Оцените мой сайт
Всего ответов: 577

наша галерея

Главная » 2010 » Январь » 31 » Как использовать FreeBSD в качестве Wireless Access Point (wireless wifi freebsd router)
10:10
Как использовать FreeBSD в качестве Wireless Access Point (wireless wifi freebsd router)
From: Сгибнев Михаил <msgibnev(ого-го какая собака)gmail.com>
Date: Mon, 15 Jan 2010 17:02:14 +0000 (UTC)
Subject: Как использовать FreeBSD в качестве Wireless Access Point

Оригинал: http://dreamcatcher.ru/bsd/007_freebsd_ap.html
Первоисточник: How To Set Up A FreeBSD Wireless Access Point

В этом документе описывается, как настроить FreeBSD в качестве точки
доступа беспроводной сети. Данная статья ни в коем случае не заменяет
собой FreeBSD Handbook, а лишь дополняет его.

Для достижения желаемого результата, нам необходимо убедиться в
выполнении следующих условий:

* Установлены hostapd и named (BIND)
* Ядро скомпилировано с поддержкой pf (так же возможно использование ipfw/ipfilter)
* Сконфигурирован NAT и правила пакетной фильтрации
* Установлен isc-dhcp3-server
* Вышеуказанные демоны сконфигурированы и запущены


Аппаратное обеспечение:

* Одна сетевая карта подключается к провайдеру. Это наш внешний
интерфейс, обозначаемый ext_if. В данном примере fxp0 и может
отличаться от сетевой карты, имеющейся у вас.


* Беспроводная карта построена на чипсете Atheros и используется для
предоставления беспроводного доступа третьим устройствам. В данном
примере ath0 и может отличаться от сетевой карты, имеющейся у вас.


* Дополнительная сетевая карта, которая подключена к локальной сети
(int_if)


Тестовая конфигурация доступна по этому адресу.

Начало

Хорошей идеей будет подключить нашу машину к Интернет. Как это
сделать, вы можете прочитать в разделе Network Communication FreeBSD
Handbook.

Для простоты, все действия выполняются с правами пользователя root,
хотя это моветон.

Проверяем наличие BIND

Хотя BIND идет в поставке FreeBSD, неполохо было бы убедиться в его
наличии:

which named


Если вы вдруг получили сообщение named not found, установим его:

sudo pkg_add -r bind9


Проверяем наличие hostapd

Наличие hostapd можно проверить командой:

which hostapd


hostapd идет в соcтаве FreeBSD. Если он вдруг не обнаружен, то,
возможно, у вас установлен минимальный набор сетов и вам придется с
помощью программы установки добавить сеты или обновить систему из
исходных текстов.

Проверяем наличие исходных текстов ядра

Посмотрите наличие каталога исходных текстов с помощью команды:

ls -l /usr/src/sys


Если вы получили сообщение No such file or directory, то обратитесь к
главе Synchronizing Your Source FreeBSD Handbook.

Перекомпилируем ядро

Процесс компиляции ядра с поддержкой pf очень хорошо описан в
FreeBSD Handbook. Приведем выжимки из этого документа.
Перейдем в каталог файлов конфигурации ядра и создадим новую
конфигурацию, базируясь на файле GENERIC:

cd /usr/src/sys/`uname -m`/conf
cp GENERIC CUSTOM


Вы можете отредактировать файл конфигурации по своему усмотрению.
Некоторые данные поопциям ядра можно обнаружить в файле
/usr/src/sys/conf/NOTES. Нам же требуется просто добавить поддержку PF:

echo "device pf
device pflog
device pfsync" >> CUSTOM


Если есть желание более гибко управлять трафиком, то можно добавить
поддержку ALTQ:

options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build


Для сборки и установки ядра, выполним следующие команды:

cd /usr/src
make buildkernel KERNCONF=CUSTOM
make installkernel KERNCONF=CUSTOM


Перезагрузка:

shutdown -r now


Исходные данные для настройки сети

* fxp0 - ext_if - получает адрес по DHCP


* fxp1 - lan_if - статический IP, 192.168.0.1; сеть 192.168.0.0/24;
клиенты получают адреса по DHCP


* ath0 - wifi_if - статический IP, 192.168.1.1; беспроводная сеть
диапазона 192.168.1.0/24; клиенты получают адреса по DHCP


Конфигурируем интерфейсы

Поднимаем внутренний и внешние интерфейсы:

dhclient fxp0
ifconfig fxp1 inet 192.168.0.1 netmask 255.255.255.0


Убедимся в том, что драйвера беспроводного адаптера загружены. Для
карт на базе Atheros, выполните команду:

for d in {if_ath,ath_rate,ath_hal}; do kldload $d; done


Для всех карт, включая Atheros, необходимо убедиться в том, что
загружены вспомогательные модули :

for d in {wlan_wep_load,wlan_tkip_load,wlan_ccmp_load,wlan_xauth_load,wlan_acl_load}; do kldload $d; done


Конфигурируем адрес на интерфейсе:

ifconfig ath0 inet 192.168.1.1 netmask 255.255.255.0 ssid YOURSSID mediaopt hostap


Конфигурируем NAT и правила пакетной фильтрации
Разрешим маршрутизацию пакетов и поднимем pf:

sysctl -w net.inet.ip.forwarding=1
pfctl -e


Создадим файл pf.conf, содержащий правила NAT и простейший набор
правил фильтрации:

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
# This configuration is set for use on a machine that is a router with
# three (3) network cards:
# ext_if - connects to the upstream link (cable/dsl modem, WAN, etc.)
# wifi_if - wireless card for internal network
# (if none present, remove all references to it in this file)
# lan_if - wired card for internal network
# (if none present, remove all references to it in this file)
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#------------------------------------------------------------------------
# macros
#------------------------------------------------------------------------
logopt = "log"
# interfaces
ext_if = "fxp0"
wifi_if = "ath0"
lan_if = "fxp1"
# publically accesible services (transport layer neutral)
pubserv = "{ 22, 443 }"
# internally accessible services (transport layer neutral)
lanserv = "{ 22, 53, 67, 80, 443 }"
# samba ports (transport layer neutral)
samba_ports = "{ 137, 138, 139 }"
# externally permitted inbound icmp types
icmp_types = "echoreq"
# internal network
lan_net = "{ 192.168.0.0/24, 192.168.1.0/24 }"
# hosts granted acces to samba (cifs/smb) shares
smb_net = "{ 192.168.0.0/27, 192.168.1.0/27, 192.168.0.90, 192.168.1.90 }"
# block these networks
table { 0.0.0.0/8, 10.0.0.0/8, 20.20.20.0/24, 127.0.0.0/8, \
169.254.0.0/16, 172.16.0.0/12, 192.0.2.0/24, 192.168.0.0/16, \
224.0.0.0/3, 255.255.255.255 }
#------------------------------------------------------------------------
# options
#------------------------------------------------------------------------
# config
set block-policy return
set loginterface $ext_if
set skip on lo0
# scrub
#scrub all reassemble tcp no-df
#scrub in all fragment reassemble
scrub out all random-id
#------------------------------------------------------------------------
# redirection (and nat, too!)
#------------------------------------------------------------------------
# network address translation
nat on $ext_if from $lan_net to any -> ($ext_if)
#------------------------------------------------------------------------
# firewall policy
#------------------------------------------------------------------------
# restrictive default rules
block all
block return-rst in $logopt on $ext_if proto tcp all
block return-icmp in $logopt on $ext_if proto udp all
block in $logopt on $ext_if proto icmp all
block out $logopt on $ext_if all
# trust localhost
pass in quick on lo0 all
pass out quick on lo0 all
# anti spoofing
block drop in $logopt quick on $ext_if from to any
block drop out $logopt quick on $ext_if from any to
antispoof for { $lan_if, $wifi_if, $ext_if }
# anti fake return-scans
block return-rst out on $ext_if proto tcp all
block return-rst in on $ext_if proto tcp all
block return-icmp out on $ext_if proto udp all
block return-icmp in on $ext_if proto udp all
# toy with script kiddies scanning us
block in $logopt quick proto tcp flags FUP/WEUAPRSF
block in $logopt quick proto tcp flags WEUAPRSF/WEUAPRSF
block in $logopt quick proto tcp flags SRAFU/WEUAPRSF
block in $logopt quick proto tcp flags /WEUAPRSF
block in $logopt quick proto tcp flags SR/SR
block in $logopt quick proto tcp flags SF/SF
# open firewall fully
# warning: insecure. 'nuff said.
#pass in quick all
#pass out quick all
# allow permitted icmp
pass in inet proto icmp all icmp-type $icmp_types keep state
# allow permitted services
pass in on $ext_if inet proto tcp from any to any port $pubserv flags S/SA keep state
pass in on {$lan_if $wifi_if} inet proto {tcp udp} from $lan_net to any port $lanserv keep state
pass in on {$lan_if $wifi_if} inet proto {tcp udp} from $smb_net to any port $samba_ports keep state
# permit access between LAN hosts
pass in from $lan_net to $lan_net keep state
pass out from $lan_net to $lan_net keep state
# permit full outbound access
# warning: potentially insecure. you may wish to lock down outbound access.
pass out from any to any keep state


Загружаем созданную конфигурацию командой:

pfctl -Fa -f /etc/pf.conf


Устанавливаем и конфигурируем сервер ISC DHCP Для раздачи клиентам
адресов, нам необходим DHCP:

pkg_add -r isc-dhcp3-server


Редактируем файл конфигурации /usr/local/etc/dhcpd.conf:

###
### GLOBAL SETTINGS
###
ddns-update-style none;
always-broadcast on;
default-lease-time 7200;
max-lease-time 7200;
authoritative;
option domain-name-servers 192.168.1.1;
option domain-name "localnet.localdomain";
option netbios-name-servers 192.168.1.1;
###
### WIRED LOCAL AREA NETWORK
###
subnet 192.168.0.0 netmask 255.255.255.0 {
#
# NOTES:
# (1) allocation of endings 100-199 by DHCP is
# inteded for clients that are not specified
# later in this file.
# (2) allocation is done in increments of 10
# and this is done intentionally.
#
range 192.168.0.100 192.168.0.199;
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
}
###
### WIRELESS NETWORK
###
subnet 192.168.1.0 netmask 255.255.255.0 {
# NOTE: See: wired->range.notes
range 192.168.1.100 192.168.1.199;
option broadcast-address 192.168.1.255;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
}


Конфигурируем hostapd Редактируем /etc/hostapd.conf :

interface=ath0
driver=bsd
logger_syslog=-1
logger_syslog_level=0
logger_stdout=-1
logger_stdout_level=0
debug=3
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
#### IEEE 802.11 related config ####
ssid=YOURSSID
macaddr_acl=0
auth_algs=1
#### IEEE 802.1X related config ####
ieee8021x=0
#### WPA/IEEE 802.11i config #####
wpa=1
wpa_passphrase=ENTER_YOUR_PASSPHRASE_HERE
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP TKIP


Вносим изменения в rc.conf: Чтобы настройки сетевых интерфейсов не
пришлось вбивать заново после перезагрузки, внесем их в /etc/rc.conf:

### GENERAL SETTINGS
gateway_enable="YES"
hostname="wifiap"
### CONFIGURATION FOR EXTERNAL INTERFACE (UPSTREAM LINK)
### example: link to cable/dsl modem
ifconfig_fxp0="DHCP"
### CONFIGURATION FOR INTERNAL WIRED NETWORK
ifconfig_fxp1="inet 192.168.0.1 netmask 255.255.255.0"
### CONFIGURATION FOR INTERNAL WIRELESS NETWORK
ifconfig_ath0="inet 192.168.1.1 netmask 255.255.255.0 ssid YOURSSID mediaopt hostap"
### CONFIGURATION FOR PACKET FILTER
### requires kernel recompile, see:
### http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-pf.html
pf_enable="YES" # Set to YES to enable packet filter (pf)
pf_rules="/etc/pf.conf" # rules definition file for pf
pf_program="/sbin/pfctl" # where the pfctl program lives
pf_flags="" # additional flags for pfctl
pflog_enable="YES" # Set to YES to enable packet filter logging
pflog_logfile="/var/log/pflog" # where pflogd should store the logfile
### DAEMONS FOR LAN
hostapd_enable="YES" # wireless services (clients use wpa_supplicant)
named_enable="YES" # dns for clients
dhcpd_enable="YES" # dhcp configure clients
sshd_enable="YES" # so we can remotely access this box


Для автоматической загрузки модулем, внесем соответствующие строки в
/boot/loader.conf:

wlan_wep_load="YES"
wlan_tkip_load="YES"
wlan_ccmp_load="YES"
wlan_xauth_load="YES"
wlan_acl_load="YES"


Демоны!
Демоны будут стартовать после перезагрузки. Если ребутиться вам

неохота, то:

/etc/rc.d/pflog start
/etc/rc.d/named start
/etc/rc.d/dhcpd start
/etc/rc.d/hostapd start


Ссылки по теме:
How To Set up a Wi-Fi Hotspot
Wireless HotSpot HowTo
Просмотров: 729 | Добавил: Maximal | Теги: HiTech | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Admin-IT.com.ua

Халявка

Получить WMR-бонус на свой кошелек!

ДЕПОЗИТ

Поиск

Календарь
«  Январь 2010  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031

Архив записей

Друзья сайта

Copyright Maximal © 2009 - 2024 Бесплатный конструктор сайтов - uCoz


Каталог webplus.info каталог сайтів каталог сайтів Украина онлайн