2014-11-21 187 views
3

我想充当代理服务器,我希望如果可能的话管理来自第2层或第3层的接收数据包,我正在努力与最基本的,我不能得到这个工作,我告诉你,我做什么:基本Netfilterqueue使用Python

这是我的代码(proxda.py)

from netfilterqueue import NetfilterQueue 

def print_and_accept(pkt): 
    print pkt 
    pkt.accept() 

nfqueue = NetfilterQueue() 
nfqueue.bind(1, print_and_accept) 
try: 
    nfqueue.run() 
except KeyboardInterrupt: 
    print 

的代码已经直接取自Python文档:https://pypi.python.org/pypi/NetfilterQueue/0.3

这是iptable规则我配置:

iptables -I INPUT -d 173.16.0.229 -j NFQUEUE --queue-num 1 

的想法是所有发往173.16.0.229的流量都到我的节目

而且这是该方案,就这么简单: 我做平从173.16.0.236到173.16.0.229,而我的计划proxa .py正在运行,我没有捕获任何东西。

任何想法,我失败的地方,以及如何调试/得到这个工作?

预先感谢您。

回答

0

我问自己,问题是iptables的规则,我的IP是173.16.0.236,我正在过滤传入的流量到173.16.0.229。 只需通过改变:

iptables -I INPUT -d 173.16.0.229 -j NFQUEUE --queue-num 1 

to: iptables -I OUTPUT -d 173.16.0.229 -j NFQUEUE --queue-num 1 

or to : iptables -I INPUT -d 173.16.0.236 -j NFQUEUE --queue-num 1. 

小心与上线,因为所有的输入流量,我们的机器是要NFQUEUE,于我而言,这是一个灾难,因为I'm连接通过ssh和连接会分手。 我用的例子是这个规则:

iptables -I OUTPUT -s 173.16.0.236 -p tcp --dport 80 -j NFQUEUE --queue-num 1