LINUX.ORG.RU
ФорумAdmin

TCP+HTTP


0

0

Можно ли iptables заставить различать HTTP пакеты от всех остальных, или это глупая затея?
Объясню: есть 1 открытый наружу порт, на него повещен один сервис, хотелось бы различать
и переадресовывать внутрь запросы к веб-серверу.

★★

> есть 1 открытый наружу порт
какой из тех 65535? ;)

на него повещен один сервис

что за сервис, и какое он имеет отношение к HTTP?

пока что весь вопрос очень смахивает на один детский стишок. цитирую: «по реке плывет кирпич, деревянный, как стекло. ну и пусть себе плывет - нам не нужен пенопласт!»

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

:)
Ну все очень просто, есть на внешнем интерфейсе, на одном открытом порте УЖЕ висит сервис, который к HTTP
никакого отношения не имеет, можно ли на уровне iptables, где-то на уровне при приемке пакета различить
относится к HTTP или нет, чтоб можно было пробросить это на внутренние интерфейсы?

Сори, познания TCP/IP - поверхностные

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

так этааа... а есть большая вероятность, что хттп трафик будет не на 80 или 443 портах? может, просто сразу пробросить их? ;)

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

http://l7-filter.sourceforge.net/

Спасибо большое за подкинутое готовое решение, почитал wiki и погуглил, «то l7 после того как один раз определил тип протокола, запоминает его для этого соединения и на все последующие запросы для этого соединения отвечает этим типом.» - но говорят есть проблемы, и что определяются только первые пакеты...

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

У тебя порт на хттп постоянно меняется шоле?

Да нет:
на машине есть 2 интерфейса: 1 внешний и 1 внутренний.
на внешнем открыт только 1 порт, другой открыть нельзя, этот порт занят, скажем ssh.
Я хочу фильтровать пакеты так, чтобы HHTP запросы на внешний интерфейс маркировались и уходили на внутренний.

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

О как хитро :)
Т.е. ты хочешь добавить в PREROUTING некое правило, которое будет выбирать HTTP пакеты и делать им DNAT на сервер внутри?
Тогда L7-фильтр, без вариантов. HTTP траффик довольно легко обнаруживается, это вам не торрент, так что я думаю проблем не будет.

blind_oracle ★★★★★
()

Нет, нельзя.

Любые NAT-операции netfilter'а всегда производятся начиная с первого пакета в соединении (и это правильно, ибо от пробрасывания куска соединения толку никакого). В случае TCP это SYN-пакет, а по нему определить протокол L7 нереально.

Задача должна решаться средствами L7. Например, nginx. Или самописной проксей, если все сложно.

Впрочем, если известны списки адресов, устанавливающих соединения того или иного типа, или какие-то другие критерии L3-4, то эту задачу можно решить и netfiler'ом.

anonymous
()

Просто не делай так.

power
()

> Объясню: есть 1 открытый наружу порт, на него повещен один сервис, хотелось бы различать и переадресовывать внутрь запросы к веб-серверу.

Имхо не могут две программы одновременно слушать один порт.

Если просто надо наружу ровно один порт выставить и гонять через него всё, то нужен VPN. Любой какой сможешь настроить, это не принципиально. Чтобы на постоянно два сервера прикурить лучше openvpn или ipsec. Чтобы с одиночного компа иногда подключаться - pptpd.

Если просто надо чтобы через 80 порт не проходило ничего кроме http, то редирект порта и squid.

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