मैं स्थानीय स्तर पर iptables का उपयोग करके पोर्ट आउटबाउंड ट्रैफ़िक को 80 पर कैसे पुनर्निर्देशित कर सकता हूं?


19

मैं अपने उबंटू मशीन का उपयोग करके स्थानीय रूप से पुनर्निर्देशित बंदरगाहों की कोशिश कर रहा हूं iptables। पारदर्शी समीपता के समान। मैं अपने सिस्टम को पोर्ट 80 पर छोड़ने और दूरस्थ होस्ट और पोर्ट पर पुनर्निर्देशित करने की कोशिश कर रहा कुछ भी पकड़ना चाहता हूं।

क्या मैं NAT और प्री-रूटिंग फ़ंक्शंस का उपयोग करके इसे प्राप्त कर सकता हूं iptables?

जवाबों:


30

इस iptablesनियम का प्रयास करें :

$ sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination IP:80

उपरोक्त कहता है:

  • NAT तालिका में निम्नलिखित नियम जोड़ें ( -t nat)।
  • इस नियम को -Aआउटबाउंड ट्रैफ़िक ( OUTPUT) में जोड़ा जाएगा ( )।
  • हम केवल TCP ट्रैफ़िक ( -p tcp) में रुचि रखते हैं ।
  • हम केवल ट्रैफ़िक में रुचि रखते हैं, जिसका गंतव्य पोर्ट 80 ( --dport 80) है।
  • जब हमारे पास मैच होता है, तो DNAT ( -j DNAT) पर जाएं।
  • इस ट्रैफ़िक को किसी अन्य सर्वर के IP @ पोर्ट 80 ( --to-destination IP:80) पर रूट करें ।

DNAT क्या है?

DNAT
    This target is only valid in the nat table, in the PREROUTING and OUTPUT 
    chains, and user-defined chains which are only called from those chains.
    It specifies that the destination address of the packet should be modified 
    (and all future packets in  this  connection will also be mangled), and
     rules should cease being examined.

संदर्भ


उसके लिए धन्यवाद, लेकिन यह काम नहीं करता है। मैं हालांकि यह है कि काम करता है पाया है।
pjf

sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-गंतव्य xx.xx.xx.xx: 3128
pjf

क्या इसलिए कि यह स्थानीय रूप से है और एक प्रवेश द्वार के माध्यम से नहीं है? आपका SNAT एक प्रवेश द्वार के माध्यम से काम करेगा?
pjf

@ पीजेएफ - मेरा ऐसा मानना ​​है। मैंने अपना उत्तर अपडेट कर दिया है।
स्लम

@pjf - मुझे दोनों नियम मिले और मैं अपने उत्तर को दोनों के साथ अपडेट करने की प्रक्रिया में था। मुझे यकीन नहीं था कि आप किस स्थिति में थे।
स्लम

6

इसे केवल किसी विशेष गंतव्य होस्ट के लिए ट्रैफ़िक पर संचालित करने के लिए और अधिक विशिष्ट बनाया जा सकता है। उदाहरण के लिए जब पोस्टफिक्स में गलती हुई और कतार में मेल पुराने आईपी पते पर भेजना चाहते हैं।

iptables -t nat -A OUTPUT -p tcp -d {ONLY_TO_THIS_DESTINATION} --dport 25 -j DNAT --to-destination {NEW_IP}:25

4

यह आपको सभी आईपी पते पर बंदरगाहों का अनुवाद करने की अनुमति दे सकता है। यहां मुख्य अंतर --to-destinationफ़ील्ड में एक आईपी पते का अनुपस्थिति है ।

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination :80

बहुत उपयोगी टिप; वास्तव में मुझे क्या चाहिए। क्या पोर्ट संख्या बढ़ाने का कोई तरीका है? मान लीजिए कि मेरे पास 100 पोर्ट हैं और एक विशेष राशि से उन सभी को उठाना चाहते हैं।
ज़ेडनेक

पक्का नहीं आपका क्या मतलब है। क्या आप बैश में फॉर-लूप लिख सकते हैं?
फेलिप अल्वारेज

100 iptables नियमों को जोड़ने वाला एक लूप काम करेगा, लेकिन यह इसे धीमा कर देगा। मैं इसे एक ही नियम में कई क्रमिक बंदरगाहों को बढ़ाने में सक्षम होना पसंद करूंगा।
Zdenek

@Zdenek मुझे नहीं पता कि क्या यह iptables के साथ संभव है। क्या आपने देखा firewalld?
फेलिप अल्वारेज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.