Пинг точки доступа, подключенной к Chillispot

В данном случае речь не только и не столько о пинге. Мне нужно было попасть в веб-интерфейс точки доступа, подключенной к серверу хотспота, на котором запущен и настроен Chillispot. Решение оказалось сравнительно простым.

Часть первая — настройка локальной адресации

Согласно документации на Chillispot, сетевая плата, используемая для подключения точки доступа, в настройке не нуждается. То есть, нужно лишь чтобы система опознала плату и присвоила ей номер (например, eth1). После чего сам Chillispot выполняет все необходимые настройки самостоятельно.

Чтобы добраться к точке доступа понадобилось сделать совсем немного.

Во первых, нужно выбрать подсеть, не используемую ни одним из интерфейсов компьютера. Например, у компьютера два интерфейса (сетевых платы). Допустим, плата eth0 используется для подключения к интернету и имеет адрес 192.168.1.2. А второй сетевой адаптер (eth1) используется для организации хотспота — им управляет Chillispot. По умолчанию, Chillispot присвоит этому интерфейсу адрес 192.168.182.1 (если вы не указали иное значение параметра net в его настройках). Выберем адрес, не относящийся ни к одной из двух указанных подсетей (но из диапазона, используемого для локальных сетей), например, 192.168.123.1. Этот адрес я и присвоил сетевой плате eth1 (той, к которой подключена точка доступа). Для этого в консоли от имени root-а я ввел команду:

ifconfig eth1 inet 192.168.123.1 netmask 255.255.255.0

Вторым делом в подготовке нуждается сама точка доступа. Нужно зайти в ее сетевые настройки (LAN) и присвоить ей статическй сетевой адрес, попадающий в диапазон подсети одной с тем адресом, который мы только что присвоили плате eth1. С учетом адреса eth1, выбранного мной выше, точке доступа нужно присвоить адрес в диапазоне от 192.168.123.2 до 192.168.123.254, и лично я, например, установил 192.168.123.5.

На этом подготовка завершена.

Теперь на компьютере, к которому подключена точка доступа, открываете браузер и вводите адрес точки доступа — 192.168.123.5. Откроется веб-интерфейс управления точкой доступа. Все.

Часть вторая — а снаружи?

Собственно, компьютер выступающий в роли сервера хотспота постоянно подключен к интернету. И  далеко не всегда человек, управляющий этим сервером, находится непосредственно перед ним. Он может находиться в другом месте за сотни или тысячи километров, лишь-бы был доступ к интернету. И в этом случае, для того, чтобы попасть в настройки точки доступа, человек этот вынужден сначала дистанционно подключиться к консоли сервера (по ssh), потом в консоли запустить браузер, и если в ssh настроен форвардинг «иксов», то браузер этот «всплывет» на его компьютере (иначе и не скажешь с поправкой на скорость), и уж потом он сможет подключаться к точке доступа. Главное неудобство — очень медленная скорость, вызванная тем, что «иксы» шифруются и заворачиваются в ssh-туннель.

Но что нам мешает настроить систему так, чтобы в веб-интерфейс настройки точки доступа попадать непосредственно из браузера удаленного компьютера, минуя ssh-подключение? Да ничего! Единственный нюанс, обратиться извне мы можем только к адресу самого сервера хотспота. А на нем уже работает apache, и как следствие, 80-й порт занят. Но и веб интерфейс настройки точки доступа также по умолчанию настроен на работу на 80-м порту. По этому, первым делом, нужно перенастроить точку доступа так, чтобы ее веб-интерфейс работал на порту с другим номером. Я у себя установил значение 8080, и именно такое значение и рассматривается в приведенных ниже командах. IP-адреса оставлены те же, что и в первой половине заметки. Если вы захотите использовать иные значения, откорректируйте приведенные команды самостоятельно.

Итак, в файл правил файервола (имеется ввиду файл «стандартных» правил, поставляемых вместе с программой chillispot) потребовалось добавить всего лишь три строки:

$IPTABLES -A FORWARD -i $EXTIF -d 192.168.123.0/24 -p tcp -j ACCEPT 
$IPTABLES -A FORWARD -i $INTIF -p tcp --source 192.168.123.0/24 -j ACCEPT 
$IPTABLES -t nat -I PREROUTING -p tcp -i $EXTIF --dport 8080 -j DNAT --to-destination 192.168.123.5:8080

Первый нюанс — месторасположение добавленных правил в файле. Я их добавил сразу же после команд установки «умолчательных» значений для всех правил, выполняемых в самом начале скрипта. То есть, СРАЗУ ЖЕ ПОСЛЕ СЛЕДУЮЩИХ СТРОК:

$IPTABLES -P INPUT DROP $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT

А теперь чуток поподробней о добавленных строках.

  • Первая строка разрешает принимать на внешнем (подключенном к интернету) интерфейсе все пакеты, которые подлежат переадресации в подсеть 192.168.123.0/24. В данном случае, в правиле указана вся подсеть. При  желании, вы можете ограничить правило, указав один-единственный адрес (адрес самой точки доступа), например, 192.168.123.5, или же уменьшить диапазон адресов, изменив маску (точек доступа ведь может быть больше чем одна), например, вот так — 192.168.123.0/29 (кроме адреса самой сети и широковещательного, эта маска дает всего 6 адресов устройств). В принципе, правило может быть ужесточено, например, добавлением ограничения допуска параметром номера(ов) портов, то есть, допустим, принимать только пакеты поступающие на порт 8080, и т.д. Документация по iptables в таком случае — именно то, что вам нужно сесть и прочитать…
  • Вторая строка разрешает отдавать назад во внешний интерфейс пакеты, поступающие из указанной подсети. Все вышесказанное про диапазоны адресов может быть так же применено и здесь с таким же успехом.
  • Ну и третья строка непосредственно включает переадресацию пакетов, поступающих на порт 8080 внешнего интерфейса по следующему адресу — 192.168.123.5:8080 (то есть, на порт 8080 устройства с адресом 192.168.123.5).

Результат таких действий (естественно, после того, как правила будут задействованы) — при обращении в браузере к адресу сервера с указанием выбранного номера порта (то есть, http://your.server.adres:8080/) вы будете попадать непосредственно на веб-интерфейс точки доступа.

А как же быть, если точек больше одной, спросите вы. С учетом того, что внешний интерфейс у сервера хотспота один, придется использовать следующий (другой) номер порта для переадресации. При этом, порт на котором слушает сама точка доступа, можно использовать все тот же 8080. А вот снаружи мы к ней будем добираться уже через порт 8081. В таком случае нужно будет продублировать всего лишь третью строку из числа добавленных и модифицировать ее таким образом (с учетом того, что, допустим, у второй точки доступа ip-адрес будет 192.168.123.7):

$IPTABLES -t nat -I PREROUTING -p tcp -i $EXTIF --dport 8081 -j DNAT --to-destination 192.168.123.7:8080

Вот и все…