2011-06-27 7 views
16

से सभी ट्रैफ़िक अग्रेषित करें मैं पोर्ट 6999 से पोर्ट 7000 तक सभी ट्रैफ़िक अग्रेषित करने की कोशिश कर रहा हूं (मुझे पता है कि मैं iptables का उपयोग कर सकता हूं, लेकिन विचार कुछ करने के लिए Node.js का उपयोग करना है पैकेट निरीक्षण)।Node.js - पोर्ट ए से पोर्ट बी

var net=require('net'); 
var compress=require('./node-compress/compress'); 

var ip='172.16.1.224'; 
var ipPort=6999; 
var opPort=7000; 

var output=net.createServer(function(connOut){ 
     var input=net.createServer(function(connIn){ 
       connIn.pipe(connOut); 
     }); 
     input.listen(ipPort,ip); 
}); 
output.listen(opPort,ip); 

यह सिर्फ काम करने के लिए प्रतीत नहीं होता:

यहाँ कोड मैं sofar है। जब मैं पोर्ट 7000 पर एक टीसीपीडम्प करता हूं, तो कुछ भी दिखाई नहीं देता है। किसी के पास कोई सुझाव है?

अग्रिम में बहुत धन्यवाद,

उत्तर

25

यहाँ मेरी जाने है इसे का उपयोग करें।

var net = require('net'); 

// parse "80" and "localhost:80" or even "42mEANINg-life.com:80" 
var addrRegex = /^(([a-zA-Z\-\.0-9]+):)?(\d+)$/; 

var addr = { 
    from: addrRegex.exec(process.argv[2]), 
    to: addrRegex.exec(process.argv[3]) 
}; 

if (!addr.from || !addr.to) { 
    console.log('Usage: <from> <to>'); 
    return; 
} 

net.createServer(function(from) { 
    var to = net.createConnection({ 
     host: addr.to[2], 
     port: addr.to[3] 
    }); 
    from.pipe(to); 
    to.pipe(from); 
}).listen(addr.from[3], addr.from[2]); 

(proxy.js के रूप में बचाने के लिए)

स्थानीय होस्ट से अग्रेषित करने के लिए: 9001 => स्थानीय होस्ट: 80

$ node proxy.js 9001 80 

या स्थानीय होस्ट: 9001 => otherhost: 80

$ node proxy.js 9001 otherhost:80 

(यह एंड्री के उत्तर पर आधारित था, धन्यवाद!)

+0

यह शानदार है। धन्यवाद! –

4

आप Node.js मॉड्यूल Hoxy को देखा है? डेवलपर के README से

http://www.youtube.com/watch?v=2YLfBTrVgZU

त्वरित विवरण:

Hoxy Node.js, वेब डेवलपर्स द्वारा इस्तेमाल के इरादे के लिए एक वेब हैकिंग प्रॉक्सी है। होक्सी का उपयोग करके, आप सशर्त नियमों के एक सेट के आधार पर "मध्य में आदमी" के रूप में कार्य कर सकते हैं और HTTP अनुरोधों और प्रतिक्रियाओं को बदल सकते हैं। एक चल रही प्रक्रिया के रूप में, होक्सी अन्यथा एक स्टैंडअलोन प्रॉक्सी सर्वर की तरह व्यवहार करता है। होक्सी को फायरबग जैसे डिबगर्स के पूरक के रूप में प्रेरित किया गया था, जो आपको क्लाइंट रनटाइम में हेरफेर करने देता है लेकिन अंतर्निहित HTTP वार्तालाप नहीं करता है।

यह बहुत अच्छी तरह से जब तक आप एक निचले स्तर के लिए देख रहे काम करना चाहिए, पैकेट डेटा के निरीक्षण के पैकेट।

+0

अरे, आपकी प्रतिक्रिया के लिए धन्यवाद। मैं अभी हॉक्सी पर एक नज़र डालने जा रहा हूं। मैं ImageMagick का उपयोग कर सभी छवियों को संपीड़ित और डाउन-नमूना करने की भी उम्मीद कर रहा हूं। यह उपग्रह लिंक पर उपयोग के लिए है ... – Eamorr

+0

कोई समस्या नहीं :) मुझे यह बताएं कि यह ऐसा कुछ है जिसे आप ढूंढ रहे हैं या यदि आपको कुछ और अधिक सुगंधित या टीसीपी सॉकेट के लिए और HTTP डेटा नहीं चाहिए। मेरे लिए कुछ स्थितियों में होक्सी लाइफसेवर रहा है। – slickplaid

+0

आप नहीं जानते होंगे कि मैं होक्सी का उपयोग करके सभी छवियों को कैसे निकालेगा, क्या आप? मैं उन्हें सभी को संपीड़ित करना चाहता हूं ... मुझे आशा है कि यह करने के लिए पर्याप्त सरल है ... – Eamorr

12

आपको एक तरफ बनाने के लिए कनेक्शन बनाना होगा।

"से" और "करने के लिए" कमांड लाइन से देने का समर्थन करता है, और रिमोट मशीनों का समर्थन करता है: यहाँ स्क्रिप्ट मैं यातायात अग्रेषित करने के लिए

var net = require('net'); 

var sourceport = 1234; 
var destport = 1235; 

net.createServer(function(s) 
{ 
    var buff = ""; 
    var connected = false; 
    var cli = net.createConnection(destport); 
    s.on('data', function(d) { 
     if (connected) 
     { 
      cli.write(d); 
     } else { 
      buff += d.toString(); 
     } 
    }); 
    cli.on('connect', function() { 
     connected = true; 
     cli.write(buff); 
    }); 
    cli.pipe(s); 
}).listen(sourceport); 
+0

क्या आप जानते हैं कि मैं नोड-संपीड़न का उपयोग करके संचरण को कैसे संकुचित करूं?मेरा मतलब है, मैं कैसे जानता हूं कि एस या डी को संपीड़ित या डिकंप्रेस करना है या नहीं? मैंने यह लाइन जोड़ दी है: 'gunzip.init(); cli.write (gunzip.inflate (डी) + gunzip.end()); 'और यह पंक्ति' gzip.init(); cli.pipe (gzip.deflate (ओं) + gzip.end()); ', लेकिन मुझे लगता है कि मैं अपना संपीड़न/डिकंप्रेशन मिश्रित कर रहा हूं। अग्रिम में बहुत धन्यवाद, – Eamorr

+0

बिल्कुल यकीन नहीं है कि आपका क्या मतलब है। आपके पास ट्रैफिक ए <-> बी है। आपको संपीड़न की आवश्यकता क्यों है? क्या आपका कार्य 'ए से बी तक आगे का डेटा है और इसे डीकंप्रेस करता है, बी से ए और संपीड़ित'? –