Получение исходного пункта назначения из iptables после REDIRECT - PullRequest
7 голосов
/ 29 июня 2011

Я пишу прокси приложения для общего использования.

Я хочу использовать это в качестве прозрачного прокси, где мой первоначальный план состоит в том, чтобы использовать iptables с правилом REDIRECT для пересылки всех подключений к моему прокси приложения.

Проблема здесь, конечно, в том, что мой прокси приложения теряет информацию о предполагаемом месте назначения.

Можно ли запросить iptables для получения изначально предполагаемого получателя? Любое другое возможное решение этой проблемы также приветствуется!

1 Ответ

10 голосов
/ 02 июля 2011

Возможно, это то, что вы искали?

http://www.network -builders.com / iptables-redirect-original-destination-ip-t69515.html

Прочтите параметр SO_ORIGINAL_DST сокета TCP.
Или найдите таблицу отслеживания соединений в /proc/net/ip_conntrack.

#include <linux/netfilter_ipv4.h>

struct sockaddr_in addr;
bzero((char *) &addr, sizeof(addr));
addr.sin_family = AF_INET;
socklen_t addr_sr = sizeof(addr);
getsockopt(fd, SOL_IP, SO_ORIGINAL_DST, &addr, &addr_sz );

Я думаю, что вы должныпреобразовать это в нечто подобное для python.

...