LINUX.ORG.RU

Не уходят пакеты с установленным ACK, PSH+ACK


0

1

Доброго времени суток всем !

есть модуль ядра написанный на Си который ловит пакеты на 80 порт, анализирует GET запрос (т.е. пропускает 3 пакета handshakе т.к. они не несут нагрузки и неизвестно к какой страничке/сайту в конечном итоге пойдёт запрос) и принимает решение дропнуть или пропустить пакет.

задача: хотелось-бы чтоб пакет не просто дропался модулем(на стороне пользователя это выглядит будто сайт просто лёг) а возвращалась страничка с описанием почему доступ закрыт.

сейчас пробую сделать это дело след образом

1 - модуль ядра, при запрещённом GET, шлёт через netlink в userspase следующую структуру

struct helper_data{
    __u32 saddr;
    __u32 daddr;
    __u16 sport;
    __u16 dport;
    __u32 SEQb;
    __u32 ACKb;
};

2 - в userspase демон эту структуру ловит и по идее(судя по анализу с wireshark) должен отправить 2 пакета, ACK (seq=ACKb, ack_seq=345) и ACK(seq=ACKb, ack_seq=345)+PSH+нагрузка(HTTP ответ), соответственно выставив адреса, порты, посчитав контрольную сумму TCP.

но пакеты с выставленный ACK и ACK+PSH не отправляются (tcpdump на сервере и wireshark на клиенте не видят их), при этом sendto ошибок не возвращает.

далее попробовал проанализировать, отправляются пакеты PSH, FIN+ACK, SIN+ACK, RST, и остальные вменяемые и невменяемые связки

при этом если saddr поставить левый и выставить seq из присланной модулем структуры и новый ack_seq, то пакеты отправляются и принимаются, но при этом tcpdump говорит что seq и ack_seq установлены в 1 а не в те значения что я выставил

window в пакете ставлю заведомо больше значений seq и ack_seq

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

заранее благодарен за помощь !

да, чуть не забыл, сервер CentOS 6.4 клиент WinXp SP3 оба в VirtualBox

В текущем описании непонятно зачем вообще нужен модуль ядра и такие изващения с передачами TCP-соединения между kernel и userspace.

по поводу основной проблемы:

Не уходят пакеты с установленным ACK, PSH+ACK

вместо своего длинного описания проблемы, составь минимальный код, который отправляет нужный пакет. Покажи этот код, и спроси: «Почему не работает?»

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