Настройка web сервера для MikroBILL

Материал из MikroBILL
Перейти к: навигация, поиск

Давайте разберёмся, для чего нам нужен WEB сервер и как мы его можем настроить.

При установке MikroBILL по умолчанию, устанавливается WEB сервер Apache уже настроенный для работы с личным кабинетом. Если мы откроем файл c:\Program Files\Apache\conf\httpd.conf то в нём увидим настроенный основной хост и два виртуальных хоста, один для страницы заглушки при отрицательном балансе, другой для не пользователей сети.

В корневой папке основного хоста Apache мы видим файлы личного кабинета, файлы кабинета кассира (папка kassa), файлы заглушки по балансу (папка web-cap) и файлы заглушки не пользователей (папка web-cap2).

Обратите внимание, в папке где находится MikroBILL существует папка web, в которой находится всё тоже самое, но в настройках по умолчанию, Apache использует файлы, находящиеся в директории c:\Program Files\Apache\htdocs\, так как это определено настройками в конфигурационном файле httpd.conf.

Автор программы предлагает нам для активации виртуальных хостов на которых будут находиться заглушки, отредактировать файл и внести изменения

Listen порт_заглушки_указанный_в_MikroBILL

      <VirtualHost 0.0.0.0:порт_заглушки_указанный_в_MikroBILL>
         ServerName web-cap
         ErrorDocument 404 /
         DocumentRoot "папка_WEB/web-cap/"
      </VirtualHost>

И аналогично для заглушки не пользователей Listen порт_заглушки_указанный_в_MikroBILL

      <VirtualHost 0.0.0.0:порт_заглушки_указанный_в_MikroBILL>
         ServerName web-cap
         ErrorDocument 404 /
         DocumentRoot "папка_WEB/web-cap2/"
      </VirtualHost>

где

Listen – порт который будет прослушивать виртуальный хост;

<VirtualHost 0.0.0.0:порт_заглушки_указанный_в_MikroBILL> - тут вроде всё понятно, но если вы решите, что доступ к веб серверу у вас будет со внешнего ip адреса и в настройках MikroBILL вы указали этот адрес при этом сам сервер находится за маршрутизатором, то тут нужно указать адрес указанный на сетевой карте, а на маршрутизаторе сделать проброс указанных портов.

DocumentRoot "папка_WEB/web-cap/" – здесь нужно указать полный путь до соответствующих папок в директории web сервера apache

Перезапускаем сервис Apache и в браузере пытаемся зайти на ip:порт, всё работает.

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

Исходные данные: внешний ip 195.54.2.1. Порт личного кабинета 80, заглушка по балансу 81, заглушка для не пользователей 82, ip адрес WEB сервера 172.16.30.2, домен test.ru. Домену test.ru в DNS регистратора добавлена A запись lk.test.ru значение 195.54.2.1.

Сначала настроим MikroBILL. Нажимаем кнопку настроек ставим две галочки тем самым разрешаем данные функции.

Risw1.jpg
Risw2.jpg
Risw3.jpg

Нажимаем кнопки «Настройка» и вводим ip адрес 195.54.2.1 и порт 81 и 82 соответственно. После этого на всех подключенных к MikroBILL MikroTik появятся правила фаервола разрешающие доступ абонентам на этот адрес, и два правила NAT которые будут перенаправлять запросы на порты 81 и 82.

Так же нужно разрешить абонентам доступ к DNS серверам, так как при отрицательном балансе у них будут блокироваться все запросы. А для входа в личный кабинет по имени нужен DNS сервер. У нас DNS сервера это MikroTik (GW1) которые подключены к MikroBILL через EoIP канал.

Shema3.jpg

Нажимаем «Настройки» и переходим на вкладку «Списки сетей, фаервол». Нажимаем «+» в верхней части и создаём список наших DNS (рассмотрим один сегмент сети, рисунок выше). Задаём понятное для нас имя и прописываем ip адрес являющийся DNS сервером для абонентов. После сохранения на всех MikroTik подключенных к биллингу создастся адрес лист со списком ip адресов. Этот список адресов можно редактировать в любое время, изменения будут применяться на всех MikroTik.

Risw4.jpg

Теперь нажимаем «+» в нижней части окна

Risw5.jpg

Создаём правило в фаерволе. Если создать как на картинке, то мы получим правило фаервола которое будет разрешать все пакеты UDP на адреса которые мы указали в адрес листе. Создадим ещё такое же правило, только «Откуда» и «Куда» поменяем местами, чтобы разрешить эти е пакеты в обратную сторону. Правила создадутся на выбранных MikroTik.

На этом настройки MikroBILL завершены.

Теперь преступим к настройкам WEB сервера. Открываем в блокноте файл httpd.conf который находится в папке c:\Program Files\Apache\conf\ (в случае если путь не менялся при установке).

Сейчас выберу нужные нам строки

      Listen 172.16.30.2:80 (здесь был указан только порт 80, добавляем ip адрес)
      ServerName lk.test.ru (раскомментируем и допишем наш домен)
      DocumentRoot "C:/Program Files/Apache/htdocs/"

Это означает что основной сайт Apache прослушивает ip адрес нашего интерфейса на 80 порту. Когда мы будем на него обращаться у нас будет открываться личный кабинет. Файлы этого сайта находятся в директории C:/Program Files/Apache/htdocs/.

Так же нужно поправить файл hosts находящийся в c:\WINDOWS\system32\drivers\etc\, добавив в него запись, что бы наш сайт открывался по имени локально.

      127.0.0.1	lk.test.ru

Наши виртуальные хосты для заглушек

Listen 81

      <VirtualHost 172.16.30.2:81>
         ServerName web-cap
         DocumentRoot "C:/Program Files/Apache/htdocs/web-cap/"
         ErrorDocument 404 /
         ErrorLog C:/nul
      </VirtualHost>

Listen 82

      <VirtualHost 172.16.30.2:82>
         ServerName web-cap2
         DocumentRoot "C:/Program Files/Apache/htdocs/web-cap2/"
         ErrorDocument 404 /
         ErrorLog C:/nul
      </VirtualHost>

Здесь более понятно, что прослушиваются 81 и 82 порты и файлы сайтов лежат в разных директориях. Считаю что директива ServerName в виртуальных хостах ни к чему, так как абоненты на эти страницы будут попадать по ip адресам (195.54.2.1 они прописаны в MikroBILL) так как MikroTik не понимает имён.

Теперь если в браузере наберём lk.test.ru то мы попадём на внешний интерфейс нашего MikroTik за которым находится WEB сервер. Займёмся пробросом портов 80, 81, 82.

Для проброса портов на MikroTik (основной шлюз управляющей сети) нужно выполнить:

      /ip firewall nat
      add action=netmap chain=dstnat comment=port80 dst-port=80 in-interface=ether1 protocol=tcp to-addresses=172.16.30.2 to-ports=80
      add action=netmap chain=dstnat comment=port81 dst-port=81 in-interface=ether1 protocol=tcp to-addresses=172.16.30.2 to-ports=81
      add action=netmap chain=dstnat comment=port82 dst-port=82 in-interface=ether1 protocol=tcp to-addresses=172.16.30.2 to-ports=82

Теперь при открытии адреса lk.test.ru абонентом, даже если он заблокирован, будет открываться личный кабинет. При открытии других сайтов он будет попадать на 195.54.2.1:81 и будет видеть страницу заглушку и с неё может перейти в личный кабинет, к примеру, для активации услуги обещанный платёж.

Risw6.jpg

Рассмотрим ещё один момент. В папке основного сайта htdocs находится папка kassa, в которой находятся файлы кабинета кассира доступного по адресу lk.test.ru/kassa, я не стал выводить её в отдельный виртуальных хост, а решил ограничить к ней доступ с помощью файла .htaccess, так как к этой папке доступ нужен ограниченному кругу лиц и только с определённых ip адресов. Для этого в корень папки kassa нужно поместить файл с именем «.htaccess» (точка вначале обязательна) со следующим содержанием:

      Order Allow,Deny
      Allow from XXX.XXX.XXX.XXX
      Allow from XXX.XXX.XXX.XXX

AddDefaultCharset utf-8 (кодировка, обратите внимание начиная с последней версии изменилась)

Options –Indexes (запрет отображения содержимого каталога при отсутствии индексного файла)

Вместо XXX записываем ip адреса с которых будет разрешен доступ к данному каталогу. В корень папки htdocs, так же поместили файл robots.txt для запрета индексации поисковыми роботами. Содержимое файла:

      User-agent: *
      Disallow: /