2014-11-21 186 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