Выборочная переадресация 2
-
А средствами virtualhost
http://thin.kiev.ua/index.php?option=com_content&view=article&id=464:vhost&catid=50:pfsense&Itemid=81Или ежели уже на внутренний веб есть форвард, средствами хтмл
1. Переадресация на нужный нам адрес
В файле index.php прописываемХм, а не совсем понимаю зачем в примере по ссылке хосты поднимаются на внешнем интерфейсе? Предполагается, что это белый адресс и он видится из интернета?
И если мы делаем переадресацию наоборот (из локальной сети), то сервер висит, соответственно, на локальном интерфейсе. Все верно?Но, по сути, тут без файрвольного редиректа не обойтись(сам lighthttpd, насколько я знаю, не умеет переадресовывать). А при успешной реализации редиректа - vhosts уже не нужны.
Это, по сути, просто веб-сервер.Тогда уж nginx ставить лучше, там встроенные средства редиректа. Но это все дополнительная нагрузка и лишние элементы.
-
Хм, а не совсем понимаю зачем в примере по ссылке хосты поднимаются на внешнем интерфейсе?
При попытке создания виртуального хоста на лан интерфейсе на 80 порту, П.Ф. ругался:
Potential DNS Rebind attack detected, see http://en.wikipedia.org/wiki/DNS_rebinding
Try accessing the router by IP address instead of by hostname.И если мы делаем переадресацию наоборот (из локальной сети), то сервер висит, соответственно, на локальном интерфейсе. Все верно?
Да верно. Похоже пакет виртуал хост слушает лан и ван.
Тогда уж nginx ставить лучше, там встроенные средства редиректа. Но это все дополнительная нагрузка и лишние элементы.
Вам решать. Я лишь предложил вариант. :-)
-
Подскажите, пожалуйста, что может быть не так:
правило
rdr on em1 proto tcp from 1.0.0.0/29 to any port 80 -> 1.0.0.1 port 8001 (создается в Firewall -.>NAT -> Port Forward)
Правило работает хорошо, может редиректить любые запросы на нужный порт. Дело за малым
Ставлю vhosts, он работает на ура, но при переадресации какая-то шляпа..Т.е., фактически, на какой бы порт я не перевесил админку - на нее я могу переслать запрос (1.0.0.1:2222), но как я ни старался редирект на порт 2222 хоста abc, который прописан в dns как 1.0.0.1, не проходит. точнее на сервер мы попадаем, но вместо страницы видим печальный 404 - Not Found (локального сервера) Есть особенность, что ту же страницу 404 можно увидеть при редиректе на локалхост в случае попытке входа в не дефолтную на сервере локацию, т.е. любое место кроме hostname.domain (прим, c ya.ru переадресация работает, а с ya.ru/*/ уже 404)
Короче, что-то не так с vhost'ом, мне кажется, он не может обработать запрос типа 1.0.0.1:port, такое ощущение, что он его заменяет на что-то, получается редирект видит 404Пол ночи голову ломаю - все не могу придумать, что же это.. Неужели придется доп. веб-сервер ставить для одной страницы.?!
-
Вы редиректите IP, а вхост ждет доменное имя. :-(
Думаю должна быть дефолтовая дириктория, куда можно зайти по ip. -
Вы редиректите IP, а вхост ждет доменное имя. :-(
Думаю должна быть дефолтовая дириктория, куда можно зайти по ip.Именно так -) сегодня пол дня пытался понять и подкрутить и из дефолтной директории все заработало. Отлично!
Кому интересно, после стандартного добавления хоста, заходим в конфиг файл и правим (/var/etc/vhosts-http.conf):$SERVER["socket"] == "lan_if_ip:8001" {
$HTTP["host"] == "info" { #находим имя созданного ранее хоста
server.document-root = "/usr/local/www" #меняем тут папку на указанную
}
}
url.rewrite-once = ("^/(.*)$" => "/info.php") #эта регулярка позволит нам по любому адресу попадать на указанную страницу (конечно, там ее надо создать самому =)сохраняем, перезапускаем сервис и вуаля - все работает!
Да, вот правило фаервола для редиректа:
no rdr on $lan_if proto tcp from <test>to any port = http
rdr on $lan_if inet proto tcp from $lan_subnet to any port = http -> $web_serv_ip port 8001Первое правило позволяет пропускать группу разрешенных адресов</test>
-
Да, вот правило фаервола для редиректа:
no rdr on $lan_if proto tcp from <test>to any port = http
rdr on $lan_if inet proto tcp from $lan_subnet to any port = http -> $web_serv_ip port 8001</test>Стесняюсь спросить, а куда его вставлять (где его прописывать)? :-)
Рад что у Вас вс -
Стесняюсь спросить, а куда его вставлять (где его прописывать)? :-)
Я же уже описывал в посте выше:
Firewall -.>NAT -> Port Forward, жмем плюс,лан интерфейс,tcp, сурс - лан подсеть, дестанэйшен - хттп, таржет ип - локальный адресс веб-сервера(в случае vhosts лан адресс машины-пф), редирект порт - тот порт, на котором висит vhost (в моем случае 8001, стандартный)
проверяем правило в command prompt , pfctl -sa | grep rdr , там должно появиться правило, как я приводил в посте выше. Если правило такое, и vhosts работают по айпи-адресу (т.е. в строке браузера введя именно ИП:порт и попадаем на нужную страницу), то переадресация будет работать! и никаких сквидов, сквидгвардов, каптив порталов и прочей лабуды =)_ -
Требуется все запросы от всех адресов дефолтно перенаправлять на отдельный веб-сервер(на его 80й порт). По сути, все не учтенные ип-адреса должны любом запросе попадать только туда.
Все неучтенные….
Я так понимаю, что учтенные это зарезервированные в дхцп и имеющие право работать в сети. А как вы сделаете, чтобы они (зарезервированные) не попадали под правило форварда и не попадали на веб страничку вхоста?
-
Требуется все запросы от всех адресов дефолтно перенаправлять на отдельный веб-сервер(на его 80й порт). По сути, все не учтенные ип-адреса должны любом запросе попадать только туда.
Все неучтенные….
Я так понимаю, что учтенные это зарезервированные в дхцп и имеющие право работать в сети. А как вы сделаете, чтобы они (зарезервированные) не попадали под правило форварда и не попадали на веб страничку вхоста?
http://forum.pfsense.org/index.php/topic,47447.msg250168.html#msg250168
Да, вот правило фаервола для редиректа:
no rdr on $lan_if proto tcp from <test>to any port = http
rdr on $lan_if inet proto tcp from $lan_subnet to any port = http -> $web_serv_ip port 8001
Первое правило позволяет пропускать группу разрешенных адресов</test>По сути, в веб-интерфейсе там же, где создавали редирект, нужно щелкнуть на + от правила редиректа, и включить галку на No rdr, заменить lan subnet на нужный алиас. Переместить это правило Перед правилом редиректа.
-
Опробовал и описал. Возможно кто-то найдет применение данному решению
http://thin.kiev.ua/index.php?option=com_content&view=article&id=550:pf-vhost&catid=50:pfsense&Itemid=81 -
Проблема затерания файла после перезагрузки элегантно решается установком флага "неизменяемости" следующим образом:
chflags uchange /var/etc/vhosts-http.conf