2008-10-28 18 views
18

बदलने के लिए iptables का उपयोग करना iptables का उपयोग कर यूडीपी पैकेट के गंतव्य पोर्ट को बदलना संभव है?गंतव्य पोर्ट

iptables -t नेट -एक POSTROUTING:

मैं 162 के बजाय 1620 पर जाल से बाहर भेजने के लिए एक SNMP एजेंट पाने के लिए कोशिश कर रहा हूँ दुर्भाग्य से अब तक मैं केवल स्रोत पोर्ट बदलना प्रबंधित किया है -p udp --dport 162 -j SNAT --to: 1620

उत्तर

4

यह उपयोग स्पष्ट रूप से समर्थित नहीं है। http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.txt से लिया गया:

6.3.7। स्थानीय रूप से जेनरेट कनेक्शन

नेट कोड आप आउटपुट श्रृंखला में DNAT नियमों को सम्मिलित करने के लिए अनुमति देता है, लेकिन
यह पूरी तरह से 2.4 में समर्थित नहीं है (यह हो सकता है का गंतव्य बदलकर, लेकिन यह एक नया
की आवश्यकता है कॉन्फ़िगरेशन विकल्प, कुछ परीक्षण, और कोडिंग का एक उचित बिट, इसलिए जब तक कोई इसे लिखने के लिए जंगली अनुबंध करता है, तो मैं जल्द ही इसकी अपेक्षा नहीं करता)।

वर्तमान सीमा है कि आप केवल गंतव्य
को स्थानीय मशीन (जैसे `--to 127.0.0.1 'जे DNAT), बदल सकते हैं, किसी भी अन्य मशीन के लिए नहीं है अन्यथा उत्तर नहीं होगा सही ढंग से अनुवाद किया जा सकता है।

+0

क्या यह स्थानीय मशीन पर पोर्ट 1620 पर रीडायरेक्ट नहीं करता है? ऐसा लगता है कि askotoki के रूप में एक ही सिफारिश है। –

+0

आप सही हैं ... मैंने थोड़ा गहरा खोला और उपर्युक्त जानकारी पाई। –

0

इसके बजाय SNAT बनाने का, DNAT साथ प्रयास करें। स्रोत पोर्ट बदल जाता है क्योंकि एसएनएटी का अर्थ SourceNAT है, इसलिए डीएनएटी आपके लिए काम करेगा।

+0

DNAT काम करने के लिए आप की आवश्यकता होगी मिल पर रीडायरेक्ट करें एक आईपी पता निर्दिष्ट करने के लिए - गंतव्य के लिए – PiedPiper

+0

यह इस मामले में कोई समस्या नहीं होगी, लेकिन एक डीएनएटी नियम या तो काम नहीं कर रहा है। नियम हिट नहीं होता है और भेजे गए पैकेट संशोधित नहीं होते हैं। –

+0

आप एक पोस्टरूटिंग श्रृंखला पर डीएनएटी का उपयोग नहीं कर सकते हैं। http://iptables-tutorial.frozentux.net/iptables-tutorial.html#DNATTARGET – borodimer

1

@PiedPiper सही था। डीएनएटी के साथ आपको एक आईपी पता निर्दिष्ट करना होगा, लेकिन हम केवल पोर्ट रीडायरेक्शन करना चाहते हैं, इसलिए -जे रेडियरेक्ट इस मामले में काम कर सकता है।

http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2

+0

यदि मैंने पढ़ा है कि सही रीडायरेक्ट स्थानीय मशीन पर पोर्ट 1620 को पैकेट भेज देगा। मैं चाहता हूं कि यह पैकेट में सूचीबद्ध गंतव्य पर जाए, लेकिन 162 के बजाय पोर्ट 1620 पर। –

+0

हां, मैंने इसे पहली बार नहीं पढ़ा। माफ़ कीजिये। – azkotoki

4

देखें मान लिया जाये कि आप जानते हैं कि जो मशीन आप के लिए भेज रहे हैं:

iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620 
+0

यह मेरे iptables शिकायत करने का कारण बनता है: "iptables: अवैध तर्क" –

+0

यह मेरे लिए काम करता है। आप को वास्तविक आईपी पते के साथ बदल रहे हैं? – PiedPiper

+0

यह आदेश मेरे लिए ठीक काम करता है। कर्नेल 2.6 और iptables 1.2.11+ – borodimer

1

आप एक डाइवर्ट नियम सेट कर सकते हैं और उसके बाद संशोधित पोर्ट के साथ पैकेट फिर से इंजेक्षन।

मैं ऐसा करने के बाद थोड़ी देर के मैक ओएस एक्स पर वापस लेकिन यह लिनक्स पर ही सिद्धांत है: http://blog.dv8.ro/2006/08/using-divert-sockets-on-mac-os-x.html

आप मूल रूप से एक बहुत ही सरल पारदर्शी प्रॉक्सी बनाना होगा।

5

आप 162 1620 को

iptables अनुप्रेषित सकता है आयकर नेट -एक PREROUTING -p यूडीपी --dport 162 -j --to पोर्ट 1620

संबंधित मुद्दे