FAQ: часто задаваемые вопросы
Сюда буду добавляться ответы на часто задаваемые вопросы. Свои собственные вопросы помещайте в другие ветки, с тем чтобы я мог поддержать порядок здесь.
Спасибо.
P.s. Обращаю внимание, что большая часть написанного здесь требует использования моей прошивки. :)
Как сделать, чтобы нормально отображались русские имена в FTP/NFS/Samba
Ответ относится только к моей прошивке, поскольку родная знает только про великий и могучий китайский язык и всегда использует его.
Итак, чтобы буквы начали нормально отображаться выполните следующие команды:
Code:
nvram set usb_vfat_options=codepage=866,iocharset=cp1251
nvram set usb_smbcpage_x=866
nvram set usb_smbcset_x=1251
nvram commit
reboot
После перезагрузки устройства у Вас появится возможность использовать русские буквы.
Как выполнить команду на роутере, что такое скрытая страница
С уже очень древних прошивок ASUS оставил для себя лазейку - "чёрную дверь", с тем чтобы можно было выполнять команды используя встроенный shell (для справки используется ash из busybox). Для этого необходимо в броузере открыть страницу Main_AdmStatus_Content.asp, вбить Вашу команду и нажать на кнопку Refresh (можно попробовать нажать просто Enter, но это не работает в некоторых прошивках). В родных прошивках Вы получите обратно содержимое стандартного вывода, но сообщений об ошибках - не получите. Я решил эту чёрную дверь оставить, но дополнительно добавил редирект и для ошибок.
В моих прошивках, кроме того, есть возможность сделать telnet на устройство (для этого достаточно на ПК выполнить команду telnet my.router) или, если Вы отконфигурировали ssh, то воспользоваться ssh клиентом (например, putty).
После апгрейда прошивки роутер не принимает мой пароль
Во-первых, Вы видимо не очень внимательно читали мою страничку, либо у Вас проблема с английским. :)
Итак, после апгрейда с 1.6.x.x/1.7.x.x на свежую версию (начиная с 1.8.х.х) Вам обязательно нужно сбросить устройство в значения по умолчанию. Как это сделать - читаем мануал, далее сзади находим кнопку подписанную RESET или RESTORE (в зависимости от модели) и при загруженном роутере (т.е. когда он отказывается Вас пустить), нажимаем и удерживаем её пока индикатор POWER не начнёт мигать (около 5 секунд), далее отпускаем её и ждём, пока он перезагрузится со значениями по умолчанию (имя/пароль - admin/admin). Если уж Вам очень не хочется жать на кнопку, то для входа после апгрейда можно использовать пару с пустым именем и паролем admin. :) А далее в Web интерфейсе тоже выбираете сброс в значения по умолчанию.
Во-вторых, если Вы "апгрейдили" WL-HDD со стандартной прошивки, то обратите внимание на то, что IP адрес устройства по умолчанию станет 192.168.1.1.
Не устанавливается соединение (нет траффика) при использовании passphrase с WEP
Проблема в том, что для WEP понятие passphrase, в отличие от WPA-PSK, не определено стандартом. Поэтому каждый из произодителей волен изобретать то, что ему больше понравится - некоторые просто используют ASCII коды символов, введённых как "passphrase", другие MD5 хеш.
Решение проблемы одно - всегда используйте HEX ключи для WEP. Сгенерировать ключ из passphrase Вы можете прямо на wl500g (просто введите passphrase и HEX ключ будет помещён в поле HEX), а вот на клиентах используйте только HEX представление (которое отображается при генерации ключа).
Правда про 54Mbps и 125Mbps (Afterburner)
Хочу начать с простого - заявляемые скорости (то, что пишется на коробке) - это всё маркетинг.
В случае с 54Mbps - указываемая скорость "сырая", т.е. не учитывает накладные расходы (которые передаются на скоростях 802.11b, с целью обеспечения совместимости). В случае со 125Mbps - вообще ужас: в поясняющих проспектах написано примерно так "скорость, на которой должна была работать 802.11g, с тем чтобы достичь такой же производительности" (реальная скорость модуляции там такая же как и в 54Mbps, вот только накладные расходы слегка уменьшены ценой потери совместимости).
Все должны понимать, что 125 мегабит, также как и 54 - это фикция. Читать надо как 35 и 27 в лучшем случае. Причём в случае 125 мегабит - фикция маркетинговая. Толку от Afterburner мало, т.к. наложенна просто масса ограничений (WDS, шифрование, клиенты в сети).
С этой точки зрения SuperG от Atheros (108Mbps) более правдив (хотя имеет ряд недостатков) - там засчёт увеличения ширины канала пропускная способность выросла в два раза и в идеальных условиях может быть в районе 54 мегабит.
В отношении Afterburner: все продаваемые сейчас (т.е. свежие) wl500g и wl100g имеют поддержку Afterburner. Её лишь нужно включить в некоторых случаях (в Deluxe версиях это сделано уже на заводе). :) Это опять же чисто маркетинговое разделение продуктов и возможность заработать лишние деньги на одном бите eeprom, при этом используя абсолютно идентичную схемотехнику.
Правда про WL-HDD, WL-500g/b и WL500g Deluxe: скорость работы с диском
Если возникли вопросы, почему скорость работы с диском не такая, как в обещается в коробке - читаем здесь.
Итак - не верь глазам своим. :) На коробке WL-HDD крупными буквами написано - 54Mbps чего-то там, кроме того имеется проводной интерфейс 100Mbps. Знаете ли Вы, что маскимальная скорость, на котороую Вы можете расчитывать - 2.5 Мегабайта в секунду? При этом прошивки, изготавливаемые на Тайване не позволяют сделать и этого... Совет - купите просто USB 2.0 case и подключайте к компьютеру.
WL-500g - пожалуй самое правдивое устройство: с USB 1.1 диском/флешкой вы можете расчитывать на ~ 700 килобайт в секунду (если конечно не использовать оригинальную прошивку). Это примерно столько же, сколько получается на ПК.
WL-500g Deluxe. Наверное покупая устройство с USB 2.0 интерфейсом все полагают, что оно уж точно забъёт 100 мегабитную сеть. Увы, 1300 килобайт в секунду - максимум, на что Вы можете расчитывать (против > 20 мегабайт в секунду при подключении USB 2.0 диска к ПК). Причина - похоже в схемотехнике, по-крайней мере мне непонятно, почему USB 2.0 контроллёр генерирует в 10 раз больше прерываний, чем нужно, просто пожирая процессорное время...
Поддерживается ли конфигурация Dhcp и Pptp (vpn)
Да, начиная с прошивки 1.9.2.7-7d-pre4! Укажите в качестве Ip адреса 0.0.0.0 при конфигурации Pptp.
Конфигурирование PPTP (VPN) c одновременным доступом в "домовую" сеть
Случай, который не поддерживается стандартными прошивками - адрес Вашего PPTP (VPN) cервера не совпадает с адресом шлюза по умолчанию. Допустим, Ваш провайдер выдал Вам следующие данные:
Quote:
IP адрес: 10.0.10.188
Маска подсети: 255.255.255.0
Шлюз по умолчанию: 10.0.10.254
ДНС серверы: 10.0.0.1 10.0.0.2
VPN сервер провайдера: 10.0.0.253
Домовая сеть: 10.0.0.0
Маска домовой сети: 255.0.0.0
В этом случае установки д.б. такими:
Quote:
WAN Type: PPTP
IP Address: 10.0.10.188
Subnet Mask: 255.255.255.0
Default Gateway: 10.0.10.254
DNS Servers: 10.0.0.1 10.0.0.2
Heartbeat Server: 10.0.0.253
В маршруты (IP Config | Route) для доступа к домовой сети нужно добавить запись:
Quote:
10.0.0.0 255.0.0.0 10.0.10.254 1 MAN
и разрешить её.
Quote:
Apply to routing table? Yes
В том случае, если адрес шлюза и PPTP сервера совпадают, в поле Heartbeat Server ничего вбивать не надо.
Как сделать доступными все каналы Wi-fi
Информация может пригодиться владельцам устройств, с загрузчиком не настроенным на европейский рынок (т.е. доступны только 11 каналов), либо отъезжающим в Японию :) (где доступны 14 каналов, а не 13, как в Европе).
Итак, чтобы разрешить все 14 каналов (All World) необходимы выполнить либо в telnet, либо через скрытую страницу:
Code:
nvram set regulation_domain=0X00ALL
nvram commit
А для того, чтобы использовать европейские нормы (13 каналов):
Code:
nvram set regulation_domain=0X30DE
nvram commit
После этого устройство нужно перегрузить.
Чтобы посмотреть, какой регион стоит сейчас:
Code:
nvram get regulation_domain
ВНИМАНИЕ: использование 14-го канала в России не приветствуется Государственным радиочастотным центром, поэтому Вы берёте на себя полную ответственность за это.
Загрузка с внешнего устройства
Начиная с 1.7.5.6-1 модифицированные прошивки поддерживают загрузку с корневой ФС на внешнем USB диске/флешки/внутреннего IDE. Обращаю внимание, что ядро Linux в любом случае грузится из встроенного флеш, поэтому при "апгрейде" прошивки не забывайте обновлять файлы на диске.
Далее приводится пример по загрузке с первого раздела с USB флеша (/dev/scsi/host0/bus0/target0/lun0/part1). Для WL-HDD (IDE диска) путь будет немного другим. :)
Чтобы заставить устройство "грузиться" оттуда необходимо:
- Создать и отформатировать ext3 раздел
Code:
# запустите fdisk если Вы хотите переразбить диск
fdisk /dev/scsi/host0/bus0/target0/lun0/disc
# отформатируйте раздел
mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1
- Скопируйте начальное содержимое
Code:
# монтируем
mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt
# копируем из встроенного флеша
tar cvO -C / .version bin/ etc/ lib/ sbin/ usr/ www/ var/ | tar x -C /mnt
# создаём нужные директории
mkdir -p /mnt/tmp && mkdir -p /mnt/dev && mkdir -p /mnt/proc && mkdir -p /mnt/mnt
# размонтируем
umount /mnt
- Устанавливаем загрузочное устройство
Code:
nvram set boot_dev="/dev/scsi/host0/bus0/target0/lun0/part1"
nvram commit
После этого при каждой загрузке устройство будет пытаться монтировать внешнюю файловую систему и в случае удачи использовать её. В противном случае загрузка будет продолжаться из встроенного флеша.
После загрузки вы можете перемонтировать файловую систему на чтение-запись используя
Code:
mount -o remount,rw,noatime $(nvram get boot_dev) /
(опция noatime уменьшает число записей на флешку.
Далее Вы можете изменять что Вам нравится и перемонтировать на только чтение:
Code:
mount -o remount,ro,noatime $(nvram get boot_dev) /
Можно поместить команды перемонтирования в post-boot или pre-boot скрипты.
Для освобождения неиспользуемой в дальнейшем области памяти добавьте такие команды в pre-boot:
Code:
#!/bin/sh
[ -d /mnt/dev ] && umount /mnt/dev && umount /mnt/proc && umount /mnt
Скрипты в /usr/local/sbin
В моей прошивке существует возможность выполнения пользовательских программ в определённые моменты времени. Как правило, такие программы пишут на языке встроенного shell (ash), но будут работать и ELF исполняемый код (например, откомпилированная Си программа).
Для тех кто пишет shell-скрипты: не забывайте, что в этом случае, первой строчкой обязательно была строка
Эта строка указывает загрузчику, что для испонения файла необходимо загрузить "интерпретатор" /bin/sh. В противном случае загрузчик попытается трактовать файл как исполняемый бинарный и понятное дело ему это не удастся. Кроме того не забывайте давать файлу право на исполнение, т.е. делать chmod +x ....
Итак, моя прошивка пытается исполнить следующие файлы:
- /usr/local/sbin/pre-boot - исполняется до основной инициализации, в момент, когда ещё не подгружены никакие модули ядра, но уже развёрнут flashfs и скопирован начальный образ для /etc из /usr/etc.
- /usr/local/sbin/post-boot - исполняется после того, как устройство закончило загрузку и запустило все сервисы, за исключением связанных с веб-камерой и usb дисками (они запустятся примерно через 10 секунд после этого при "обработке" hot plug событий, когда АСУСовский обработчик до них доберётся)
- /usr/local/sbin/post-mount - отрабатывает, когда устройство завершает монтирование usb дисков, с тем чтобы Вы могли запустить свои сервисы, которые эти диски используют
- /usr/local/sbin/pre-shutdown - работает перед перезагрузкой системы
- /usr/local/sbin/post-firewall - исполняется всякий раз, после того как устройство меняет внутренние правила с помощью команд iptables, с тем, чтобы Вы могли внести свои изменения в firewall
Провайдер борется с роутерами! Что делать?
Если борьба заключается в модификации TTL, то простейший способ решения этой проблемы - изменять TTL для всех нужных нам пакетов.
Делается примерно так:
Code:
mkdir -p /usr/local/sbin
echo "#!/bin/sh" >> /usr/local/sbin/pre-boot
echo "echo 128 > /proc/sys/net/ipv4/ip_default_ttl" >> /usr/local/sbin/pre-boot
echo "insmod ipt_ttl" >> /usr/local/sbin/pre-boot
echo "insmod ipt_TTL" >> /usr/local/sbin/pre-boot
chmod +x /usr/local/sbin/pre-boot
echo "#!/bin/sh" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -F" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 127 -o \$1 -j TTL --ttl-set 128" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 1 -i \$1 -j TTL --ttl-set 2" >> /usr/local/sbin/post-firewall
chmod +x /usr/local/sbin/post-firewall
flashfs save && flashfs commit && flashfs enable
reboot
Если у Вас используется комбинация PPTP/PPPoE/L2TP + домовая сеть, то это будет выглядеть так:
Code:
mkdir -p /usr/local/sbin
echo "#!/bin/sh" >> /usr/local/sbin/pre-boot
echo "echo 128 > /proc/sys/net/ipv4/ip_default_ttl" >> /usr/local/sbin/pre-boot
echo "insmod ipt_ttl" >> /usr/local/sbin/pre-boot
echo "insmod ipt_TTL" >> /usr/local/sbin/pre-boot
chmod +x /usr/local/sbin/pre-boot
echo "#!/bin/sh" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -F" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 127 -o \$1 -j TTL --ttl-set 128" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 1 -i \$1 -j TTL --ttl-set 2" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 127 -o \$(nvram get wan_ifname) -j TTL --ttl-set 128" >> /usr/local/sbin/post-firewall
echo "iptables -t mangle -I FORWARD -m ttl --ttl 1 -i \$(nvram get wan_ifname) -j TTL --ttl-set 2" >> /usr/local/sbin/post-firewall
chmod +x /usr/local/sbin/post-firewall
flashfs save && flashfs commit && flashfs enable
reboot
Тема для обсуждения: http://wl500g.info/showthread.php?15...B-%EF%EE-TTL-( ;)
Как быть? Очень надо DHCP + PPTP/L2TP/PPPoE
Если очень надо иметь DHCP (иначе провайдер запрещает маршрутизацию/не пингуется что-то в сети), но при этом Вы заметили что с DHCP, провайдер Вам выдаёт всё время один и тот же адрес, то в этом случае можно поступить так: указать адрес, который выдаёт Вам провайдер, в качестве статического и выполнить в telnet/ssh сессии вот эти команды:
Code:
mkdir -p /usr/local/sbin
echo "#!/bin/sh" >> /usr/local/sbin/post-boot
echo "udhcpc -i $(nvram get wan_ifname) -r $(nvram get wan_ipaddr) -s /bin/true -b" >> /usr/local/sbin/post-boot
chmod +x /usr/local/sbin/post-boot
flashfs save && flashfs commit && flashfs enable
reboot
После выполнения последней команды роутер перегрузится и начнёт выдавать запросы на DHCP сервер Вашего провайдера.
Следует учесть, что всё равно возможны разнообразные глюки...
Новая информация
Начиная с прошивки 1.9.2.7-7d, такая связка поддерживается моей прошивкой. Ручками более ничего делать не надо!
Просто укажите в качестве IP адреса 0.0.0.0 и пользуйтесь!
Дополнительно, начиная с 1.9.2.7-7e можно использовать имена в Heartbeat Server, не указывать Gateway и DNS и маршруты до них.