LINUX.ORG.RU
ФорумAdmin

Как перенаправить весь трафик 80го порта на локальную страничку?

 , ,


1

2

Ситуация такая: Есть сервер с сетевым интерфейсом. К интерфейсу подключен хаб (неуправляемый). Клиенты открывают браузер и должны в независимости от своих настроек увидеть мою страничку с этого же сервера. Короче говоря, классический captive portal, но без требухи с авторизацией, изменения режима роутинга и т.п.

Я это делаю так: dhcp раздает клиентам адреса и предлагает воспользоваться локальным днс bind на все запросы отвечает адресом сервера iptables перенаправляет все пакеты с dstport=80 или 443 на 80й порт моего сервера А если dns у клиента прописан? iptables перенаправляет все пакеты с dstport=53 на локальный bind

Без iptables обойтись вряд ли получится, а вот bind не хотелось бы поднимать. Может есть еще какие-то варианты?

Вообще, круто было бы какой-нибудь готовый скриптец раздобыть.


Ты же уже перенапраляешь трафик при помощи netfilter/iptables, что тебе еще надо?

anonymous
()
Ответ на: комментарий от fv

Так пускай идет, пропусти его во внешку, потом все равно их перенаправит.

А вообще, наверное, с биндом самый правильный вариант будет.

anonymous
()

Клиенты ходят в интернеты через этот сервер? Тогда просто подменяй адрес назначения на свой для всех пролетающих через тебя пакетов на 80 порт.
Если трафик идёт не через тебя то либо настраивай тот сервак через который идёт трафик, либо что-то вроде описанного тобой.

MrClon ★★★★★
()
Ответ на: комментарий от anonymous

Не, к внешним днс пускать нереально. Как бы так по хитрому перехватить все dns запросы и ответить на них айпишником сервера?

fv
() автор топика
Ответ на: комментарий от beastie

Зачем bind?

Браузер предпочитает сперва порезолвить хостнэйм в ip. Только потом начинает ломиться на http порты. Надо, чтобы браузер думал, что с dns он успешно пообщался.

fv
() автор топика
Ответ на: комментарий от fv

Роутер под твоим контролем?

Если да, то тебе уже сказали: весь поступающий на роутер трафик с портом назначения 80 независимо от айпишника перенаправляешь на свой хттп сервер. Для надёжности все остальные порты блокируешь, если что отвалится нужное — будешь открывать по одному.

Вот фрагмент моих иптаблиц тебе в руки:

*nat
-A PREROUTING -i p1p1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:8118
-A POSTROUTING -o p20p1 -j MASQUERADE
COMMIT

p1p1 — интерфейс к локальной сетке. p20p1 — интерфейс во внешнюю сеть. Весь поступающий тцп трафик с портом назначения 80 перенапрявляется на (в моём случае) прокси. Ничто не мешает тебе вместо прокси поднять свой веб-сервер.

debugger ★★★★★
()
Ответ на: комментарий от debugger

А с днс-то как быть? Если клиент свой хостнэйм не порезолвит, то на 80й порт он ничего слать не будет, нет?

fv
() автор топика
Ответ на: комментарий от fv

А с днс-то как быть?

Не понял. Сейчас-то какой ДНС? Чужой? Работает? Вот его и оставить. Не работает? Настроить, чтоб работал.

debugger ★★★★★
()
Ответ на: комментарий от fv

Пока не разобрался? Окей, тебе, как ты сказал, нужно что-то отвечать клиентам на их рекурсивные dns-запросы. С данной задачей идеально справляется dns сервер (неудивительно, т.к. для решения этой задачи их и писали). Следовательно, тебе он и нужен!

Если боишься сложности настройки бинда, то поставь dnsmasq, он попроще.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.