OpenWrt - это дистибутив Linux для Linksys WRT54G.
Мы будем использовать OpenWrt в качестве замены к оригинальной
firmware Linksys, которая прибывает заранееустановленной с
маршрутизатором.
ChilliSpot - это контролер доступа к беспроводным сетям. Он
используется для идентификации пользователей беспроводных сетей.
Поддерживает web based авторизацию для узлов беспроводного доступа .
Chilli демон играет первоначальную роль в полной установке узла
беспроводного доступа. Он работает на маршрутизаторе и обеспечивает
доступ пользователей к беспроводной точке доступа.
FreeRadius - это сервер, который управляет идентификацией удаленного
пользователя и хранением аккаунтов.
Mysql - это opensource сервер базы данных.
Вся пользовательская база данных, все аккаунты хранятся в базе данных
Mysql.
Используйте это howto на ваш собственный риск...!!!
Я следовал по тем шагами которые продемонстрированы здесь. У меня все
работало.
Вам возможно потребуются специальные настройку согласно вашей
потребности.
Установка маршрутизатора Linksys
Я использовал маршрутизатор Linksys WRT54GS для этой установки. Для
других поддерживаемых маршрутизаторов, посмотрите:
http://wiki.openwrt.org/OpenWrtDocs/Installing
Нам нужно установить OpenWrt на маршрутизаторе. Это сделано путем
сброса заранее установленной firmware Linksys с openwrt .
Вам, возможно, нужно сделать downgrade firmware linksys для разрешения
опции boot _ wait .
1. Загрузит firmware можно отсюда
wget ftp://ftp.linksys.com/pub/network/WRT54GS_3.37.2_US_code.zip
на свой компьютер.
2. Сетевой кабель должен быть подключен к PORT 1 на маршрутизаторе.
3. Заходим в браузер, и указываем адрес панели администрирования
LinkSys, обычно
http://192.168.1.1, перейдите к Admin Page -> Upgrade firmware link
4. Загрузим скаченную выше firmware на маршрутизатор.
5. Как только Вы успешно произвели downgrade firmware, перейдите к
Administration -> Diagnostics -> Ping test
6. Введите точно каждую упомянутую ниже строку в область "адреса IP",
одна строка за раз, нажимая кнопку Ping после каждой строки.
Основная задача использования клиента tftp , чтобы переслать новую
firmware на ваш маршрутизатор.
1. Отключите питание от вашего маршрутизатора
2. Запустите tftp клиент
Укажите адрес маршрутизатора (обычно 192.168.1.1)
Установить mode в octet
Укажите tftp клиенту повторно отсылать файл, пока он не будет
закачен
Отправьте файл
3. Включите маршрутизатор, при этом tftp клиент должен работать и
постоянно пробовать подключиться.
4. Как только tftp client получит ack от bootloader , начнется
отправка firmware
Пожалуйста будьте терпеливы, повторная перепрошивка происходит после
того как firmware переслана на маршрутизатор. Не отключайте
маршрутизатор, он автоматически перезапустится с новой firmware.
Типичная tftp сессия
tftp 192.168.1.1s
tftp> binary
tftp> trace
Packet tracing on.
tftp> put openwrt-wrt54gs-jffs2.bin
На системе Windows , можно сделать так
tftp -i 192.168.1.1 PUT openwrt-wrt54gs-jffs2.bin
из командной строки.
На маршрутизаторах с DMZ индикатором, OpenWrt зажжет DMZ индикатор при
загрузке, после загрузки индикатор погаснет. Иногда автоматический
перезапуск не работает, так что вы сможете безопасно перезапустить
маршрутизатор через 5 минут.
Если все вплоть до этого шага идет отлично, мы готовы использовать
маршрутизатор с новым OpenWrt .
Использование маршрутизатора OpenWrt.
Сейчас Вы можете подключиться к маршрутизатору подобно подключению к
Linux. Но первое что надо сделать после того, как маршрутизатор
перезапущен - установить пароль для ` root ' пользователя.
В этот момент вы можете подключится через telnet к маршрутизатору.
Если вы установили пароль для ` root ', то при следующем перезапуске
вы сможете подключится к маршрутизатору только через ssh .
IP Адрес заданный по умолчанию на маршрутизаторе 192.168.1.1, ваша
машина принадлежит к сетевым диапазонам 192.168.1.*.
# telnet 192.168.1.1
Проверьте что опция boot _ wait включена. boot _ wait должен быть
включен для обновления или восстановления плохой инсталляции.
# nvram get boot_wait
boot _ wait = on
Устанавливаем пароль для пользователя `root'
# passwd
Если вы получили любую ошибку при установке пароля, запустите
следующую команду.
# firstboot
Или маршрутизатору требуется перезагрузка.
# reboot
Сейчас вы можете подключится к маршрутизатору через ssh протокол, и
приступить к его конфигурированию.
# ssh root @192.168.1.1
Мы будем использовать маршрутизатор как <<Точку доступа>>. Запустите
следующие команды на маршрутизаторе.
Эти команды устанавливают параметры сети маршрутизатора, для доступа к
Internet ( WAN ).
# nvram set wan_ifname=vlan1
# nvram set wan_proto=static
# nvram set wan_ipaddr=xxx.xxx.xxx.xxx
# nvram set wan_netmask=255.255.255.0
# nvram set wan_gateway=192.168.1.1
# nvram set wan_dns=192.168.1.1
# nvram commit
Если ваш маршрутизатор получает IP Адрес через DHCP , вам нужно
выполнить только это.
# nvram set wan_ifname=vlan1
# nvram set wan_proto=dhcp
# nvram commit
Для PPPoE Internet подключения
# nvram set wan_ifname=ppp0
# nvram set wan_proto=pppoe
# nvram set ppp_mtu=1492
# nvram set pppoe_ifname=vlan1
# nvram set ppp_username=your_isp_login
# nvram set ppp_passwd=your_isp_password
# nvram commit
Сейчас вам необходимо перезагрузить маршрутизатор.
# cd /tmp
# ipkg install kmod-tun_2.4.30-1_mipsel.ipk
Редактируем /etc/modules и добавим "tun" в него.
Это загружает модуль tun , после каждой перезагрузки маршрутизатора.
На маршрутизаторе вы можете использовать редактор vi .
OpenWrt поставляется со следующими сетевыми интерфейсами:
* eth0: LAN Switch. Is used as the connection point for the VLANs.
Do never use this port directly.
* eth1: Wireless Interface
* vlan1: Virtual LAN: Internet
* vlan0: Virutal LAN: Port 1 to 4
* br0: Bridge between vlan0 and eth1.
Мы имеем сеть не доступную через радио и наоборот, удалим интерфейс
eth1 с моста.
Мне пришлось отредактировать скрипт S 45 firewall и изменить
WANIF=$(nvram_get wan_ifname)
на
WANIF=$(nvram get wan_ifname)
Chilli сам заботится о назначении IP адресов для беспроводных
клиентов. Теперь мы можем безопасно удалить dnsmasq сервис openwrt dns
и dhcp .
# rm /etc/init.d/S#dnsmasq
Замените # в S#dnsmasq подходящим числом.
Сконфигурируем Chilli для загрузки при старте маршрутизатора.
Отредактируем / etc / init . d / S 50 services и добавим эти строки в
конец.
sleep 5
/usr/sbin/chilli
Конфигурационный файл chilli daemon можно найти /etc/chilli.conf на
маршрутизаторе. Сейчас перед всеми дальнейшими конфигурациями chilli ,
мы будем инсталлировать и конфигурировать UAM и FreeRadius сервер.
Мы будем использовать Universal Access Method ( UAM ) для авторизации
и входа в беспроводную точку доступа. С UAM беспроводные клиенты
переадресовываются на страницу входа в систему что бы быть
авторизированным при первом запросе Internet или Extranet .
Я предполагаю что у Вас установлен и сконфигурирован Apache httpd
сервер, для обработки CGI страниц. UAM метод использует скрипт
hotspotlogin.cgi , который можно найти в doc/hotspotlogin.cgi в
директории с исходниками chillispot .
Положите cgi -сценарий в директорию где apache исполняет cgi
-сценарии, по умолчанию используйте /var/www/cgi-bin/ на вашем
сервере.
Откройте для редактирования hotspotlogin . cgi . Разкомментируйте
следующие строки
$uamsecret = "ht2eb8ej6s4et3rg1ulp"; Change this to your liking.
$ userpassword =1;
Сценарий hotspotlogin.cgi требует https( SSL ). Вам, возможно, нужно
сконфигурировать SSL сертификаты.
FreeRadius
Мы будем иметь FreeRadius сервер, сконфигурированный с поддержкой
MySql для авторизации и хранения аккаунтов пользователей.
Если компилировать из исходных кодов
# wget ftp://ftp.freeradius.org/pub/radius/freeradius-1.0.5.tar.gz
# tar zxvf freeradius-1.0.5.tar.gz
# cd freeradius-1.0.5
# ./ configure --with-mysql
# make && make install
Конфигурирование FreeRadius
Мы подготовим базу данных для использования с freeradius .
# mysql -u root -p radius < /usr/share/doc/freeradius-x.x.x/db_mysql.sql
# mysql -u root -p
> GRANT select,insert,update,delete,create,drop ON radius.*
TO `radiususer'@'localhost' IDENTIFIED BY 'radiuspasswd';
> quit
редактируем /etc/raddb/radius.conf или /usr/local/etc/raddb/radius.conf
В итоге ваш radiusd.conf должен выглядеть приблизительно так :
Сейчас Вы можете обратиться к dailup_admin по следующему URL :
http://yourwebsever/dialupadmin
Сейчас мы можем продвинуться вперед по конфигурированию chilli на
маршрутизаторе. Файл конфигурации chilli может быть найден в
/etc/chilli.conf на маршрутизаторе. Конфигурационные директивы о
которых нужно изменить.
#dns server that will be specified to the clients machines
dns1 172.16.0.5
dns2 172.16.0.6
#domain name that will be suggested to the clients
domain your.hotspot.com
#radius server IP
radiusserver1 192.168.0.100
radiusserver2 192.168.0.101
#secret shared between the router and the radius servers
#on the radius server it in the file clients.conf
radiussecret somesecret123
#Location ID of the router that will be sent to the radius for
#accounting purpose
radiuslocationi isocc=in,cc=91,ac=400078,network=HOME_Nework
#Location name
radiuslocationname HOME,magnet
dhcpif eth1
#DHCP lease period in seconds
lease 900
#UAM paramter. URL of web server handling authentication.
Uamserver https://youruamserver/cgi-bin/hotspotlogin.cgi
#secret shared between chilli and authentication web server.
#Specify same as mentioned in the hotspotlogin.cgi
uamsecret ht2eb8ej6s4et3rg1ulp
#Domains that users can browse with out authentication
uamallowed www.chillispot.org,www.openwrt.org
Есть другие параметры, которые могут быть изменены согласно вашему
предпочтению.
Тестирование полной установки
Вся основная конфигурация сделана, и готова к проверке .
Укажите браузеру адрес WEB интерфейса dialup_admin. Создайте аккаунт
тестового пользователя.
Будут работать только имя пользователя и пароль, остальные поля можете
оставить пустыми .
Запустите сервер chilli на маршрутизаторе в отладочном режиме.
# /usr/sbin/chilli - f - d
Также запустите radius на сервере, если он не запущен. Использование -
X , чтобы видеть отладочных данные.
# /usr/sbin/radiusd - X
Сейчас с вашей беспроводной клиентской машины, попробуйте выйти в
Интернет.
Ваш браузер должен перейти к странице hotspotlogin.cgi.
Используйте имя/пароль пользователя тестового аккаунта, который вы
создали для входа в систему.