Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
iodine — DNS सर्वरों के माध्यम से IPv4 डेटा को टनल करके फ़ायरवॉल प्रतिबंधों को बायपास करें और पेनेट्रेशन टेस्टिंग हेतु गुप्त नेटवर्क एक्सेस प्रदान करें। | Kitploit
उपकरण/GitHubGitHub/yarrick/iodine
डेटा निष्कासननेटवर्क सुरक्षापेनिट्रेशन टेस्टिंगकमांड एंड कंट्रोलरेड टीमिंगरिमोट एक्सेस टूल
GitHubyarrick/iodine

iodine

DNS सर्वरों के माध्यम से IPv4 डेटा को टनल करके फ़ायरवॉल प्रतिबंधों को बायपास करें और पेनेट्रेशन टेस्टिंग हेतु गुप्त नेटवर्क एक्सेस प्रदान करें।

रिपॉजिटरी देखें
8.0k59611 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
वेबसाइट

iodine - https://code.kryo.se/iodine

यह एक सॉफ़्टवेयर है जो आपको DNS सर्वर के माध्यम से IPv4 डेटा को टनल करने देता है। यह उन विभिन्न स्थितियों में उपयोगी हो सकता है जहाँ इंटरनेट एक्सेस फ़ायरवॉल किया गया है, लेकिन DNS क्वेरी की अनुमति है।

संकलन

Iodine में कोई configure स्क्रिप्ट नहीं है। Linux के लिए दो वैकल्पिक सुविधाएँ हैं (SELinux और systemd समर्थन) जो स्वचालित रूप से सक्षम होंगी यदि प्रासंगिक हेडर फ़ाइलें /usr/include में मिलती हैं। (./src/osflags पर स्क्रिप्ट देखें)

सर्वर और क्लाइंट बाइनरी को संकलित करने के लिए make चलाएँ। बाइनरी और मैनपेज को गंतव्य निर्देशिका में कॉपी करने के लिए make install चलाएँ। यूनिट परीक्षणों को संकलित और चलाने के लिए make test चलाएँ। (check लाइब्रेरी की आवश्यकता है)

त्वरित प्रारंभ

इसे अपने स्वयं के 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 पते से बदलें।
  • वही पासवर्ड दर्ज करें।
  • अब क्लाइंट के पास टनल IP 10.0.0.2 है और सर्वर के पास 10.0.0.1 है।
  • टनल के माध्यम से एक-दूसरे को पिंग करने का प्रयास करें।
  • हो गया! :)

वास्तव में इसे रिले करने वाले नेमसर्वर के माध्यम से उपयोग करने के लिए, नीचे देखें।

उपयोग कैसे करें

नोट: सर्वर और क्लाइंट के लिए बिल्कुल समान प्रोटोकॉल का उपयोग करना आवश्यक है। अधिकांश मामलों में, इसका अर्थ है समान iodine संस्करण चलाना। दुर्भाग्य से, पश्चगामी और अग्रगामी प्रोटोकॉल संगतता लागू करना आमतौर पर संभव नहीं है।

सर्वर पक्ष

इस टनल का उपयोग करने के लिए, आपको एक वास्तविक डोमेन (जैसे mydomain.com) पर नियंत्रण चाहिए, और iodined चलाने के लिए सार्वजनिक IP पते वाला एक सर्वर चाहिए। यदि यह सर्वर पहले से DNS प्रोग्राम चलाता है, तो उसका listening पोर्ट बदलें और फिर iodined को DNS अनुरोधों को आगे भेजने देने के लिए iodined के -b विकल्प का उपयोग करें। (ध्यान दें कि production वातावरण में यह प्रक्रिया अनुशंसित नहीं है, क्योंकि iodined का DNS फ़ॉरवर्डिंग पूरी तरह से पारदर्शी नहीं है, उदाहरण के लिए zone transfers काम नहीं करेंगे।) वैकल्पिक रूप से आप अपने DNS सर्वर से सबडोमेन को iodined पर फ़ॉरवर्ड कर सकते हैं, जिसे तब एक अलग पोर्ट (-p) पर चलना चाहिए।

फिर, एक सबडोमेन (मान लीजिए, t1.mydomain.com) को iodined सर्वर को सौंपें। यदि आप अपने डोमेन के लिए BIND का उपयोग करते हैं, तो zone फ़ाइल में इस प्रकार की दो पंक्तियाँ जोड़ें:

root@kitploit:~
t1		IN	NS	t1ns.mydomain.com.		; note the dot!
t1ns		IN	A	10.15.213.99

t1 सबडोमेन के लिए क्वेरी को t1ns सर्वर पर रूट करने के लिए केवल NS पंक्ति की आवश्यकता है। हम सबडोमेन के लिए एक छोटा नाम उपयोग करते हैं, ताकि डेटा ट्रैफ़िक के लिए अधिक से अधिक स्थान उपलब्ध रहे। NS पंक्ति के अंत में आपके iodined सर्वर का नाम होता है। यह कोई भी नाम हो सकता है, कहीं भी इंगित करता हुआ, लेकिन इस मामले में इसे आसानी से उसी zone फ़ाइल में रखा जा सकता है। यह एक नाम होना चाहिए (IP पता नहीं), और उस नाम में स्वयं एक A रिकॉर्ड होना चाहिए (CNAME नहीं)।

यदि आपके iodined सर्वर के पास dynamic IP है, तो dynamic DNS प्रदाता का उपयोग करें। बस NS पंक्ति को उसकी ओर इंगित करें, और A पंक्ति को छोड़ दें:

root@kitploit:~
t1		IN	NS	myname.mydyndnsprovider.com.	; note the dot!

फिर अपने नेमसर्वर प्रोग्राम को reload या restart करें। अब 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 विकल्प के साथ प्रारंभ करें। इस उदाहरण स्थिति में परिणामी कमांडलाइन:

root@kitploit:~
./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 के करीब एक IP प्राप्त करेगा (इस मामले में 192.168.99.2 या .3 आदि) और एक उपयुक्त MTU। सर्वर वाला वही पासवर्ड या तो कमांडलाइन विकल्प के रूप में या क्लाइंट प्रारंभ होने के बाद दर्ज करें। -f विकल्प का उपयोग करने से iodine क्लाइंट फ़ोरग्राउंड में चलता रहेगा।

इस उदाहरण स्थिति में परिणामी कमांडलाइन, -r जोड़ने पर DNS टनलिंग बाध्य होती है भले ही raw UDP टनलिंग संभव हो:

root@kitploit:~
./iodine -f -P secretpassword t1.mydomain.com

अब आपको किसी भी ओर से टनल के दूसरे छोर पर IP पते को पिंग करने में सक्षम होना चाहिए। इस मामले में, iodine क्लाइंट से ping 192.168.99.1, और iodine सर्वर से 192.168.99.2।

विविध जानकारी

IPv6

टनल के अंदर डेटा केवल IPv4 है।

सर्वर डिफ़ॉल्ट रूप से आने वाले अनुरोधों के लिए IPv4 और IPv6 दोनों पर सुनता है। केवल एक प्रोटोकॉल पर सुनने के लिए -4 या -6 विकल्पों का उपयोग करें। Raw मोड उसी प्रोटोकॉल पर प्रयास किया जाएगा जिसका उपयोग लॉगिन के लिए किया गया था।

क्लाइंट iodined से जुड़ने के लिए IPv4 या IPv6 नेमसर्वर का उपयोग कर सकता है। रिले नेमसर्वर आवश्यकता पड़ने पर प्रोटोकॉल के बीच स्वचालित रूप से रूपांतरण करेंगे। क्लाइंट को उसकी DNS क्वेरी के लिए एक विशिष्ट IP संस्करण का उपयोग करने के लिए बाध्य करने हेतु -4 या -6 विकल्पों का उपयोग करें।

यदि आपका सर्वर IPv6 पर सुन रहा है और पहुँच योग्य है, तो अपनी DNS सेटिंग में उसके लिए एक AAAA रिकॉर्ड जोड़ें। उपरोक्त उदाहरण को बढ़ाने पर यह इस प्रकार दिखेगा:

root@kitploit:~
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 द्वारा उपयोग किए जाने वाले नेमसर्वर के लिए एक host route जोड़ें। फिर डिफ़ॉल्ट गेटवे को DNS टनल के अंदर iodined सर्वर के IP पते से बदलें, और सर्वर को NAT करने के लिए कॉन्फ़िगर करें।

हालाँकि, ध्यान दें कि टनल किया गया डेटा ट्रैफ़िक बिल्कुल भी एन्क्रिप्टेड नहीं है, और इसे बाहरी पक्षों द्वारा अपेक्षाकृत आसानी से पढ़ा और बदला जा सकता है। अधिकतम सुरक्षा के लिए, DNS टनल के माध्यम से एक VPN चलाएँ (=डबल टनलिंग), या सिक्योर शेल (SSH) एक्सेस का उपयोग करें, संभवतः पोर्ट फ़ॉरवर्डिंग के साथ। बाद वाला वेब ब्राउज़िंग के लिए भी उपयोगी हो सकता है, जब आप अपने सर्वर पर एक वेब प्रॉक्सी (उदाहरण के लिए Privoxy) चलाते हैं।

परीक्षण

iodined सर्वर टनल डोमेन के सबडोमेन के लिए भेजे गए NS अनुरोधों का उत्तर देता है। यदि आपका iodined सबडोमेन t1.mydomain.com है, तो यह देखने के लिए कि delegation काम करता है या नहीं, foo123.t1.mydomain.com के लिए एक NS अनुरोध भेजें। इसके लिए dig एक अच्छा उपकरण है:

root@kitploit:~
% dig -t NS foo123.t1.mydomain.com
ns.io.citronna.de.

इसके अलावा, iodined सर्वर किसी भी समर्थित अनुरोध प्रकार के लिए 'z' से शुरू होने वाले अनुरोधों का उत्तर देगा, उदाहरण के लिए:

root@kitploit:~
dig -t TXT z456.t1.mydomain.com
dig -t SRV z456.t1.mydomain.com
dig -t CNAME z456.t1.mydomain.com

इन सभी मामलों में उत्तर अव्यवस्थित (garbled) पाठ जैसा दिखना चाहिए।

Mac OS X

Mac OS X 10.6 और उसके बाद के संस्करणों पर, iodine OS में निर्मित नेटिव utun डिवाइसों का समर्थन करता है - -d utunX का उपयोग करें।

परिचालन संबंधी जानकारी

DNS-प्रतिक्रिया फ्रैगमेंट आकार सामान्यतः अधिकतम बैंडविड्थ प्राप्त करने के लिए स्वतः जाँचा (autoprobe) जाता है। किसी विशिष्ट मान को बाध्य करने (और चीज़ों को तेज़ करने) के लिए, -m विकल्प का उपयोग करें।

DNS होस्टनाम सामान्यतः अपनी अधिकतम लंबाई, 255 वर्णों तक उपयोग किए जाते हैं। कुछ DNS रिले ऐसे पाए गए हैं जो पूर्ण-लंबाई वाली क्वेरी का उत्तर काफी अविश्वसनीय रूप से देते हैं, बार-बार प्रयास करने पर फ्रैगमेंट आकार autoprobe के अत्यधिक भिन्न (और अधिकतर बहुत खराब) परिणाम देते हैं। इन मामलों में, DNS होस्टनाम की लंबाई घटाकर, उदाहरण के लिए 200 वर्ण करने के लिए -M स्विच का उपयोग करें, जिससे ये DNS रिले अधिक स्थिर हो जाते हैं। यह कुछ "de-optimizing" DNS रिले पर भी उपयोगी है जो प्रतिक्रिया में क्वेरी की दो पूरी प्रतियाँ भर देते हैं, जिससे डाउनस्ट्रीम डेटा के लिए बहुत कम स्थान बचता है (EDNS0 में भी सक्षम नहीं)। -M स्विच कुछ अपस्ट्रीम बैंडविड्थ को डाउनस्ट्रीम बैंडविड्थ के लिए विनिमय कर सकता है। ध्यान दें कि न्यूनतम -M मान लगभग 100 है, क्योंकि प्रोटोकॉल पैकेट (अधिकतम 1200 बाइट्स) को केवल 16 फ्रैगमेंट में विभाजित कर सकता है, जिसके लिए प्रति फ्रैगमेंट कम से कम 75 वास्तविक डेटा बाइट्स की आवश्यकता होती है।

अपस्ट्रीम डेटा gzipped भेजा जाता है और Base32 के साथ एन्कोड किया जाता है; या Base64 यदि रिले सर्वर डोमेन नामों में मिश्रित केस और + का समर्थन करता है; या Base64u यदि इसके बजाय _ समर्थित है; या Base128 यदि उच्च-बाइट-मान वर्ण समर्थित हैं। यह अपस्ट्रीम एन्कोडिंग स्वतः पहचानी जाती है। DNS प्रोटोकॉल प्रति पैकेट एक क्वेरी की अनुमति देता है, और एक क्वेरी अधिकतम 256 वर्णों की हो सकती है। प्रत्येक डोमेन नाम भाग अधिकतम 63 वर्णों का हो सकता है। इसलिए अधिकतम अपस्ट्रीम थ्रूपुट की अनुमति देने के लिए आपका डोमेन नाम और सबडोमेन जितना संभव हो उतना छोटा होना चाहिए।

कई DNS अनुरोध प्रकार समर्थित हैं, जिनमें NULL और PRIVATE प्रकारों से सबसे अधिक डाउनस्ट्रीम बैंडविड्थ मिलने की उम्मीद है। PRIVATE प्रकार निजी-उपयोग सीमा में मान 65399 का उपयोग करता है। अन्य उपलब्ध प्रकार हैं TXT, SRV, MX, CNAME और A (CNAME लौटाता है), घटते बैंडविड्थ क्रम में। सामान्यतः "सर्वोत्तम" अनुरोध प्रकार स्वतः पहचाना और उपयोग किया जाता है। हालाँकि, DNS रिले उदाहरण के लिए NULL और TXT पर सीमाएँ लगा सकते हैं, जिससे SRV या MX वास्तव में सबसे अच्छा विकल्प बन जाते हैं। यह स्वतः पहचाना नहीं जाता है, लेकिन -T विकल्प का उपयोग करके बाध्य किया जा सकता है। विभिन्न विकल्पों को आज़माना उचित है, विशेष रूप से जब स्वतः पहचाना गया अनुरोध प्रकार 200 बाइट्स से कम का डाउनस्ट्रीम फ्रैगमेंट आकार प्रदान करता है।

ध्यान दें कि SRV, MX और A (CNAME लौटाने वाली) क्वेरी वास्तविक IP पता प्राप्त करने के लिए "स्मार्ट" कैशिंग नेमसर्वर द्वारा अतिरिक्त लुकअप का कारण बन सकती हैं/बनेंगी, जो या तो धीमा कर सकती हैं या पूरी तरह विफल हो सकती हैं।

गैर-NULL/PRIVATE क्वेरी के लिए DNS प्रतिक्रियाओं को अपस्ट्रीम डेटा के समान कोडेक सेट के साथ एन्कोड किया जा सकता है। यह सामान्यतः भी स्वतः पहचाना जाता है, लेकिन पूरी तरह से व्यापक परीक्षण नहीं किए जाते हैं, इसलिए अधिक उन्नत कोडेक चुनने पर कुछ समस्याएँ ध्यान में नहीं आ सकती हैं। उस स्थिति में, आपको फ्रैगमेंट आकार autoprobe में विफलताएँ/भ्रष्टाचार दिखाई देंगे। विशेष रूप से, कई DNS रिले ऐसे पाए गए हैं जो होस्टनाम लौटाने वाले उत्तरों (SRV, MX, CNAME, A) को केवल तब lowercase में बदलते हैं जब वह होस्टनाम लगभग 180 वर्णों से अधिक होता है। इन और समान मामलों में, अन्य डाउनस्ट्रीम कोडेक आज़माने के लिए -O विकल्प का उपयोग करें; Base32 को हमेशा काम करना चाहिए।

अब सामान्य संचालन यह है कि सर्वर अगला DNS अनुरोध आने तक DNS अनुरोध का उत्तर नहीं देता, जिसे "lazy" (आलसी) होना कहा जाता है। इस तरह, जब नया डाउनस्ट्रीम डेटा भेजना होता है तो सर्वर के पास हमेशा एक DNS अनुरोध तैयार रहता है। यह (इंटरैक्टिव) प्रदर्शन और विलंबता में काफी सुधार करता है, और निष्क्रिय पिंग अनुरोधों को डिफ़ॉल्ट रूप से 4 सेकंड के अंतराल तक धीमा करने की अनुमति देता है, और संभवतः बहुत धीमा। वास्तव में, अब पिंग का मुख्य उद्देश्य पिछले पिंग का उत्तर प्राप्त करना है, और DNS सर्वर टाइमआउट को रोकना है (आमतौर पर RFC1035 के अनुसार कम से कम 5-10 सेकंड)। कुछ DNS सर्वर अधिक अधीर होते हैं और बिना टनल किए डेटा ट्रैफ़िक की अवधि में SERVFAIL त्रुटियाँ (टाइमआउट) देंगे। इन मामलों में सभी डेटा को अभी भी पार पहुँचना चाहिए, लेकिन iodine त्रुटि संदेशों की संख्या कम करने के लिए वैसे भी पिंग अंतराल को 1 सेकंड (-I1) तक घटा देगा। यह dnsadvantage.com (ultradns) जैसे बहुत अधीर DNS रिले के लिए मदद नहीं कर सकता है, जो 1 सेकंड या उससे भी कम में टाइमआउट कर देते हैं। फिर भी डेटा पार पहुँच जाएगा, और आप SERVFAIL त्रुटियों को अनदेखा कर सकते हैं।

यदि आप बीच में बिना किसी DNS सर्वर के स्थानीय नेटवर्क पर चल रहे हैं, तो -I 50 आज़माएँ (iodine और iodined 60 सेकंड की शांति के बाद कनेक्शन बंद कर देते हैं)। एकमात्र समय जब आपको मंदी दिखेगी, वह तब है जब DNS उत्तर पैकेट गायब हो जाते हैं; तब iodined सर्वर को डेटा फिर से भेजने के लिए एक नए पिंग की प्रतीक्षा करनी पड़ती है। आप कुछ अपस्ट्रीम ट्रैफ़िक (कीप्रेस, पिंग) उत्पन्न करके इसे तेज़ कर सकते हैं। यदि ऐसा अक्सर होता है, तो अपने नेटवर्क में बाधाओं की जाँच करें और/या -I1 के साथ चलाएँ।

lazy मोड में विलंबित उत्तर देने से कुछ "carrier grade" वाणिज्यिक DNS रिले iodined सर्वर को बार-बार वही DNS क्वेरी पुनः भेजेंगे। यदि DNS रिले वास्तव में समानांतर सर्वरों के पूल के रूप में लागू किया गया है, तो डुप्लिकेट अनुरोध कई स्रोतों से भी आ सकते हैं। यह प्रभाव केवल iodined सर्वर पर नेटवर्क ट्रैफ़िक में दिखाई देगा, और क्लाइंट के कनेक्शन को प्रभावित नहीं करेगा। Iodined इन डुप्लिकेट्स को नोटिस करेगा, और वही उत्तर (जब उसका समय आता है) मूल क्वेरी और नवीनतम डुप्लिकेट दोनों को भेजेगा। उसके बाद, पूरा उत्तर थोड़ी देर के लिए कैश किया जाता है। विलंबित डुप्लिकेट जो सर्वर पर और भी बाद में पहुँचते हैं, उन्हें एक उत्तर मिलता है जिसे iodine क्लाइंट अनदेखा कर देगा (यदि वह कभी वहाँ पहुँचता है)।

यदि आपको समस्याएँ हैं, तो tcpdump या ethereal/wireshark जैसे नेटवर्क मॉनिटरिंग टूल से ट्रैफ़िक का निरीक्षण करने का प्रयास करें, और सुनिश्चित करें कि रिले करने वाले DNS सर्वर ने प्रतिक्रिया को कैश नहीं किया है। कैश की गई त्रुटि संदेश का अर्थ हो सकता है कि आपने सर्वर से पहले क्लाइंट प्रारंभ किया था। सर्वर पर -D (और -DD) विकल्प प्राप्त और भेजी गई क्वेरी भी दिखा सकता है।

टिप्स एवं ट्रिक्स

यदि आपका पोर्ट 53 किसी विशिष्ट इंटरफ़ेस पर किसी ऐसे एप्लिकेशन द्वारा उपयोग किया जा रहा है जो उसका उपयोग नहीं करता है, तो iodined पर -p का उपयोग करके एक वैकल्पिक पोर्ट निर्दिष्ट करें (जैसे -p 5353) और ट्रैफ़िक को फ़ॉरवर्ड करने के लिए उदाहरण के लिए iptables (Linux पर) का उपयोग करें:

root@kitploit:~
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to :5353

(Tom Schouten द्वारा भेजा गया)

Iodined उन क्लाइंट्स से डेटा अस्वीकार कर देगा जो 60 सेकंड से अधिक समय से सक्रिय (डेटा/पिंग) नहीं हैं। इसी तरह, iodine तब बाहर निकल जाएगा जब 60 सेकंड तक कोई डाउनस्ट्रीम डेटा प्राप्त नहीं हुआ हो। लंबे नेटवर्क आउटेज या इसी तरह की स्थिति में, बस iodine को पुनः प्रारंभ करें (re-login), संभवतः कई बार जब तक आपको अपना पुराना IP पता वापस नहीं मिल जाता। एक बार ऐसा हो जाने पर, बस थोड़ी देर प्रतीक्षा करें, और आप अंततः टनल किए गए TCP ट्रैफ़िक को आउटेज से पहले जहाँ से रुका था वहीं से बहता हुआ देखेंगे।

सर्वर में डाउनस्ट्रीम पैकेट कतार की शुरुआत के साथ, इसकी मेमोरी उपयोग डिफ़ॉल्ट कॉन्फ़िगरेशन में कई मेगाबाइट बढ़ गया है। कम-मेमोरी वातावरण में उपयोग के लिए (जैसे अपने DSL राउटर पर चलाना), आप बिना किसी हानिकारक परिणाम के user.h में USERS घटा सकते हैं और OUTPACKETQ_LEN को undefine कर सकते हैं, यह मानते हुए कि किसी भी समय अधिकतम एक क्लाइंट जुड़ा होगा। एक छोटा DNSCACHE_LEN अभी भी सुझाया जाता है, अधिमानतः 2 या अधिक, हालाँकि कुछ और किलोबाइट बचाने के लिए आप इसे भी undefine कर सकते हैं।

एक iodine सर्वर कई डोमेन संभाल सकता है। एक ही डोमेन पर अलग-अलग NS रिकॉर्ड सेट करें जो सभी एक ही होस्ट की ओर इंगित करें, और topdomain तर्क की शुरुआत में एक वाइल्डकार्ड उपयोग करें (उदाहरण *.mydomain.com)। iodine उस पैटर्न से मेल खाने वाले सभी डोमेन के लिए टनल ट्रैफ़िक स्वीकार करेगा। वाइल्डकार्ड topdomain तर्क की शुरुआत में होना चाहिए और उसके बाद एक डॉट होना चाहिए।

प्रदर्शन

यह अनुभाग कुछ प्रदर्शन मापों को तालिकाबद्ध करता है। ठीक से देखने के लिए, Courier जैसे फिक्स्ड-चौड़ाई वाले फ़ॉन्ट का उपयोग करें।

माप प्रोटोकॉल 00000502 में lazy मोड में किए गए थे; अपस्ट्रीम एन्कोडिंग हमेशा Base128; iodine -M255; iodined -m1130। नेटवर्क स्थितियाँ अत्यधिक अनुकूल नहीं थीं; परिणाम बेंचमार्क नहीं हैं बल्कि वास्तविक-विश्व प्रदर्शन का एक यथार्थवादी संकेत हैं जिसकी समान स्थितियों में अपेक्षा की जा सकती है।

अपस्ट्रीम/डाउनस्ट्रीम थ्रूपुट को /dev/urandom से पहले पढ़ी गई फ़ाइल को scp करके मापा गया (अर्थात असम्पीड्य), और एक अलग गैर-टनल कनेक्शन पर ls -l ; sleep 30 ; ls -l के साथ आकार मापा गया। 16 kB के बड़े scp ब्लॉक आकार को देखते हुए, यह 4.3 kbit/s का रिज़ॉल्यूशन देता है, जो बताता है कि कुछ मान बिल्कुल समान क्यों हैं। पिंग राउंड-ट्रिप समय ping -c100 के साथ मापा गया, प्रस्तुत हैं औसत rtt और माध्य विचलन (औसत के आसपास फैलाव दर्शाता है), मिलीसेकंड में।

स्थिति 1: Laptop -> Wifi AP -> Home server -> DSL provider -> Datacenter

root@kitploit:~
 iodine    DNS "relay"        bind9           DNS cache        iodined

                        downstr.  upstream downstr.  ping-up       ping-down
                        fragsize   kbit/s   kbit/s  avg +/-mdev   avg +/-mdev
-----------------------------------------------------------------------------

iodine -> Wifi AP :53
  -Tnull (= -Oraw)           982    43.6    131.0   28.0    4.6   26.8    3.4

iodine -> Home server :53
  -Tnull (= -Oraw)          1174    48.0    305.8   26.6    5.0   26.9    8.4

iodine -> DSL provider :53
  -Tnull (= -Oraw)          1174    56.7    367.0   20.6    3.1   21.2    4.4
  -Ttxt -Obase32             730    56.7    174.7*
  -Ttxt -Obase64             874    56.7    174.7
  -Ttxt -Obase128           1018    56.7    174.7
  -Ttxt -Oraw               1162    56.7    358.2
  -Tsrv -Obase128            910    56.7    174.7
  -Tcname -Obase32           151    56.7     43.6
  -Tcname -Obase128          212    56.7     52.4

iodine -> DSL provider :53
  wired (no Wifi) -Tnull    1174    74.2    585.4   20.2    5.6   19.6    3.4

 [174.7* : these all have 2frag/packet]

स्थिति 2: Laptop -> Wifi+vpn / wired -> Home server

root@kitploit:~
 iodine                            iodined

                        downstr.  upstream downstr.  ping-up       ping-down
                        fragsize   kbit/s   kbit/s  avg +/-mdev   avg +/-mdev
-----------------------------------------------------------------------------

wifi + openvpn  -Tnull      1186   166.0   1022.3    6.3    1.3    6.6    1.6

wired  -Tnull               1186   677.2   2464.1    1.3    0.2    1.3    0.1

नोट्स

प्रदर्शन कम पिंग समय से दृढ़ता से जुड़ा हुआ है, क्योंकि iodine को अगले फ्रैगमेंट पर जाने से पहले प्रत्येक डेटा फ्रैगमेंट के लिए पुष्टि की आवश्यकता होती है। TCP की तरह कई फ्रैगमेंट को in-flight अनुमति देना संभवतः प्रदर्शन बढ़ा सकता है, लेकिन यह मध्यवर्ती DNS सर्वरों के लिए गंभीर ओवरलोड का कारण बन सकता है। वर्तमान प्रोटोकॉल प्रदर्शन को DNS प्रतिक्रियाशीलता के साथ समायोजित करता है, क्योंकि DNS सर्वर औसतन प्रति क्लाइंट अधिकतम एक DNS अनुरोध संभाल रहे होते हैं।

पोर्टेबिलिटी

iodine का परीक्षण Linux (arm, ia64, x86, AMD64 और SPARC64), FreeBSD (ia64, x86), OpenBSD (x86), NetBSD (x86), MacOS X (ppc और x86, http://tuntaposx.sourceforge.net/ के साथ) और Windows (OpenVPN TAP32 ड्राइवर के साथ, win32 readme फ़ाइल देखें) पर किया गया है। इसे TUN/TAP टनलिंग समर्थन वाले अन्य unix-जैसे सिस्टम पर पोर्ट करना आसान होना चाहिए। यदि आप इसे अन्य प्लेटफ़ॉर्म पर चलाने में सफल होते हैं तो हमें बताएं।

नाम

iodine नाम इसलिए चुना गया क्योंकि यह IOD (IP Over DNS) से शुरू होता है और क्योंकि आयोडीन की परमाणु संख्या 53 है, जो संयोगवश DNS पोर्ट नंबर है।

धन्यवाद

  • FreeBSD और OS X परीक्षण के लिए kuxien को
  • कोड ऑडिट के लिए poplix को

लेखक और लाइसेंस

कॉपीराइट (c) 2006-2014 Erik Ekman [email protected], 2006-2009 Bjorn Andersson [email protected]। साथ ही Anne Bezemer द्वारा प्रमुख योगदान।

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

यह सॉफ़्टवेयर "जैसा है" (AS IS) प्रदान किया जाता है और लेखक इस सॉफ़्टवेयर के संबंध में सभी वारंटियों को अस्वीकार करता है, जिसमें व्यापारिकता और उपयुक्तता की सभी निहित वारंटियाँ शामिल हैं। किसी भी स्थिति में लेखक किसी भी विशेष, प्रत्यक्ष, अप्रत्यक्ष, या परिणामी क्षति, या उपयोग, डेटा या लाभ की हानि से उत्पन्न होने वाली किसी भी प्रकार की क्षति के लिए उत्तरदायी नहीं होगा, चाहे वह अनुबंध के कार्य, लापरवाही या अन्य टॉर्ट कार्य में हो, जो इस सॉफ़्टवेयर के उपयोग या प्रदर्शन से उत्पन्न या संबंधित हो।

MD5 कार्यान्वयन L. Peter Deutsch द्वारा (लाइसेंस और स्रोत src/md5.[ch] में) कॉपीराइट (C) 1999, 2000, 2002 Aladdin Enterprises. सर्वाधिकार सुरक्षित।

टूल डाउनलोड करें