IPv6 को ipv4 से अग्रेषित करने के लिए iptables का उपयोग करें?


16

वर्तमान में मेरे पास एक सेटअप है, जहां कॉन्फ़िगरेशन के कारण जो हमेशा के लिए ठीक हो जाएगा, मेरे पास एक सर्वर है जिसे केवल ipv4 द्वारा एक्सेस किया जा सकता है। हालाँकि, मेरे पास एक सर्वर है, जिसे ipv6 द्वारा एक्सेस किया जा सकता है। मैं सोच रहा था कि क्या मैं IPv6 ट्रैफिक का उपयोग कर एक सर्वर से दूसरे सर्वर पर एक निश्चित पोर्ट पर ipv6 ट्रैफिक को आगे बढ़ाने के लिए iptables का उपयोग कर सकता हूं।


2
आप जो देख रहे हैं उसे NAT64 कहा जाता है, जो मुझे नहीं लगता कि iptables करेंगे (अभी तक)।
क्रिस एस

क्रिस पर सही है - NAT64 RFC सिर्फ प्रकाशित हुआ, मैं इसे तब तक दूंगा जब तक कि कुछ भी वास्तव में इसका समर्थन नहीं करता। उस ने कहा, आप अपने लक्ष्य को एक अलग तरीके से पूरा करने में सक्षम हो सकते हैं, लेकिन हमारे पास निश्चित रूप से जानने के लिए पर्याप्त विवरण नहीं है। उदाहरण के लिए, यदि यह एक HTTP सर्वर है, तो आप प्रोटोकॉल के बीच अनुरोधों को रिवर्स-प्रॉक्सी कर सकते हैं।
शेन मैडेन

जवाबों:


16

IPtables वर्तमान में ऐसा नहीं कर सकते हैं, इसलिए आपको कनेक्शन को प्रॉक्सी करने के लिए एक यूजरस्पेस प्रक्रिया की आवश्यकता है। समाज इसके लिए एक उपयुक्त उपकरण है:

socat TCP6-LISTEN:1234,fork TCP4:1.2.3.4:1234

1
धन्यवाद, यह मददगार था! मामले में किसी को भी UDP समाधान की तलाश है: समाज UDP6-RECVFROM: 64444, कांटा UDP4-SENDTO: लोकलहोस्ट: 64443 मेरे लिए काम किया
अलेक्जेंडर

10

जैसा कि आपके प्रश्न पर टिप्पणियों में उल्लेख किया गया है , NAT64 तैयार होने से दूर है, 3 साल बाद भी।

हालाँकि, आप 6tunnelपहेली के अनुसार सुझाव दे सकते हैं।

सौभाग्य से, यह डेबियन और उबंटू रिपॉजिटरी में मौजूद है, इसलिए आप इसे आसानी से उपयोग करके स्थापित कर सकते हैं sudo apt-get install 6tunnel। यदि आप दूसरी प्रणाली का उपयोग कर रहे हैं, तो आपको इसे स्रोत से बनाना होगा ।

स्रोत से निर्माण वास्तव में कठिन नहीं है, और बस कुछ कमांड चलाने की बात है (रूट के रूप में):

git clone https://github.com/wojtekka/6tunnel && cd 6tunnel && ./autogen.sh && make && make install

यहाँ इसका सिंटैक्स है, सरलीकृत:

6tunnel [-4|-6] [-l local-host] original-port destination-host destination-port
  • [-4|-6]वैकल्पिक है और आप यह है कि क्या आप (सुनने) आईपीवी 4 या IPv6 (क्रमशः) पर बाँध देंगे सुविधा देता है।
  • -lवैकल्पिक भी है। यह आपको यह चुनने देता है कि आप किस पते (IPv4 या IPv6) को बांधना चाहते हैं।
  • मूल बंदरगाह पोर्ट जिस पर आप के लिए बाध्य होगा।
  • गंतव्य होस्ट जहां पर यातायात अग्रेषित करेंगे है। यह कहीं भी हो सकता है: लोकलहोस्ट, या कहीं और आपके नेटवर्क या इंटरनेट पर।
  • गंतव्य बंदरगाह गंतव्य होस्ट जो आपके द्वारा अग्रेषित यात्रा मिलेगा पर बंदरगाह है।

उदाहरण के लिए, यदि आप IPv4 पर पहुँच पाने के लिए IPv4-only सर्वर, पोर्ट 1337 पर सुनना चाहते हैं, तो उपयोग करें:

6tunnel -6 1337 localhost 1337

उपरोक्त कमांड IPv6 पर पोर्ट 1337 पर सुनेगा, और IPv4 के माध्यम से उसी मशीन पर 1337 पोर्ट करने के लिए ट्रैफिक को आगे करेगा। यह तब पृष्ठभूमि में चलेगा, इसलिए आपको इसके बारे में चिंता करने की आवश्यकता नहीं है।

वास्तव में, आपको यह सुनिश्चित करने के लिए एक क्रॉन जॉब सेट करना चाहिए कि यह अभी भी चल रहा है। आपकी सुविधा के लिए 6tunnelएक उदाहरण प्रदान करता है ! इसे बूट पर चलाना बुरा विचार भी नहीं होना चाहिए।

अधिक प्रलेखन के लिए, चलाएं 6tunnel -hया man 6tunnel


इसे नए उत्तर के रूप में पोस्ट करना क्योंकि पहेली द्वारा वर्तमान उत्तर को संपादित करना बहुत अधिक बदल जाएगा, और सुझाए गए संपादन के रूप में अस्वीकृत हो सकता है!
लीओ लाम

5

हाल के संस्करण xinetdभी IPv6 पर सुन सकते हैं और फिर एक IPv4 पते पर कनेक्शन को अग्रेषित कर सकते हैं।

एक नमूना कॉन्फ़िगरेशन जो पोर्ट 3389 पर IPv6 कनेक्शन के लिए सुनता है और आंतरिक IPv4 पते के 3389 पोर्ट के लिए उन्हें आगे करता है:

service rdp_port_forward
{
    flags           = IPv6
    disable         = no
    type            = UNLISTED
    socket_type     = stream
    protocol        = tcp
    user            = nobody
    wait            = no
    redirect        = 10.187.20.42 3389
    port            = 3389
}

यह अधिक प्रतिबंधित वातावरण में उपयोगी हो सकता है क्योंकि xinetdआपके आधार प्रणाली के साथ स्थापित होने या अनुमोदित विक्रेता रिपॉजिटरी में उपलब्ध होने की संभावना है।


3

मैं लियो लैम्स के उत्तर और अपवोट पर टिप्पणी करना चाहता था, लेकिन मेरे पास पर्याप्त प्रतिष्ठा नहीं है। सबसे पहले: बहुत बहुत धन्यवाद लियो लैम!

इस धागे के साथ आने वाले किसी भी व्यक्ति के लिए: मेरे आईएसपी ने आईपीवी 4 से आईपीवी 6 में डुअल स्टैक लाइट के साथ मेरा कनेक्शन बदल दिया, जिसका मतलब है कि मेरे पास अपना आईपीवी 4 पता नहीं है। यह एक मुद्दा था क्योंकि मैं अपने आईपी कैमरा को किसी भी तरह से एक्सेस करना चाहता हूं जो आईपीवी 6 का समर्थन नहीं करता है। इसे हल करने के लिए मैंने निम्नलिखित प्रयास किया:

  1. मेरे राउटर में पोर्ट 99 के लिए IPv6 फॉरवर्ड करना मेरी उबंटू मशीन में सक्षम करना।
  2. उबंटू मशीन (होम नेटवर्क): sudo 6tunnel -6 99 192.168.178.35 80
  3. स्थिर IPv4 और IPv6 पते के साथ vServer Debian: sudo 6tunnel -4 99 IPV6PREFIXROUTER:IPV6INTERFACEIDUUBUNTUMACHINE 99
  4. vServer Debian: iptables में पोर्ट 99 पर आने वाले tcp कनेक्शन की अनुमति दें

IPv6 उपसर्ग को मेरे राउटर में दर्शाया गया था और इंटरफ़ेस आईडी को IPv6 अग्रेषण प्रक्रिया में मैप किया गया था।

अब मैं vServer domain example.com:99 का उपयोग करके कहीं से भी कैमरा एक्सेस कर सकता हूँ। मैं या तो रास्पबेरी प्राप्त करने की योजना बना रहा हूं, जो इस काम को पूरा करेगा या अन्य कार्यों के लिए एक केला पी 3 भी।


1
अब आप जानते हैं कि जब आपको दूसरे आईपी कैमरे की आवश्यकता होती है तो क्या करना चाहिए। यह 2015 है; IPv6 का समर्थन नहीं करने वाले को खरीदना पूरी तरह से पैसे की बर्बादी है।
माइकल हैम्पटन

ऐसा नहीं है कि कैमरा कुछ साल पुराना है: पी
क्रुमर

2

ओपी की तुलना में आवश्यक रूप से इस पृष्ठ को खोजने वाले लोगों के लाभ के लिए अधिक (मैं यहां एक आईपीवी 4 (ट्विस्टेड) ​​एप्लिकेशन के लिए आईपीवी 6 कनेक्टिविटी के समाधान की तलाश में आया था, एक संभावना है कि आवेदन 6 टन है, आईपीवी 6 पर सुनता है और दूसरे इंटरफेस के लिए अनुरोध करता है और) बंदरगाह।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.