Предлагаю вашему вниманию свой опыт интимных отношений с DSR-1000N. Все что я описал, не является guide, сработало только у меня и только на указанной версии прошивки. Предназначено только для людей, знакомых с UNIX. Если у вас есть вопросы типа, "как сделать форвардинг порта на DSR" или "как настроить DMZ", не стоит даже и читать дальше, иначе можно чего-нибудь подпортить. 1. Сделать вход через telnet с правами root пользователя -- вставить в DSR в первый USB порт флэшку и скопировать туда системный профиль командой util copy /etc/profile /usb/sda1 -- отредактировать на другой машине данный профиль, закомментировав строки, которые запускают cli -- опять вставить в DSR в первый USB порт флэшку и выполнить обратную команду util copy /usb/sda1/profile /etc -- после этого, при входе через телнет, вы будете попадать в обычный shell. Пользователь admin имеет ИД=0, поэтому будут root права. -- область /etc находится в ОЗУ, поэтому все указанные изменения пропадут после первой же перезагрузке. Далее - опишу, как сохранить данные изменения между перезагрузками 2. Как перейти с прошивки RU на WW с сохранением настроек. -- Установить (если уже не стоит) русскую прошивку с той же версией, что и WW. -- Сохранить файл конфигурации на USB флэшке -- Установить WW прошивку (у меня получилось установить прошивку DSR-1000N_A1_FW1.06B53_WW через Web интерфейс, конечно, после пресловутого saveenv). После установки прошивки все настройки сбросятся к заводским. -- Сохранить файл конфигурации WW прошивки на обычном компьютере через Web интерфейс. -- Перенести с помощью текстового редактора из файла конфигурации WW прошивки в файл конфигурации RU прошивки поля, касающиеся изменения прошивки с RU на WW (firmwareFile, например). Поле checksum пока не трогаем. -- Скопировать получившийся файл на USB флэшку -- Зайти через телнет под пользователем admin (см. п.1) -- Перейти на флэшку (cd /usb/sda1) -- Выполнить команду cat <файл конфигурации>.cfg | grep -v 'checksum' | md5sum | cut -d' ' -f1 -- Полученную после выполнения команды строку перенести на стационарном компьютере в поле checksum файла конфигурации -- Получившийся файл конфигурации можно загружать через Web интерфейс как восстановление настроек. -- Указанные команды можно выполнить на любой UNIX-like машине (не обязательно мучать DSR и себя), но вдруг ее нет... 3. Как восстановить пробрасывание реальных IP адресов машин из локальной сети в DMZ зону (такая хрень появилась только в пршивке 1.06B53, раньше ее не было). -- Как диагностируется: при входе из локальной сети на сервер в DMZ зоне (например в Apache), в логах последнего отображается не IP машины, с которой осуществлен вход, а IP самого роутера. Что нужно сделать: -- Зайти через телнет под пользователем admin (см. п.1) -- Выполнить команду iptables -t nat -D POSTROUTING -m ifgroup --ifgroup-out 0x2/0x2 -j fwMasqueradeRules -- Опять-таки, после перезагрузки снова включится маскарадинг 4. Как пустить WAN клиентов сервера PPTP в DMZ зону. -- Зайти через телнет под пользователем admin (см. п.1) -- Выполнить команду iptables -A fwDefpptpChains -o eth2 -j fwPPTPServer -- Все до первой перезагрузки 5. А если без перезагрузки ? Пожалуйста (относится к прошивке DSR-1000N_A1_FW1.06B53_WW !): -- В любом редакторе создать файл custom.sh с таким содержимым (это мой файл): #!/bin/sh date > /tmp/custom_sh_last_run_before cp /flash/profile /etc iptables -t nat -D POSTROUTING -m ifgroup --ifgroup-out 0x2/0x2 -j fwMasqueradeRules iptables -A fwDefpptpChains -o eth2 -j fwPPTPServer date > /tmp/custom_sh_last_run_after -- В данном скрипте я также восстанавливаю свой системный профиль (/etc/profile) -- Сохранить файл на DSR в каталоге /flash (в данный каталог можно писать и данные сохраняются между перезагрузками) -- Каждый раз при загрузке, DSR выполняет скрипт /pfrm2.0/sslvpn/var.default/httpd.sh. -- Он находится в записываемой области. Достаточно добавить туда в начало команду /bin/sh /flash/custom.sh -- Все. После этого, после каждой перезагрузки, добавляется возможность входа через телнет под root, отключается маскарадинг и включается доступ из PPTP к DMZ. -- Технология общая: ее можно расширять до бесконечности. 6. Вы все еще миритесь с 24-мя фиксированными IP-адресами ? Я уже нет: -- В директории /pfrm2.0/var/www есть файл dhcpReservedIps.htm. Директория не защищена от записи. -- В нем есть такая строчка: <td><input type="submit" value="$| trStrings["10171"] or 'i18nHTMLMissing' |$" name="button.add.DhcpfixedIpAddress.dhcpReservedIpConfig.-1" class="submit" title="$| trStrings["10171"] or 'i18nHTMLMissing' |$" onclick="return maxCountCheck ('hdReserverIps',24, 'tblErrMsg')"></td> -- В ней нужно заменить 24 на что-нибудь другое. Проверка - дебильнейшая, работает только на уровне Web интерфейса и не имеет никакого отношения к сетевым технологиям. Типа мальчикам захотелось ограничить. -- После замены, новые фиксированные адреса можно сохранять в конфигурации. Восстанавливать конфигурацию, правда, пока не пробовал. 7. Еще из полезных features, есть команды ftpget и ftpput. Их синтаксис можно посмотреть, просто запустив любую из них. Смысл команд понятен из их названия. Чтобы не морочиться с переносом файлов через USB, я использовал ftp. 8. Все это описал, чтобы продемонстрировать, что из данной железки в ее текущем состоянии можно сделать конструктор. Покопашись в коде, заметил, что встречаются закомментаренные строки, относящиеся к обязательному функционалу такого рода железок, но который убрали специально, чтобы не ронять продажи DFL. Например, в библиотеке dhcp.lua есть строки: --inTable["dhcp.primaryTftpServer"] = inputTable["dhcp.primaryTftpServer"] --inTable["dhcp.secondaryTftpServer"] = inputTable["dhcp.secondaryTftpServer"] Они должны были бы включать настройку TFTP сервера сетевой удаленной загрузки.
|