The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Перенаправлять всех на одну и ту же страницу"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Маршрутизация, NAT / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 13-Сен-07, 22:17 
Как сделать так, чтобы пользователь набрав любой адрес в броузере попадал только на одну заранее определенную администратором страницу?
(Это относится к тем пользователям которые ходят в инет через мой FreeBSD сервер.)
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от universite email(ok) on 13-Сен-07, 22:30 
>Как сделать так, чтобы пользователь набрав любой адрес в броузере попадал только
>на одну заранее определенную администратором страницу?
>(Это относится к тем пользователям которые ходят в инет через мой FreeBSD
>сервер.)

Прозрачно проксировать траффик, например squid`ом.
И там выставить настройки.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 13-Сен-07, 23:05 
А просто форвардингом никак нельзя?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Slimm (??) on 14-Сен-07, 00:28 
>А просто форвардингом никак нельзя?

не только можно но и нужно
тебе надо подменить destination-адрес в пакетах идущих на 80 порт
операция похожая на NAT но чуть экзотичней

а сквид конечно хороший продукт, но это как на танке на зайцев охотиться

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 14-Сен-07, 10:40 
>>А просто форвардингом никак нельзя?
>
>не только можно но и нужно
>тебе надо подменить destination-адрес в пакетах идущих на 80 порт
>операция похожая на NAT но чуть экзотичней
>
>а сквид конечно хороший продукт, но это как на танке на зайцев
>охотиться

А можно по подробнее, чем это делается?

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от mixa (??) on 14-Сен-07, 11:04 
>А можно по подробнее, чем это делается?

К примеру:
на сервере в локальную сеть смотрит интерфейс rl0 с ip адресом 192.168.1.1
локальная сеть ессно 192.168.1.0/24
тогда правила примерно так

100 allow ip from any to any via lo0
200 deny ip from any to 127.0.0.0/8
300 deny ip from 127.0.0.0/8 to any
400 fwd 192.168.1.1,80 tcp from 192.168.1.0/24 to any 80

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Redduck (??) on 14-Сен-07, 15:12 
А если обращаться не к 80 порту а скажем к 8080 или еще какому, то такое правило уже не сработает!?
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от universite email(ok) on 14-Сен-07, 15:26 
>400 fwd 192.168.1.1,80 tcp from 192.168.1.0/24 to any 80

При таком форвардинге источник НЕ меняется.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от mixa (??) on 14-Сен-07, 15:39 
>>400 fwd 192.168.1.1,80 tcp from 192.168.1.0/24 to any 80
>
>При таком форвардинге источник НЕ меняется.

Да и пусть не меняется!

>А если обращаться не к 80 порту а скажем к 8080 или еще какому, то такое правило уже не сработает!?

Ну напиши так
fwd 192.168.1.1,80 tcp from 192.168.1.0/24 to any 80,808,443 порты по вкусу

Или ваще так
fwd 192.168.1.1,80 ip from 192.168.1.0/24 to any :)))

Задача то какая?
Перенаправить всех (не всех) пользователей на страничку с сообщением на сервере и все? И не пустить их дальше?
Или ещё что-то там до кучи?
Апач поднят?

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 14-Сен-07, 21:22 
>[оверквотинг удален]
>fwd 192.168.1.1,80 tcp from 192.168.1.0/24 to any 80,808,443 порты по вкусу
>
>Или ваще так
>fwd 192.168.1.1,80 ip from 192.168.1.0/24 to any :)))
>
>Задача то какая?
>Перенаправить всех (не всех) пользователей на страничку с сообщением на сервере и
>все? И не пустить их дальше?
>Или ещё что-то там до кучи?
>Апач поднят?

Апач конечно поднят.
Идея в том, чтоб пользователь отключённый от интернета попадал на страничку, где об этом будет написано. Конечно дальше их пускать тоже не надо, но это можно реализовать отдельным дэнаем.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 14-Сен-07, 21:27 
гда правила примерно так
>
>100 allow ip from any to any via lo0
>200 deny ip from any to 127.0.0.0/8
>300 deny ip from 127.0.0.0/8 to any
>400 fwd 192.168.1.1,80 tcp from 192.168.1.0/24 to any 80

100 allow ip from any to any via lo0
200 deny ip from any to 127.0.0.0/8
300 deny ip from 127.0.0.0/8 to any

Запретить локальный адрес на всех интерфейсах кроме локального?
Я не совсем понял, для чего эта конструкция?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

11. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 14-Сен-07, 21:40 
Спасибо. Отлично работает.

Но тут же появляется вопрос - как подменять заголовок, чтобы апач показывал именно нужную страницу, а не DocumentRoot.
Или придётся использовать отдельный ip адрес для этого?

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от mixa (??) on 15-Сен-07, 07:42 
>Спасибо. Отлично работает.
>
>Но тут же появляется вопрос - как подменять заголовок, чтобы апач показывал
>именно нужную страницу, а не DocumentRoot.
>Или придётся использовать отдельный ip адрес для этого?

А зачем такие сложности?
На сервере поднят апач, так? На сервере крутится биллинг, так? Статистику пользователи просматривают через веб на этом сервере. Ну так и перенаправлять задолжников на страницу статистики, где наверху, скажем, написано примерно так: вы попали на эту страницу потому, что у вас кончилось бабло и вам надо и т.д. и т.п. бла-бла-бла.
Но если на сервере кроме статистики еще и просто размещен контент, форум там, еще что-либо, тогда можно так. Поднимаем виртуал хост на этом же сервере с апачем и статистикой но уже не на 80 порту, а, скажем на 8080 и в секции конфига апвча для виртуальных хостов прописываем его, желательно занести в днс (к примеру сам сервер - server.ru, виртуальный сервер - dolg.server.ru)
Потом в правилах форвардинга прописываем отсылать пользователей не на 80 порт, а на 8080
На виртуальном сервере формируем стартовую страничку с нужным содержанием-напоминанием.

fwd dolg.server.ru,8080 tcp from 192.168.1.45/32 to any 80,8080,443
                                 ^^^^^^^^^^^^^^^
                                 задолжник

У меня без виртуального сервера, я просто отсылаю на страницу с биллингом.

>100 allow ip from any to any via lo0
>200 deny ip from any to 127.0.0.0/8
>300 deny ip from 127.0.0.0/8 to any

А это лупбак, петлевой интерфейс, петля :))))

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 15-Сен-07, 20:03 
За идею с портом - спасибо, ато я уже думал алиасить дополнительный ip адрес, и делать виртуалхост на него.

>>100 allow ip from any to any via lo0
>>200 deny ip from any to 127.0.0.0/8
>>300 deny ip from 127.0.0.0/8 to any
>А это лупбак, петлевой интерфейс, петля :))))

Я понимаю, что это лупбек, но не понимаю для чего эти 3 правила.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 15-Сен-07, 23:01 
Оказывается все не так просто.
Схема работает, но отсылает только на первую странице для данного ip.

Допустим, что внутренний адрес - 10.0.0.1.

прописываю правило
fwd 10.0.0.1,8080 tcp from 10.0.0.5 to not 10.0.0.0/16 80

если зайти на http://10.0.0.1 открывается основная страница (/www)
если зайти на http://10.0.0.1:8080 открывается нужная страница (/www/deny)

А если зайти на любой сайт открывается страница с /www.

И никак по другому не хочет.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от mixa email(??) on 16-Сен-07, 11:16 
Или я чего-то недоганяю или одно из двух.
Что значит зайти на любой сайт?
Кто заходит, должники? так они должны форвардиться на http://10.0.0.1:8080 и у них ничего другого открываться и не должно.
А остальным должен быть доступ куда угодно.

В конфиге апача виртуалхост на 8080 прописан? В ДНС запись сделана?
То есть должно быть типа так:

Кусок конфига апача
NameVirtualHost 10.0.0.1:80
<VirtualHost 10.0.0.1:80>
    DocumentRoot /usr/local/www/data
    ServerName server.ru
</VirtualHost>

<VirtualHost 10.0.0.1:80>
    ServerAdmin webmaster@serev.ru
    DocumentRoot /usr/local/www/vhost/dolg
    ServerName dolg.server.ru
    AddType application/x-tar .tgz
    Errorlog /var/log/apache/vhost/log/dolg/error_log
    Customlog /var/log/apache/vhost/log/dolg/access_log common
    DirectoryIndex index.html
</VirtualHost>

Создаем нужные директории для виртуалхоста
mkdir /usr/local/www/vhost/
mkdir /usr/local/www/vhost/dolg
mkdir /var/log/apache/vhost/
mkdir /var/log/apache/vhost/log/
mkdir /var/log/apache/vhost/log/dolg/
touch /var/log/apache/vhost/log/dolg/error_log
touch /var/log/apache/vhost/log/dolg/access_log common
touch /usr/local/www/vhost/dolg/index.html

ee /usr/local/www/vhost/dolg/index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<title>Dolg</title>
</head>
<body>
Если вы попали на эту страницу, значит у вас закончились деньги!

Доступ в тырнет перекрыт, ибо нефиг, если бабло кончилось!
</body>
</html>

В ДНС прописываем
$TTL    3600

@       IN      SOA     server.ru. root.l-n.ru.  (
                                20070915        ; Serial
                                3600    ; Refresh
                                900     ; Retry
                                3600000 ; Expire
                                3600 )  ; Minimum
                IN      NS      server.ru.
server.ru.      IN      A       10.0.0.1
dolg.server.ru. IN      A       10.0.0.1

И форвардим
fwd dolg.server.ru,80 tcp from 10.0.0.5 to any

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

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 16-Сен-07, 20:47 
>Или я чего-то недоганяю или одно из двух.
>Что значит зайти на любой сайт?
>Кто заходит, должники? так они должны форвардиться на http://10.0.0.1:8080 и у них
>ничего другого открываться и не должно.

В том то и загвоздка, что должны, а попадают на страницу http://10.0.0.1

>А остальным должен быть доступ куда угодно.
>
>В конфиге апача виртуалхост на 8080 прописан? В ДНС запись сделана?

Все есть. Реальный конфиг:

fwd deny.7up,8090 tcp from 192.168.1.5 to any dst-port 80

NameVirtualHost 10.62.4.1:80

<VirtualHost 10.62.4.1:80>
    DocumentRoot /www
    ServerName www.7up
</VirtualHost>

<VirtualHost 10.62.4.1:80>
    DocumentRoot /www/deny
    ServerName deny.7up
</VirtualHost>

<VirtualHost 10.62.4.1:8090>
    DocumentRoot /www/deny
    ServerName deny.7up
</VirtualHost>

nord# nslookup deny.7up
Server:         10.62.4.1
Address:        10.62.4.1#53

Name:   deny.7up
Address: 10.62.4.1


Так вот, если в бройзере написать
http://10.62.4.1:8090
http://deny.7up:8090
http://deny.7up

То открывается нужная страница из виртуалхоста с папкой /www/deny

А вот если в фаерволе зодать заветное правило
fwd deny.7up,8090 tcp from 192.168.1.5 to any dst-port 80
и поробовать с компа 192.168.1.5 зайти на любой сайт по попадаем на страницу с виртуалхоста с папкой /www.

Такое ощущение, что неладное на уровне форвардинга, а апач полусает нормальный запрос на нормальный 80 порт.

Да, еще, если вписать правило
ipfw add 39999 fwd deny.7up,8090 tcp from 192.168.1.5 to any 80

то в файерволе оно выглядит так

nord# ipfw list 39999
39999 fwd 10.62.4.1,8090 tcp from 192.168.1.5 to any dst-port 80

То есть домен не играет ни какой роли, форвардит все равно по ip адресу и порту.


Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от mixa email(??) on 16-Сен-07, 21:42 
Тогда может стоит проверить правила фаервола.
В лог их и посмотреть что, как и когда срабатывает.
Заворот залоченных юзверей должен происходить раньше, у тебя правило 39999, попробуй поставить 1 для проверки. У меня эти правила динамически добавляются и удаляются, но они идут самые первые, даже до ната.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 17-Сен-07, 09:53 

>Заворот залоченных юзверей должен происходить раньше,

Раньше чего?
У меня эти правила динамически добавляются и удаляются,
>но они идут самые первые, даже до ната.

Поставил 1, ничего не поменялось. Они ж то и раньше заворачивались.
Заворот как таковой работает, проблема только в том, что завернутые юзеры попадают не на нужную страницу, а на первую страницу для этого сервера.
Такое впечатление, что форвардит только на адрес, но не на порт.
Может нужно прописать обратный форвард, или что то подобное?

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

19. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от mixa email(??) on 17-Сен-07, 16:52 
>Такое впечатление, что форвардит только на адрес, но не на порт.

Ну тисипидампом посмотреть, чего заворачивается, чего форвардиться и чего отвечает


Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(ok) on 17-Сен-07, 22:05 
>>Такое впечатление, что форвардит только на адрес, но не на порт.
>
>Ну тисипидампом посмотреть, чего заворачивается, чего форвардиться и чего отвечает

Фрагмент с tcpdump:

nord# tcpdump -n -p -i ng12
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ng12, link-type NULL (BSD loopback), capture size 96 bytes
19:08:21.081580 IP 192.168.1.5.2612 > 83.222.2.183.80: S 1936915762:1936915762(0)

win 65535 <mss 1260,nop,nop,sackOK>
19:08:21.081739 IP 83.222.2.183.80 > 192.168.1.5.2612: S 3589609762:3589609762(0)

ack 1936915763 win 65535 <mss 1260,sackOK,eol>
19:08:21.084512 IP 192.168.1.5.2612 > 83.222.2.183.80: . ack 1 win 65535
19:08:21.085069 IP 192.168.1.5.2612 > 83.222.2.183.80: P 1:578(577) ack 1 win

65535
19:08:21.088445 IP 83.222.2.183.80 > 192.168.1.5.2612: P 1:1081(1080) ack 578 win

65535
19:08:21.254692 IP 192.168.1.5.2612 > 83.222.2.183.80: . ack 1081 win 64455
19:08:26.088131 IP 83.222.2.183.80 > 192.168.1.5.2612: F 1081:1081(0) ack 578 win

65535
19:08:26.088803 IP 192.168.1.5.2612 > 83.222.2.183.80: . ack 1082 win 64455
19:08:34.599565 IP 192.168.1.5.2612 > 83.222.2.183.80: F 578:578(0) ack 1082 win

64455
19:08:34.599671 IP 83.222.2.183.80 > 192.168.1.5.2612: . ack 579 win 65534
19:08:34.711325 IP 192.168.1.5.2614 > 83.222.2.183.80: S 3489506131:3489506131(0)

win 65535 <mss 1260,nop,nop,sackOK>
19:08:34.711438 IP 83.222.2.183.80 > 192.168.1.5.2614: S 595686264:595686264(0)


Красиво так с 80 порта попросил, и так же, как ни в чем не бывало из 80 получил обратно.
Это при включеном форвардинге, пользователь (ip 192.168.1.5) ввел в броузере mail.ru и получил все ту же первую страничку с 10.62.4.1 (или 192.168.1.1, это одно и то же).

Мне действительно хочется разобраться, какие пакеты куда идут, и что с ними при этом происходит.

У меня стоит ipnat, но я не думаю, что это из за него.

p.s.:
Правило выглядело так
nord# ipfw add 1 fwd 192.168.1.1:88 tcp from 192.168.1.5 to any 80

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

21. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от freeGHost email(??) on 06-Авг-08, 17:57 
>Такое впечатление, что форвардит только на адрес, но не на порт.

Отчасти, это действительно так. Если открыть man ipfw, раздел fwd, мы увидим (перевод вольный):

fwd | forward ipaddr[,port]
Принудительно задает маршрут следующего прыжка для пакета, удовлетворяющего определенным условиям, на некий хост, обозначаемый IP-адресом или именем хоста. Последующий правила для такого пакета игнорируются.
Если параметр ipaddr задает локальный (то есть принадлежащий этой же машине) адрес, пакет может быть перенаправлен на заданый порт (если порт не указан в правиле, его номер берется из заголовка пакета).
Если параметр ipaddr задает не локальный адрес, заданый в правиле номер порта будет проигнорирован, а пакет будет перенаправлен на заданый адрес в соответствии с локальной таблицей маршрутизации.
Правило fwd не работает с layer-2 пакетами (которые получены от ether_input, ether_output, or bridged).
Действия правила fwd не изменяют содержимое пересылаемых пакетов. В частности остается неизмененным адрес назначения, таким образом пакеты, отправленные другой системе, скорее всего, будут отклонены, если в системе не предусмотрена обработка таких пакетов.

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

22. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(??) on 06-Авг-08, 21:40 
>[оверквотинг удален]
>пакет может быть перенаправлен на заданый порт (если порт не указан
>в правиле, его номер берется из заголовка пакета).
>Если параметр ipaddr задает не локальный адрес, заданый в правиле номер порта
>будет проигнорирован, а пакет будет перенаправлен на заданый адрес в соответствии
>с локальной таблицей маршрутизации.
>Правило fwd не работает с layer-2 пакетами (которые получены от ether_input, ether_output,
>or bridged).
>Действия правила fwd не изменяют содержимое пересылаемых пакетов. В частности остается неизмененным
>адрес назначения, таким образом пакеты, отправленные другой системе, скорее всего, будут
>отклонены, если в системе не предусмотрена обработка таких пакетов.

Спасибо. Я тогда хорошо повозился пытаясь настроить.
Настроил кривовато. Все редиректится на основную страницу сайта, а там php скрипт смотрит куда юзер шел, и показывает соответствующую страницу.
Сейчас вот почитал и думаю переделать с lo1, lo2 ... и виртуальными хостами для них.

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от ARH665 email(ok) on 04-Фев-11, 08:22 
спасибо за информацию! завернул при помощи нескольких виртуальных хостов для разных IP адресов, редиректить на порт так и не вышло :(
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

24. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от ARH665 email(ok) on 07-Фев-11, 23:32 
> Настроил кривовато. Все редиректится на основную страницу сайта, а там php скрипт
> смотрит куда юзер шел, и показывает соответствующую страницу.

скажите, скрипт у вас сохранился? можете показать?


Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

25. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(??) on 08-Фев-11, 13:55 
>> Настроил кривовато. Все редиректится на основную страницу сайта, а там php скрипт
>> смотрит куда юзер шел, и показывает соответствующую страницу.
> скажите, скрипт у вас сохранился? можете показать?

К сожалению не нашел.


Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

26. "Перенаправлять всех на одну и ту же страницу"  +/
Сообщение от Lgo email(??) on 08-Фев-11, 13:58 
Там совершенно примитивный код, выполненый стандартными средствами php.
Я не думаю, что у вас будут проблемы с написанием чего то подобного.

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру