top
logo


Выборочная переадресация HTTP запросов на веб страничку в PfSense 2.0 vHosts PDF Печать E-mail
Автор: Administrator   
27.03.12 08:46

Выборочная переадресация HTTP запросов на веб страничку

 

в PfSense 2.0 средствами vHosts

Установка, настройка пакета vHosts в PfSense 2.0

 

"Требуется все запросы от всех адресов дефолтно перенаправлять на отдельный веб-сервер (на его 80 й порт). По сути, все не учтенные ип-адреса при любом запросе должны попадать только туда."

Перефразирую:
Мы создадим список IP адресов пользователей, которые смогут выходить в интернет. Все остальные IP адреса из локальной сети, будут попадать на  информ страничку.
Данный функционал чаще нужен провайдерам интернет. В случае отсутствия абанплаты, удаляем IP из списка и всё HTTP запросы будут отправляться на информационную веб. страничку.

Подразумевается, что у вас PfSense с начальными настройками - реквизиты интерфейсов, DNS, DHCP, NAT. Всё настроено и вы можете выходить через PfSense в интернет.

LAN 192.168.0.1/24

 

1. Делаем запись в DNS для виртуального хоста  ( info.lan = 192.168.0.1 )

Services -> DNS forwarder


 

2. C локального компа делаем  - ping info.lan


Обмен пакетами с info.lan [192.168.0.1] по 32 байт:

Ответ от 192.168.0.1: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.1: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.1: число байт=32 время<1мс TTL=64
Ответ от 192.168.0.1: число байт=32 время<1мс TTL=64

3. Изменим порт админки и включим SSH доступ.

System -> Advanced


 


 

4. Устанавливаем vHosts

System -> Package Manager -> Available Packages

 

5. Настраиваем vHosts

Services -> vHosts


 

6. Проверяем работу vHosts

Заходим на http://info.lan:8081

Видим:


 

7. Делаем потрфоравард 80 порт <-> 8081

Firewall ->  NAT -> Port Forward


 




8. Проверяем работу портфорвардинга

Проверяем правило в command prompt

pfctl -sa | grep rdr

Заходим на http://info.lan

Видим картинку пункт 6.

Если не увидели:

Очистить кэш броузера.

Рестарт DNS и vHosts ( Status: Services )

Можно  и   Status: Filter Reload Status

 

9. Создаем php страничку info.php с желаемым содержимым

/usr/local/www/info.php

10. Учим vHosts пускать нас по ip адресу (а не по доменному имени) на нашу веб страничку info.php

Правим /var/etc/vhosts-http.conf

Находим:

## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root        = "/usr/local/vhosts/"

Меняем на: server.document-root        = "/usr/local/www"




Находим:

$SERVER["socket"] == "192.168.0.1:8081" {
$HTTP["host"] == "info.lan" {
server.document-root        = "/usr/local/vhosts/info.lan"

}
}

Меняем на:

$SERVER["socket"] == "192.168.0.1:8081" {
$HTTP["host"] == "info.lan" {                               #находим имя созданного ранее хоста
server.document-root        = "/usr/local/www"        #меняем тут папку на указанную

}
}

url.rewrite-once = ("^/(.*)$" => "/info.php")           #эта регулярка позволит нам по любому адресу попадать на указанную

 

После внесённых изменений, рестартуем сервис vHosts

Status -> Services

 

Для того чтобы vhosts-http.conf не был изменен после перезагрузки, делаем

chflags uchange /var/etc/vhosts-http.conf

Для снятия флага, используем команду chflags nouchange /var/etc/vhosts-http.conf

11. C этого момента, все запросы в интернет по 80 му порту, должны переадресовываться на инфо страничку info.php

Проверяем возможность захода по IP адресу

http://192.168.0.1:8081

http://192.168.0.1

 

12. Создаем Aliases с группой IP адресов, которые смогут выходить в интернет.

Firewall  -> Aliases


 

13. Добавляем второе правило портфорвардинга

Firewall: NAT-> Port Forward



 

Перемещаем созданное правило, выше ранее созданного правила в пункте 7.

Должно получиться так:

 

После всех вышеописанных манипуляций, все IP перечисленные в алиасе смогут беспрепятственно выходить в интернет. Остальные будут перенаправляться на инфо страничку.

 

 

источник: http://forum.pfsense.org/index.php/topic,47447.0.html

ссылка на материал: http://thin.kiev.ua/index.php?option=com_content&view=article&id=550:pf-vhost&catid=50:pfsense&Itemid=81

{jcomments on}

## a static document-root, for virtual-hosting take look at the
## server.virtual-* options
server.document-root        = "/usr/local/vhosts/"
Последнее обновление 28.06.12 11:16
 
Интересная статья? Поделись ей с другими:

bottom

 

Unreal Commander PfSense по русски Яндекс.Метрика