Первый раз после выключения аутентификации и повторного включения роутер мой продолжил работать как нужно, но через несколько месяцев (возможно после кратковременного отключения электричества?) проблема повторилась. На этот раз кратковременное отключение аутентификации ситуацию не исправляло. Без аутентификации — Wi-Fi работает, с аутентификацией — нет.
В сети было найдено несколько обсуждений описанной проблемы, но ответ содержал лишь один тред (да еще и на второй странице) на форуме DD-WRT. Проблема в том, что логи исчерпали место на устройстве!
Решение просто как 2x2: Веб-интерфейс → Status → WAN → Data Administration → Delete.
Расскажу о двух фичах, которые можно реализовать на роутере с прошивкой DD-WRT на примере роутера Linksys WRT54GL.
1) Файловая система JFFS.
На роутере можно без труда организовать небольшое энергонезависимое хранилище файлов.
Для этого в веб-интерфейсе включаем поддержку jffs (по туториолу из официального вики dd-wrt):
1. Откройте вкладку "Administration".
2. Перейдите к секции "JFFS2 Support".
3. Кликаем "Enable JFFS".
4. Затем жмём "Save".
5. Ждём несколько секунд и жмём "Apply".
6. Опять ждём. Идём обратно к опции "Enable JFFS", кликаем "Clean JFFS".
7. Не кликая "Save", жмём вместо этого "Apply".
Теперь если мы приконнектимся к роутеру по ssh команда "df -h" расскажет нам о наличие новой файловой системы, смонтированной в катаалоге /jffs/, и её размере (размер очень сильно зависит от типа вашей прошивки, для получения хоть сколько-нибудь полезного свободного пространства для jffs рекомендуется установить mini-версию dd-wrt).
2) Индикация активности wifi по лампе на корпусе роутера.
Теперь используем возможности jffs - разместим на ней скрипт (с того же вики dd-wrt), который заставляет гореть лампу янтарным светом при подключенных wifi-клиентах и мигать белым при трансфере данных через WLAN.
Для установки скрипта:
1. Коннектимся по ssh.
2. Переходим в каталог /jffs/ и создаем директорию bin:
# cd /jffs/
# mkdir ./bin
3. Как видно /jffs/bin уже прописан в переменной поиска команд PATH:
# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin
4. Создаем файл скрипта (# vi ./wlan.sh) со следующим содержанием:
#!/bin/sh
I=`nvram get wl0_ifname`
while sleep 1; do
if [ "`wl assoclist`" != "" ]; then
XFER=`ifconfig $I|grep bytes`
if [ "$XFER" != "$PXFER" ]; then
LED='gpio disable 3 ; gpio disable 2'
PXFER=$XFER
else
LED='gpio disable 3 ; gpio enable 2'
fi
else
LED='gpio enable 3 ; gpio enable 2'
fi
if [ "$LED" != "$PLED" ]; then
eval $LED
PLED=$LED
fi
done
5. Делаем скрипт исполняемым:
# chmod +x ./wlan.sh
Готово!
Скрипт теперь можно запускать командой wlan.sh или прописать в автозагрузку.
Расскажу как я справился с довольно типовой задачей
настройки роутера Linksys WRT54GL.
Требовался выход в интернет посредством VPN и одновременная работа локальной сети.
Если у вас есть достаточный опыт в Linux и нет страха перед командной строкой, то лучшим решением наверно будет воспользоваться прошивкой OpenWRT.
Это описание же расчитанно на неискушенного пользователя, и хоть
в своих экспериментах я активно пользовался консолью роутера (через ssh), данное описание позволяет настроить VPN используя исключительно web-интерфейс dd-wrt.
1) Ставим прошивку dd-wrt.
(Мне достался уже прошитый девайс =) , но в сети полно инфы о том, как прошить роутер, ничего сложного в этом нет. Возможно советы подойдут и для стандартной прошивки, я не проверял).
Испытания проводились на версии Firmware: DD-WRT v23.
Далее будем считать, что вы уже настроили локальную сеть,
т.е. вбили свой локальный ip/dns, либо клонировали mac-адрес и провайдер сам выдал все настройки.
2) В веб-интерфейсе открываем вкладку Administration -> Services, в разделе "pptp Client" ставим галочку "Enable". Жмём "Save settings".
3) В обновившемся поле "pptp Client" вбивает свои имя, пароль
и адрес vpn-сервера.
В полях "Remote Subnet" и "Remote Subnet Mask" оставляем нули,
если хотим через vpn лазить по всему интернету.
4) Идём в Setup -> Advanced routing
Вбиваем пути для локалки (обычно выдаются провайдером).
Главное, чтобы был путь до vpn-сервера, ну и до dns-сервера.
Базовые настройки на этом закончены.
5) Однако vpn может и не подняться из-за неподходящих для
вашего провайдера настроек, которые идут с dd-wrt по умолчанию.
Остановимся подробней на этом нетривиальном случае.
При включении роутера конфигурационный файл с опциями vpn
находится в файле /tmp/pptpd_client/options.vpn.
Соответственно этот временный файл нам и нужно поправить.
В моем случае напрмер нужно было отключить шифрование,
удалив соответствующую строку в конфиге:
"mppe required,no40,no56,stateless".
Это можно сделать редактором sed после включения роутера
с помощью команды:
cd /tmp/pptpd_client/; cp options.vpn bak; cat bak|sed /mppe/d > options.vpn; rm bak
Этой командой мы перешли в директорию с конфигурационными файлами; скопировали файл настроек в файл bak;
отфильтровали полученный файл sed'ом >
записали результат вместо старого файла настроек;
удалили временный файл bak.
Стоит конечно прописать это в автозагрузку с небольшой поправкой:
т.к. временный файл создается не сразу, следует поставить небольшую
задержку (sleep), скажем в секунд 50.
Для этого открываем вкладку Administration -> Diagnostics,
жмём Run, вписываем в текстовом поле команду:
(sleep 50; cd /tmp/pptpd_client/; cp options.vpn bak;
cat bak|sed /mppe/d > options.vpn;rm bak)&
(одной строкой) и жмём "Save Startup".
Данный способ изменения настроек может показаться не самым удобным, однако нельзя не отметить его гибкость.
Разобравшись как работает редактор sed можно варьировать настройки файла options.vpn как угодно.
6) Теперь можем перегрузить девайс:
на вкладке Administration жмём кнопку "Reboot Router"
После перезагрузки ждём отведённые нами 50 секунд и vpn-соединение должно работать.