2011-06-29 31 views
5

Tôi đang viết một proxy ứng dụng để sử dụng chung.Truy xuất đích ban đầu từ iptables sau khi REDIRECT

Tôi muốn sử dụng proxy này làm proxy minh bạch, trong đó kế hoạch ban đầu của tôi là sử dụng iptables với quy tắc REDIRECT chuyển tiếp tất cả các kết nối đến proxy ứng dụng của tôi.

Vấn đề ở đây tất nhiên là proxy ứng dụng của tôi mất thông tin về đích dự định.

Có thể truy vấn iptables để truy xuất người nhận dự định ban đầu không? Bất kỳ giải pháp khả thi nào khác cho vấn đề này cũng được đánh giá cao!

Trả lời

7

Có lẽ đây là những gì bạn đang tìm kiếm?

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

Đọc lựa chọn SO_ORIGINAL_DST của socket TCP.
Hoặc tra cứu bảng theo dõi kết nối trong/proc/net/ip_conntrack.

#include <linux/netfilter_ipv4.h> 

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

Tôi nghĩ rằng bạn sẽ có thể chuyển đổi đó để một cái gì đó tương tự cho python.

+0

Hoạt động như một sự quyến rũ, cảm ơn –

Các vấn đề liên quan