Редирект с сайтов (запрет однокласников)
Модераторы: SLEDopit, Модераторы разделов
-
RedOctober
- Сообщения: 17
Редирект с сайтов
Сопсно вопрос такой, как с помощью iptables можно сделать так, чтобы человек заходя на одноклассники перебрасывалсо автоматически
на страницу локального веб-сервера или другую страницу (например с надписью " Посещение сайта в рабочее время запрещенно")
Как просто запретить -понятно:
iptables -t filter -D FORWARD -p tcp -s 10.0.0.0/24 -d 81.19.66.70 --dport 80 -j DROP
Эта цепочка просто недаёт ходить по 80 порту на doktor.ru а как сделать более красиво с редиректом?
на страницу локального веб-сервера или другую страницу (например с надписью " Посещение сайта в рабочее время запрещенно")
Как просто запретить -понятно:
iptables -t filter -D FORWARD -p tcp -s 10.0.0.0/24 -d 81.19.66.70 --dport 80 -j DROP
Эта цепочка просто недаёт ходить по 80 порту на doktor.ru а как сделать более красиво с редиректом?
-
Mage-Warrior
- Сообщения: 869
- Статус: Семь раз понюхай, один раз откуси!
- ОС: SlackWare 12.1
Re: Редирект с сайтов
С помощью iptables вы можете перенаправить на другой или тот же порт собственной машины/сервера:
iptables -t nat -A PREROUTING -p tcp -s 10.0.0.0/24 -d 81.19.66.70 --dport 80 -j DNAT --to-destination [local_lan_ip]:[dport]
Где-то так. При этом пакет идущий на указанный адрес будет перенаправлен на [local_lan_ip]. Конечно, тогда следует учесть, что какое-то программное обеспечение должно ожидать этого и в нужный момент вернуть html-страницу. Это может быть squid с redirector-ом, например. Или что-нибудь ещё легче (для одной страницы с одной строчкой держать squid нерационально). Если запрос подхватит локальный веб-сервер, то без нужного преобразования по сути он должен просто отобразить свою 404 страницу.
А лучше вообще всех сразу пускать через squid, то есть замутить нормальный кэширующий proxy. Кстати, squid, хотя и имеет море возможных настроек, но реально для его простейшей работы достаточно всего 10-15 строчек.
Всё, что могу посоветовать.
iptables -t nat -A PREROUTING -p tcp -s 10.0.0.0/24 -d 81.19.66.70 --dport 80 -j DNAT --to-destination [local_lan_ip]:[dport]
Где-то так. При этом пакет идущий на указанный адрес будет перенаправлен на [local_lan_ip]. Конечно, тогда следует учесть, что какое-то программное обеспечение должно ожидать этого и в нужный момент вернуть html-страницу. Это может быть squid с redirector-ом, например. Или что-нибудь ещё легче (для одной страницы с одной строчкой держать squid нерационально). Если запрос подхватит локальный веб-сервер, то без нужного преобразования по сути он должен просто отобразить свою 404 страницу.
А лучше вообще всех сразу пускать через squid, то есть замутить нормальный кэширующий proxy. Кстати, squid, хотя и имеет море возможных настроек, но реально для его простейшей работы достаточно всего 10-15 строчек.
Всё, что могу посоветовать.
*- Большинство проблем, дружок, завсегда покажет лог! -*
-
HRonik
- Сообщения: 140
- ОС: Debian
Re: Редирект с сайтов
Mage-Warrior писал(а): ↑07.05.2008 08:25С помощью iptables вы можете перенаправить на другой или тот же порт собственной машины/сервера:
iptables -t nat -A PREROUTING -p tcp -s 10.0.0.0/24 -d 81.19.66.70 --dport 80 -j DNAT --to-destination [local_lan_ip]:[dport]
Где-то так. При этом пакет идущий на указанный адрес будет перенаправлен на [local_lan_ip]. Конечно, тогда следует учесть, что какое-то программное обеспечение должно ожидать этого и в нужный момент вернуть html-страницу. Это может быть squid с redirector-ом, например. Или что-нибудь ещё легче (для одной страницы с одной строчкой держать squid нерационально). Если запрос подхватит локальный веб-сервер, то без нужного преобразования по сути он должен просто отобразить свою 404 страницу.
А лучше вообще всех сразу пускать через squid, то есть замутить нормальный кэширующий proxy. Кстати, squid, хотя и имеет море возможных настроек, но реально для его простейшей работы достаточно всего 10-15 строчек.
Всё, что могу посоветовать.
(про выделенное)
Разве это должен делать прокси-сервер?
помоему это работа для apache?..
А в идеале конечно, лучше настроить squid с каким-нибудь редиректом, ведь если еще что-нибудь кроме однакласников закрыть понадобится, еще одну строку в iptables добавлять? помоему не-рационально)))
-
Mage-Warrior
- Сообщения: 869
- Статус: Семь раз понюхай, один раз откуси!
- ОС: SlackWare 12.1
Re: Редирект с сайтов
HRonik писал(а): ↑07.05.2008 10:27Разве это должен делать прокси-сервер?
помоему это работа для apache?..
А в идеале конечно, лучше настроить squid с каким-нибудь редиректом, ведь если еще что-нибудь кроме однакласников закрыть понадобится, еще одну строку в iptables добавлять? помоему не-рационально)))
Несомненно прав! Я привел лишь пример, причем, не очень прямой
Я тоже за squid с rejik-ом.
*- Большинство проблем, дружок, завсегда покажет лог! -*
-
RedOctober
- Сообщения: 17
Re: Редирект с сайтов
Спасибо большое, именно то что надо но последний вопрос где хранятся записи например
это iptables -t filter -D FORWARD -p tcp -s 10.0.0.0/24 -d 81.19.66.70 --dport 80 -j DROP храницо вы таблице FORWARD которую я лекко могу просмотреть iptables -L FORWARD а PREROUTING нет где это можно выудить? (например при написании скрипта надо чтоп проводил проверку либо потом выводил сделанно или нет
)
это iptables -t filter -D FORWARD -p tcp -s 10.0.0.0/24 -d 81.19.66.70 --dport 80 -j DROP храницо вы таблице FORWARD которую я лекко могу просмотреть iptables -L FORWARD а PREROUTING нет где это можно выудить? (например при написании скрипта надо чтоп проводил проверку либо потом выводил сделанно или нет
)
-
Mage-Warrior
- Сообщения: 869
- Статус: Семь раз понюхай, один раз откуси!
- ОС: SlackWare 12.1
Re: Редирект с сайтов
Почти угадал со строкой
iptables -t nat -L PREROUTING
iptables -t nat -L PREROUTING
*- Большинство проблем, дружок, завсегда покажет лог! -*
-
RedOctober
- Сообщения: 17
Re: Редирект с сайтов
Спасибо получилось нечто такоее:
По крайней мере не особо напрягаясь можно разблокировать\заблокировать определённые сайты
Конечно умнее было бы поднять проксю на серваке и тд, но из за отсутствия практического опыта пока не представляетсо возможным
Кстати в начале скрипта можно сделать nslookup odnoklassniki.ru чтоб потом , после выполнения скрипта, когда выводится таблица forward увидеть что именно то что нужно заблокировванно.
Спасибо огромное тем кто помог советом.
Код: Выделить всё
bin/sh
echo "Начало работы....."
echo "Редирект одноклассников"
echo "Используйте 1-разблокировать, 2-заблокировать"
read wtd
case "$wtd" in
1)
act="-D"
message="Разблокированно!"
;;
0)
act="-A"
message="Заблокированно!"
;;
*)
echo "Usage: {start|stop}"
sleep 5
exit 1
esac
iptables -t nat $act PREROUTING -p tcp -s 10.0.0.0/24 -d 81.177.141.135 --dport 80 -j DNAT --to-destination 10.0.0.1:80
iptables -t nat $act PREROUTING -p tcp -s 10.0.0.0/24 -d 81.177.141.137 --dport 80 -j DNAT --to-destination 10.0.0.1:80
iptables -t nat $act PREROUTING -p tcp -s 10.0.0.0/24 -d 81.177.141.207 --dport 80 -j DNAT --to-destination 10.0.0.1:80
iptables -t nat $act PREROUTING -p tcp -s 10.0.0.0/24 -d 81.177.141.209 --dport 80 -j DNAT --to-destination 10.0.0.1:80
echo "Готово!"
echo "Вывожу таблицу PREROUTING"
iptables -t nat -L PREROUTING
sleep 5По крайней мере не особо напрягаясь можно разблокировать\заблокировать определённые сайты
Конечно умнее было бы поднять проксю на серваке и тд, но из за отсутствия практического опыта пока не представляетсо возможным
Кстати в начале скрипта можно сделать nslookup odnoklassniki.ru чтоб потом , после выполнения скрипта, когда выводится таблица forward увидеть что именно то что нужно заблокировванно.
Спасибо огромное тем кто помог советом.
-
tramX
- Сообщения: 200
Re: Редирект с сайтов
а как сделать чтоб через инет шлюз к локальному серверу контры подключались? Например к шлюзу прикреплен домен csgame.net и сетевуха которая смотрит в сеть имеет ip 192.168.4.1 а на локальной машине 192.168.4.2 запушен сервер контры на 27015 порту. нужно перенаправить с домена на локальный ip.
-
Mage-Warrior
- Сообщения: 869
- Статус: Семь раз понюхай, один раз откуси!
- ОС: SlackWare 12.1
Re: Редирект с сайтов
tramX писал(а): ↑07.05.2008 13:15а как сделать чтоб через инет шлюз к локальному серверу контры подключались? Например к шлюзу прикреплен домен csgame.net и сетевуха которая смотрит в сеть имеет ip 192.168.4.1 а на локальной машине 192.168.4.2 запушен сервер контры на 27015 порту. нужно перенаправить с домена на локальный ip.
В таком случае нужно воспользоваться MASQUERADE. Но говорят, что его использование не экономит ресурсы. Так что рекомендую такое:
Предположим, что у Вас внешний IP 105.13.120.120, а eth2 - интервейс в глобальную сеть...
Код: Выделить всё
iptables -P FORWARD DROP
iptables -t nat -A PREROUTING -t tcp,udp -d 105.13.120.120 --dport 27015 -i eth2 -j DNAT --to-destination 192.168.4.2
iptables -t nat -A POSTROUTING -t tcp,udp -s 192.168.4.2 -o eth2 -j SNAT --to-source 105.13.120.120
iptables -A FORWARD -p tcp,udp -i eth2 -d 192.168.4.2 -j ACCEPT
iptables -A FORWARD -p tcp,udp -o eth2 -s 192.168.4.2 -j ACCEPTВроде бы так. Куда приткнуть эти правила - решать Вам в соответствии с существующими правилами на сервере.
*- Большинство проблем, дружок, завсегда покажет лог! -*
-
tramX
- Сообщения: 200
Re: Редирект с сайтов
У меня внешний IP Динамический. Это нужно будет каждый раз узнавать какой у меня внешний IP
Если я напишу так
iptables -t nat -A PREROUTING -t tcp,udp -d csgame.net --dport 27015 -i eth2 -j DNAT --to-destination 192.168.4.2 будет работать?
Если я напишу так
iptables -t nat -A PREROUTING -t tcp,udp -d csgame.net --dport 27015 -i eth2 -j DNAT --to-destination 192.168.4.2 будет работать?
-
Mage-Warrior
- Сообщения: 869
- Статус: Семь раз понюхай, один раз откуси!
- ОС: SlackWare 12.1
Re: Редирект с сайтов
Нет, не будет. Если ip-адрес динамический, то правильнее использовать MASQUERADE. В таком случае правила становятся такими:
Код: Выделить всё
iptables -P FORWARD DROP
iptables -t nat -A PREROUTING -t tcp,udp --dport 27015 -i eth2 -j DNAT --to-destination 192.168.4.2
iptables -t nat -A POSTROUTING -t tcp,udp -s 192.168.4.2 -o eth2 -j MASQUERADE
iptables -A FORWARD -p tcp,udp -i eth2 -d 192.168.4.2 -j ACCEPT
iptables -A FORWARD -p tcp,udp -o eth2 -s 192.168.4.2 -j ACCEPTМы убрали внешний IP из правила PREROUTING (основываемся на том, что на интерфейсе один IP). Заодно заменили SNAT во втором правиле (POSTROUTING) на MASQUERADE, получая при этом динамическое и автоматическое определение IP исходящего интерфейса eth2 и подстановки его в адрес источника пакета.
*- Большинство проблем, дружок, завсегда покажет лог! -*
-
Voler
- Сообщения: 498
- ОС: Fedora
Re: Редирект с сайтов
Сквид вам хорошо поможет в связке с squidGuard. Я тоже раньше делал с помощью iptables, но лучше вске таки сквид.
-
MOPO3
- Сообщения: 7
- ОС: Mandriva 2007
Re: Редирект с сайтов
RedOctober писал(а): ↑07.05.2008 07:43Сопсно вопрос такой, как с помощью iptables можно сделать так, чтобы человек заходя на одноклассники перебрасывалсо автоматически на страницу локального веб-сервера или другую страницу
Не iptables конечно, но можно попробовать изменением файла /etc/hosts
строки в нем
88.212.295.226 www.odnoklasniki.ru
88.212.295.226 odnoklasniki.ru
88.212.295.226 www.odnoklassniki.ru
88.212.295.226 odnoklassniki.ru
будут перебрасывать пользователя на этот форум. Поменяв 88.212.295.226 на ваш адрес локального сайта будет перебрасывать на локальный сайт.
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: Редирект с сайтов
MASQUERADE тут вообще не нужен (если эта тачка - шлюз, в чем я уверен на 99,9%)Mage-Warrior писал(а): ↑07.05.2008 14:29В таком случае нужно воспользоваться MASQUERADE. Но говорят, что его использование не экономит ресурсы.
Mage-Warrior писал(а): ↑07.05.2008 14:29Так что рекомендую такое:
Предположим, что у Вас внешний IP 105.13.120.120, а eth2 - интервейс в глобальную сеть...
Код: Выделить всё
iptables -P FORWARD DROP iptables -t nat -A PREROUTING -t [b]tcp[/b],udp -d 105.13.120.120 --dport 27015 -i eth2 -j DNAT --to-destination 192.168.4.2 iptables -t nat -A POSTROUTING -t tcp,udp -s 192.168.4.2 -o eth2 -j SNAT --to-source 105.13.120.120 iptables -A FORWARD -p tcp,udp -i eth2 -d 192.168.4.2 -j ACCEPT iptables -A FORWARD -p tcp,udp -o eth2 -s 192.168.4.2 -j ACCEPT
1) Там только udp.
2) POSTROUTING не нужен (опять-же если эта тачка - шлюз)
Если у тебя динамический ip - то ты даже ping csserver.ru не сможешь сделать, т.к. каждый день тебе нужно будет менять в зоне ДНС ip-адрес на тот, который у тебя будет завтра, а ты этого не можешь узнать, пока это "завтра" не наступит
Придется покупать тебе постоянный внешний ip, либо каждый раз узнавать свой ip.