DNS सर्वरों के माध्यम से IPv4 डेटा को टनल करके फ़ायरवॉल प्रतिबंधों को बायपास करें और पेनेट्रेशन टेस्टिंग हेतु गुप्त नेटवर्क एक्सेस प्रदान करें।
यह एक सॉफ़्टवेयर है जो आपको DNS सर्वर के माध्यम से IPv4 डेटा टनल करने की सुविधा देता है। यह उन विभिन्न स्थितियों में उपयोगी हो सकता है जहाँ इंटरनेट एक्सेस फ़ायरवॉल से बंद है, लेकिन DNS क्वेरीज़ की अनुमति है।
iodine को कंपाइल करने के लिए आपको meson की आवश्यकता होगी।
build डायरेक्टरी के अंदर कंपाइल करने के लिए निम्नलिखित कमांड चलाएँ:
meson setup build
cd build
ninja
टेस्ट बनाने और चलाने के लिए आपको check लाइब्रेरी की आवश्यकता होगी। उन्हें शुरू करने के लिए
build डायरेक्टरी के अंदर ninja test चलाएँ।
अपने ही LAN के भीतर इसे आज़माएँ! इन सरल चरणों का पालन करें:
./iodined -f 10.0.0.1 test.com.
यदि आप पहले से ही 10.0.0.0 नेटवर्क का उपयोग करते हैं, तो कोई अन्य आंतरिक नेट जैसे
172.16.0.0 का उपयोग करें।./iodine -f -r 192.168.0.1 test.com.
192.168.0.1 को अपने सर्वर के ip पते से बदलें।10.0.0.2 है और सर्वर के पास 10.0.0.1 है।वास्तव में इसे रिले करने वाले नेमसर्वर के माध्यम से उपयोग करने के लिए, नीचे देखें।
नोट: सर्वर और क्लाइंट को बिल्कुल समान प्रोटोकॉल बोलना आवश्यक है। अधिकांश मामलों में, इसका मतलब है कि समान iodine संस्करण चलाना। दुर्भाग्य से, पिछड़े और आगे प्रोटोकॉल संगतता को लागू करना आमतौर पर संभव नहीं होता है।
इस टनल का उपयोग करने के लिए, आपको एक वास्तविक डोमेन (जैसे mydomain.com) पर नियंत्रण
की आवश्यकता होगी, और iodined चलाने के लिए एक सार्वजनिक IP पते वाला सर्वर। यदि यह सर्वर
पहले से ही एक DNS प्रोग्राम चलाता है, तो उसका सुनने वाला पोर्ट बदलें और फिर iodined के
-b विकल्प का उपयोग करके iodined को DNS अनुरोध अग्रेषित करने दें। (ध्यान दें कि यह प्रक्रिया
उत्पादन वातावरण में सलाह नहीं दी जाती है, क्योंकि iodined का DNS अग्रेषण
पूरी तरह से पारदर्शी नहीं है, उदाहरण के लिए ज़ोन ट्रांसफर काम नहीं करेंगे।)
वैकल्पिक रूप से आप अपने DNS सर्वर से सबडोमेन को iodined पर अग्रेषित कर सकते हैं
जिसे तब एक अलग पोर्ट (-p) पर चलना चाहिए।
फिर, iodined सर्वर को एक सबडोमेन (मान लें, t1.mydomain.com) सौंपें।
यदि आप अपने डोमेन के लिए BIND का उपयोग करते हैं, तो ज़ोन फ़ाइल में इस तरह की दो पंक्तियाँ जोड़ें:
t1 IN NS t1ns.mydomain.com. ; note the dot!
t1ns IN A 10.15.213.99
NS पंक्ति ही t1 सबडोमेन के लिए क्वेरीज़ को t1ns सर्वर पर रूट करने के लिए
आवश्यक है। हम सबडोमेन के लिए एक छोटा नाम उपयोग करते हैं, ताकि डेटा ट्रैफ़िक के लिए
अधिक से अधिक स्थान उपलब्ध रहे। NS पंक्ति के अंत में आपके iodined सर्वर का नाम है।
यह कोई भी नाम हो सकता है, कहीं भी इंगित कर सकता है, लेकिन इस मामले में इसे आसानी से उसी
ज़ोन फ़ाइल में रखा जाता है। यह एक नाम होना चाहिए (IP पता नहीं), और उस नाम का स्वयं
एक A रिकॉर्ड होना चाहिए (CNAME नहीं)।
यदि आपके iodined सर्वर का IP गतिशील है, तो एक गतिशील DNS प्रदाता का उपयोग करें। बस
NS पंक्ति को उस पर इंगित करें, और A पंक्ति को छोड़ दें:
t1 IN NS myname.mydyndnsprovider.com. ; note the dot!
फिर अपने नेमसर्वर प्रोग्राम को पुनः लोड या पुनः आरंभ करें। अब t1.mydomain.com पर
समाप्त होने वाले डोमेन के लिए कोई भी DNS क्वेरी आपके iodined सर्वर पर भेजी जाएगी।
अंत में अपने सर्वर पर iodined शुरू करें। पहला तर्क टनल के अंदर का IP पता है, जो
किसी भी रेंज से हो सकता है जिसका आपने अभी तक उपयोग नहीं किया है (उदाहरण के लिए
192.168.99.1), और दूसरा तर्क असाइन किया गया डोमेन है (इस मामले में
t1.mydomain.com)। -f विकल्प का उपयोग करने से iodined फ़ोरग्राउंड में चलता रहेगा,
जो परीक्षण के समय सहायक होता है। iodined एक वर्चुअल इंटरफ़ेस ("tun device") खोलेगा,
और UDP पोर्ट 53 पर DNS क्वेरीज़ के लिए भी सुनना शुरू करेगा।
या तो कमांडलाइन पर पासवर्ड दर्ज करें (-P pass) या सर्वर शुरू होने के बाद।
अब सब कुछ क्लाइंट के लिए तैयार है।
यदि संभावना है कि आप अप्रत्याशित वातावरण से iodine टनल का उपयोग करेंगे, तो iodined
को -c विकल्प के साथ शुरू करें।
इस उदाहरण स्थिति में परिणामी कमांडलाइन:
./iodined -f -c -P secretpassword 192.168.99.1 t1.mydomain.com
सारा सेटअप हो गया है, बस iodine शुरू करें। यह एक या दो तर्क लेता है, पहला
स्थानीय रिले करने वाला DNS सर्वर (वैकल्पिक) है और दूसरा वह डोमेन है जिसका आपने उपयोग किया
(t1.mydomain.com)। यदि आप पहला तर्क निर्दिष्ट नहीं करते हैं, तो सिस्टम की वर्तमान
DNS सेटिंग का परामर्श लिया जाएगा।
यदि किसी भी कंप्यूटर पर DNS क्वेरीज़ की अनुमति है, तो आप सीधे iodined
सर्वर का पता पहले तर्क के रूप में दे सकते हैं (उदाहरण में: t1ns.mydomain.com या
10.15.213.99)। उस स्थिति में, यह भी हो सकता है कि किसी भी कंप्यूटर के DNS पोर्ट (53 UDP)
पर कोई भी ट्रैफ़िक की अनुमति हो। Iodine इसका पता लगाएगा, और यदि संभव हो तो
raw UDP टनलिंग पर स्विच कर देगा। किसी भी स्थिति में DNS टनलिंग को बाध्य करने के लिए,
-r विकल्प का उपयोग करें (विशेष रूप से अपने ही नेटवर्क के भीतर परीक्षण करते समय उपयोगी)।
क्लाइंट का टनल इंटरफ़ेस सर्वर के करीब एक IP प्राप्त करेगा (इस मामले में
192.168.99.2 या .3 आदि) और एक उपयुक्त MTU। सर्वर पर जैसा ही पासवर्ड दर्ज करें
या तो कमांडलाइन विकल्प के रूप में या क्लाइंट शुरू होने के बाद।
-f विकल्प का उपयोग करने से iodine क्लाइंट फ़ोरग्राउंड में चलता रहेगा।
इस उदाहरण स्थिति में परिणामी कमांडलाइन, -r जोड़ने से DNS टनलिंग बाध्य होती है भले ही raw UDP टनलिंग संभव हो:
./iodine -f -P secretpassword t1.mydomain.com
अब किसी भी तरफ से, आपको टनल के दूसरे छोर पर IP पते को पिंग करने में सक्षम होना चाहिए।
इस मामले में, iodine क्लाइंट से ping 192.168.99.1, और
iodine सर्वर से 192.168.99.2।
टनल के अंदर का डेटा केवल IPv4 है।
सर्वर डिफ़ॉल्ट रूप से आने वाले अनुरोधों के लिए IPv4 और IPv6 दोनों पर सुनता है।
केवल एक प्रोटोकॉल पर सुनने के लिए -4 या -6 विकल्पों का उपयोग करें। Raw मोड उसी
प्रोटोकॉल पर प्रयास किया जाएगा जो लॉगिन के लिए उपयोग किया गया था।
क्लाइंट iodined से कनेक्ट करने के लिए IPv4 या IPv6 नेमसर्वर का उपयोग कर सकता है। रिले
नेमसर्वर आवश्यकता पड़ने पर प्रोटोकॉल के बीच स्वचालित रूप से अनुवाद करेंगे। क्लाइंट को अपनी DNS
क्वेरीज़ के लिए एक विशिष्ट IP संस्करण का उपयोग करने के लिए बाध्य करने के लिए -4 या -6 विकल्पों का उपयोग करें।
यदि आपका सर्वर IPv6 पर सुन रहा है और पहुँच योग्य है, तो अपने DNS सेटअप में इसके लिए एक AAAA रिकॉर्ड जोड़ें। ऊपर के उदाहरण का विस्तार इस तरह दिखेगा:
t1 IN NS t1ns.mydomain.com. ; note the dot!
t1ns IN A 10.15.213.99
t1ns IN AAAA 2001:db8::1001:99
DNS टनल के माध्यम से सभी ट्रैफ़िक को रूट करना संभव है। ऐसा करने के लिए, पहले डिफ़ॉल्ट गेटवे के रूप में गेटवे के साथ वायर्ड/वायरलेस इंटरफ़ेस पर iodine द्वारा उपयोग किए जाने वाले नेमसर्वर के लिए एक होस्ट रूट जोड़ें। फिर डिफ़ॉल्ट गेटवे को DNS टनल के अंदर iodined सर्वर के IP पते से बदलें, और सर्वर को NAT करने के लिए कॉन्फ़िगर करें।
हालाँकि, ध्यान दें कि टनल किया गया डेटा ट्रैफ़िक बिल्कुल भी एन्क्रिप्टेड नहीं है, और बाहरी पक्षों द्वारा अपेक्षाकृत आसानी से पढ़ा और बदला जा सकता है। अधिकतम सुरक्षा के लिए, DNS टनल के माध्यम से एक VPN चलाएँ (=डबल टनलिंग), या सुरक्षित शेल (SSH) एक्सेस का उपयोग करें, संभवतः पोर्ट फ़ॉरवर्डिंग के साथ। उत्तरार्द्ध का उपयोग वेब ब्राउज़िंग के लिए भी किया जा सकता है, जब आप अपने सर्वर पर एक वेब प्रॉक्सी (उदाहरण के लिए Privoxy) चलाते हैं।
iodined सर्वर टनल डोमेन के सबडोमेन के लिए भेजे गए NS अनुरोधों का उत्तर देता है।
यदि आपका iodined सबडोमेन t1.mydomain.com है, तो यह देखने के लिए कि प्रतिनिधित्व काम करता है या नहीं,
foo123.t1.mydomain.com के लिए एक NS अनुरोध भेजें।
dig इसके लिए एक अच्छा उपकरण है:
% dig -t NS foo123.t1.mydomain.com
ns.io.citronna.de.
साथ ही, iodined सर्वर समर्थित अनुरोध प्रकारों में से किसी के लिए भी 'z' से शुरू होने वाले अनुरोधों का उत्तर देगा, उदाहरण के लिए:
dig -t TXT z456.t1.mydomain.com
dig -t SRV z456.t1.mydomain.com
dig -t CNAME z456.t1.mydomain.com
इन सभी मामलों में उत्तर गड़बड़ टेक्स्ट जैसा दिखना चाहिए।
Mac OS X 10.6 और बाद के संस्करणों पर, iodine OS में निर्मित मूल utun उपकरणों का समर्थन करता है - -d utunX का उपयोग करें।