NoCatSplash/ru

From DD-WRT Wiki

Jump to: navigation, search


Contents


[edit] Введение

NoCatSplash - это особый тип веб-сервера. Он перенаправляет клиентов, подключающихся к маршрутизатору с DD-WRT, на специальную веб-страницу. Обычно используется для отказа от ответственности и рекламы, может быть очень полезным инструментом, когда неизвестные люди подключаются к беспроводной сети. По истечении настраиваемого периода времени доступ клиента к Интернету будет отключен, если только Клиент снова не согласится с Условиями использования. Если браузер клиента настроен на прямое подключение к Интернету и пытается открыть какой-либо сайт, то браузер будет снова перенаправлен на страницу NoCatSplash.

Чтобы NoCatSplash отображал страницу с условиями, устройство с поддержкой DD-WRT должно иметь:

  • Активное подключение к интернету.
  • WAN-адрес.

Например, клиент, пытающийся "пропинговать" интернет-адрес (например, www.google.com), должен иметь возможность преобразовать имя в IP-адрес. Однако пакеты Ping на самом деле не пройдут, пока Клиент не нажмет кнопку I Agree ("Я согласен") на странице с условиями.


[edit] Предостережение относительно работы NoCatSplash

NoCatSplash не будет работать вообще, если маршрутизатор настроен только как беспроводная точка доступа (Wireless Access Point) или если маршрутизатор работает как коммутатор. В частности, после того, как вы отключите DHCP в разделе "WAN Connection Type" (как подробно описано в связанной вики-статье), NoCatSplash больше не будет пытаться перенаправить клиентов, которые подключаются к точке доступа или коммутатору. Вместо этого они радостно обращаются к Интернету без принятия каких-либо условий. Эта проблема также возникает, когда устройство не работает как DHCP-сервер. Скорее всего, есть и другие настройки, которые нарушат функции NoCatSplash. Это просто две очень яркие настройки, которые безо всякой причины нарушают работу NoCatSplash.

Эта проблема была доведена до сведения разработчиков, но по состоянию на 10:28, 21 июня 2009 г. (CEST), нет ответа или решения.


[edit] Термины и определения

NoCatSplash
В данном документе также называется NoCat или splashd (техническое название).
Клиент
Пользователь, подключающийся к маршрутизатору с устройства с браузером, настроенным для прямого подключения к интернету (например, без использования прокси-сервера). Обычно подключаются пользователи локальной сети, поэтому любой, подключенный к портам локальной сети на устройстве DD-WRT, также является клиентом. Например, серверы локальной сети могут быть исключены из участия в системе NoCat настройками в файле конфигурации.
Страница с условиями использования
Условия использования или Соглашение, которое защищает владельца DD-WRT от юридической ответственности за предоставление открытого доступа к сети интернет. Для получения дополнительной информации о том, как такое соглашение может уберечь владельца маршрутизатора от возможного проблем за предоставление доступа в Интернет, обратитесь за юридической консультацией. В этой статье описывается только то, как заставить страницу появиться, и при каких обстоятельствах она может не появиться (ограничения). В любых случаях, сбои в работе NoCat, из-за которых клиенты не увидели страницу соглашения или неспособность содержимого страницы с условиями оградить владельца маршрутизатора от законного преследования за противоправные действия, совершенные с IP-адреса его устройства не перекладывают ответственность на авторов NoCat, этого сайта, или разработчиков DD-WRT.
CLI
Интерфейс командной строки. Либо SSH (более безопасный, рекомендуется) или Telnet (менее безопасный или не безопасный). Пользователям Windows рекомендуется использовать бесплатную программу Putty в качестве SSH-клиента.
NoKaid
Сборка DD-WRT без специальной поддержки XBOX. Оставляет место для крошечной папки для чтения / записи, где хранятся пользовательские скрипты NoCat и веб-страницы. (В новых сборках NoKaid для этого недостаточно места)
Gateway Name
Название шлюза. Имя, как бы вы хотели назвать ваше место для выхода в интернет. Например, "Магазин пиццы Джо и бесплатное интернет-кафе". Используйте переменную $GatewayName на вашей странице splash.html, чтобы отобразить это название.
AllowedWebHosts
Разделенный пробелами список веб-сайтов (доменных имен), доступных без необходимости нажатия кнопки "Я согласен" (без необходимости входа в NoCat).
Перечислите все веб-серверы, к которым клиенты могут подключаться, прежде чем нажать "Я согласен" на странице соглашения NoCatSplash. Например, веб-сервер, на котором размещено ваше лицензионное соглашение или страница с условиями, если это не сам маршрутизатор.
Document Root
Каталог, в котором хранятся веб-страницы для Splashd. По умолчанию: /www.
Splash URL
Необязательный URL-адрес удаленного устройства, на котором храниться страница с условиями.
Оставьте пустым, если используете страницу, сохраненную на маршрутизаторе.
ExcludePorts
Разделенный пробелами список портов, которые клиенты не могут использовать (например, порт 25, обычно блокируемый провайдерами).
Пользователи, заблокированные NoCat, не могут выполнять соединение через указанные порты.
Вы должны *всегда* исключать порт 25 (SMTP), если вы не хотите превратить маршрутизатор в портал для рассылки спама. Обычная электронная почта через браузер и почтовые программы, использующие TLS или SSL (оба используют порты, отличные от 25), такие как Thunderbird и другие, не пострадают от этого отключения. Блокируются только пользователи, использующие незашифрованную, не прошедшую проверку подлинности исходящую почту. Препятствие такой деятельности является хорошой практикой.
MAC White List
Разделенный пробелами список MAC-адресов, которые должны иметь неограниченный доступ в Интернет. MAC-адреса, перечисленные в этом поле, не будут перенаправлены на страницу с условиями и будут иметь прямой доступ в Интернет.
Login Timeout
Сколько времени в секундах должно пройти прежде чем клиент снова увидит страницу с условиями и нажать кнопку 'I Agree' ("Я согласен"). Как часто клиенту показывается лицензионное соглашение или другой указанный текст.
  • Для порталов в режиме Open Mode (открытого режима) вы, вероятно, захотите установить для LoginTimeout что-то большое (например, 86400, для одного уведомления в день). Open Mode (Открытый режим) - единственный поддерживаемый режим в настоящее время.
Verbosity
Определяет какие события записывать в системный журнал syslogd.
  • 0 - не записывать (почти) ничего.
  • 10 - записывать все, даже незначительные события.
  • 5 - золотая середина.
Route only 
Требуется, только если вы НЕ хотите, чтобы маршрутизатор работал как NAT.
  • Включайте параметр только случае, если вы используете строго маршрутизируемую сеть и вам не нужен шлюз NAT.
  • Обычно параметр не используется. Так что, если его назначение непонятно, просто оставьте его в значении No/Off.


[edit] Начало работы

Инструкции этой страницы предназначены для DD-WRT версии v24 и позже. Для получения информации для предыдущих версий прошивки просмотрите старые версии этой страницы.

  • Убедитесь, что вы используете DD-WRT Standard или одну из других версий, которые поддерживают NoCatSplash, см. What is DD-WRT?#File Versions.
  • В веб-интерфейсе перейдите в раздел Services → Hotspot.
  • Установите значения переменных:
    • NoCatSplash → Enable
    • Gateway IP Addr...
    • Gateway Name
    • Interface
    • Home Page - страница, на которую пользователи будут перенаправлены после просмотра страницы с условиями, если включен параметр RedirectionEnable.
    • Homepage RedirectionEnable → Disable
    • Allowed Web Hosts - доменные имена, к которым клиент может получить доступ без принятия условий.
      (NoCat автоматически включает в список значение параметра Splash URL и IP-адреса маршрутизаторов). Следует вводить только доменное имя, т.е. не ставьте префикс "http://" перед именем. (На самом деле NoCat выполняет поиск IP-адреса по указанному доменному имени и включает в список именно IP-адрес, поэтому другие сайты с таким же IP-адресом также будут доступны).
    • Document Root → /www
      Прошивка DD-WRT поставляется с примерами страниц с условиями и страниц состояния в этом каталоге.
    • Splash URL
      Параметр должен быть заполнен, иначе Splashd не работает! При использовании параметра Document Root, Splash URL игнорируется. (в новых версиях не требуется задание Splash URL. Однако, если адрес задан, NoCat загружает страницу каждые 6 часов и использует эту страницу вместо файла splash.html в Document Root)
    • Exclude Ports
    • MAC White List
      Белый список MAC-адресов. Например, без кавычек: "00:1B:B1:1A:FA:9A, 00:1D:E0:2F:D0:AB".
    • Login Timeout
    • Verbosity
    • Route Only -- вы, скорее всего, захотите отключить эту настройку.

Прошивка DD-WRT Standard поставляется с примерами страниц с условиями и страниц состояния. Задать основные настройки NoCat через веб-интерфейс очень просто. Более сложные опции возможны путем редактирования файла nocat.conf. NoCat может использовать адрес URL к странице с условиями, размещенной вне маршрутизатора DD-WRT, например на отдельном устройстве NAS. Или NoCat может использовать файловую систему JFFS2 на маршрутизаторе. Простой настройкой является изменение примера страницы с условиями (настоятельно рекомендуется) и ее сохранение непосредственно на устройстве DD-WRT.


[edit] Переменные страницы с условиями

NoCatSplash поддерживает предопределенные переменные с префиксом знака доллара ($), которые отображают на станице с условиями динамическую информацию, связанную с приложением. Файл "status.html" (находится в каталоге "/www") поддерживает следующие переменные. По состоянию на 10:28, 21 июня 2009 г. (CEST), используя сборку v24-sp2 (10.10.2009) Mega (SVN ревизия 13064), переменные, отмеченные красным, НЕ отображают НИЧЕГО в файле splash.html ИЛИ status.html (однако, это не было подтверждено в более новых версиях - любые будущие редакторы вики должны предоставить конкретную информацию о сборке!!):

$GatewayName
Имя шлюза, определенное на вкладке "Basic Setup" под заголовком "Optional Settings"
$LocalTime
Время часов маршрутизатора по местному времени.
$GatewayStartTime
Время, когда сервер NoCat был запущен. Неизвестно, на чем основано это время.
$TotalConnections
Вероятно, это может быть количество соединений, которые в данный момент открыты на устройстве DD-WRT.
$Version
Выводит информацию о версии, например "0.93pre2-ewrt0.4".
$GatewayMode
Известено, что при использовании переменной на странице отображается текст "Open". Это значение определено в файле конфигурации "nocat.conf". Неизвестно, является ли это значение динамическим.
$LoginTimeout
Тайм-аут входа в систему, значение которого определено в группе параметров NoCatSplash на вкладке Administration → Hotspot.
$IdleTimeout
Выводит тайм-аут, значение которого определено в файле конфигурации "nocat.conf". Неизвестно, на что влияет.
$HomePage
Выводит путь к домашней странице, определенный в файле "nocat.conf". Переменная содержит эту информацию независимо от включения параметра "Homepage redirection" ("Перенаправление домашней страницы").
$AllowedWebHosts
Самоочевидно. На основе конфигурации файла "nocat.conf". По умолчанию, как минимум, содержит IP-адрес маршрутизатора.
$LastConnectionTime
Очень полезная переменная, которая выводит время, в которое последний раз пользователь проходил аутентификацию через NoCatSplash. Как ни странно, эта полезная переменная не работает.
$ConnectionCount
Страница по умолчанию "splash.html" в каталоге "/www" указывает, что эта переменная показывает количество пользователей, подключенных к NoCat. Это будет ОЧЕНЬ полезная часть информации для отображения.
$UserTable
Какой-то тип таблицы (возможно HTML?), который содержит список пользователей, подключенных к устройству. Невозможно сказать, какая идентифицирующая информация будет содержаться по понятным причинам.
$redirect
URL-адрес, введенный пользователем в браузере перед тем, как он был перенаправлен на страницу с условиями NoCat. Обратите внимание, что строки запросов (идущие после знака вопроса "?") удалены.
$action
Поместите эту переменную в атрибут action формы. Выводит что-то похожее на "http:/ /192.168.1.1:5280/".
$SplashURL
Выводит адрес URL к странице с условиями, значение которого определено в файле конфигурации "nocat.conf".
Другие переменные, определенные в файле nocat.conf, по-видимому, также можно использовать для отображения на станице с условиями динамической информации

$RouteOnly, $Verbosity, $GatewayAddr, $InternalDevice, $GatewayPort, $GatewayMAC, $DocumentRoot, $SplashURLTimeout (по умолчанию 21600), $LeaseFile, $FirewallPath, $ExcludePorts, $IncludePorts, $AllowedWebHosts, $MACWhiteList, $DNSAddr, $HomePage, $ForcedRedirect, $MaxMissedARP, $LoginTimeout, $RenewTimeout


[edit] Обходные решения

Начиная с версии 12188 (21.05.2009) никаких обходных путей не требуется. См. старые версии этой страницы для исторической информации.


[edit] Редактирование страницы с условиями

Обзор. Скопируйте стандартные примеры страницы с условиями из каталога только для чтения /www в область для записи на устройстве DD-WRT. После этого можно редактировать базовые страницы, добавив свой логотип или текст заявления об отказе от ответственности, условия соглашения и настройки.

Инструкция:

  1. См. статьи Wiki Enabling JFFS2 ("Включение JFFS2") или Adding additional Flash memory to DD-WRT ("Добавление дополнительной флэш-памяти в DD-WRT") для создания на маршрутизаторе каталога, доступного для записи.
  2. Используя CLI, создайте папку с именем nocat
mkdir /jffs/nocat
  1. Проверьте, существует ли папка
cd /jffs/nocat
  1. Скопируйте содержимое из /www в /jffs/nocat
cp -R /www/* /jffs/nocat/
  1. Отредактируйте веб-страницу /jffs/nocat/splash.html. См. WinSCP и Mirroring.
  2. Измените конфигурацию NoCatSplash с помощью веб-интерфейса DD-WRT с /www на /jffs/nocat. Сохраните изменения. Перезапустите маршрутизатор, если это необходимо.

Если ваша версия DD-WRT не поддерживает JFFS, у вас есть два варианта:

  1. Относительно легко заставить работать CIFS (если он указывает на общую папку на компьютере, который всегда включен).
  2. Разместить свою заставку на веб-сервере в Интернете.

[edit] Снимки экранов конфигурации

Веб-интерфейс конфигурации NoCatSplash в прошивке версии v23

Image:V23-hotspot-nocatsplash-conf.png


[edit] Дополнительные заметки

  • Если splash.html вызывает другую страницу, например, при использовании HTML-фреймов, любые переменные, значения для которых были указаны в веб-интерфейсе или файле конфигурации nocat.conf, должны быть заменены на значения. Переменные, работающие в исходной странице splash.html, не передаются и не работают на подстраницах. Для элемента формы должен быть задан атрибут action, вызываемый при нажатии кнопки 'I Accept' ("Я принимаю"), со значением action="http://IP-адрес_маршрутизатора:5280/" вместо action="$action".
  • Страница с условиями не будет показывать никаких элементов, ссылающихся за пределы HTML-файла, если она размещена не на маршрутизаторе или подключенном каталоге Samba. Например, каскадные таблицы стилей .css и изображения не будут загружены, но будут добавлены теги стиля в заголовке HEAD html-страницы.
  • Настройки NoCat хранятся в файле /tmp/etc/nocat.conf. Смотрите эту страницу для дополнительной информации. Вы можете редактировать файл конфигурации, используя редактор vi, но вам также нужно сохранить соответствующие настройки в NVRAM, чтобы они сохранялись после перезагрузки. Например, вы можете изменить параметр Verbosity на 3 в файле конфигурации. Затем вам также нужно будет набрать "nvram set NC_Verbosity=3" и "nvram commit".

Exclude Ports: вы всегда должны указывать порт 25 в списке исключаемых портов, в противном случае маршрутизатор может использоваться в качестве источника рассылки спама. Вы не можете одновременно использовать оба списка использовать "Exclude Ports" и "Include Ports".

LocalNetwork: обратите внимание, что этот параметр следует использовать только в случае, если NoCat не может определить подсеть локальной сети. Параметр не указывает NoCat работать только в определенной подсети. Лучшим способом является изменение параметра Interface (Интерфейс) на странице настроек NoCat со значения LAN на br1 (где br1 - это мост, настроенный для вашего BSSID или VLAN).

Исполняемый файл службы

/usr/sbin/splashd

Файл конфигурации по умолчанию

cat /tmp/etc/nocat.conf

RouteOnly       0
Verbosity       0
GatewayName     DDWRT
DocumentRoot    /jffs/nocat
ExcludePorts    25
AllowedWebHosts 192.168.1.1 mydomain.com
HomePage        http://www.mydomain.com/
SplashURL       http://www.mydomain.com/
LoginTimeout    86400
...
Параметры в NVRAM

nvram show | grep NC

NC_Verbosity=0
NC_SplashURL=http://www.mydomain.com/
NC_DocumentRoot=/jffs/nocat
NC_RouteOnly=0
NC_HomePage=http://www.mydomain.com/
NC_GatewayName=DDWRT
NC_ExcludePorts=25
NC_LoginTimeout=86400
NC_AllowedWebHosts=mydomain.com
...

[edit] История

Аутентификация была первоначально предусмотрена для NoCat (NoCatAuth), однако была впоследствии удалена, чтобы максимально упростить программу.


[edit] Ссылки

[edit] Замечания

Пожалуйста:

  • Место для вопросов и предположений находится на странице обсуждения статьи Article Discussion (которую, возможно, стоит прочитать) или опубликовать свои вопросы на форуме DD-WRT.
  • Комментарии пользователя PolskiKrol: Похоже, что в этой версии DD-WRT v24 RC7 NoKaid больше недостаточно места для JFFS2 на 4-мегабайтной прошивке. Эта проблема была замечена на маршрутизаторе WRT150N. Последняя рабочая прошивка [для меня, с достаточным количеством свободного места] - DD-WRT v24 RC6.2.
  • В настоящее время я использую флешку с файловой системой ext2 в бета-версии DD-WRT v24 SP2. У меня монтируется диск как "/jffs", и NoCatSplash правильно работает на устройстве. Я говорю об этом, чтобы отметить, что у меня не только отключена опция "JFFS2 support" ("Поддержка JFFS2"), но также, когда я включаю эту опцию (используя правильные настройки), изначально все работает так, как ожидалось. Однако после перезагрузки маршрутизатора устройство забывает, что USB-накопитель подключен как JFFS, и вместо этого пытается использовать пространство во флэш-памяти. Это явно не то, что я ожидал или хотел, и это приводит к непреднамеренной работе NoCatSplash. ScreamingAnger 10:28, 21 июня 2009 (CEST)