क्या iptables वाले कुछ उपकरणों के लिए DNS को बाध्य करना संभव है?


1

मैं कुछ उपकरणों के लिए DNS को मजबूर करने के लिए iptables का उपयोग करने की कोशिश कर रहा हूं (Asus RT-N66U पर शिब्बी टमाटर)। मुझे इस तरह के कॉन्फ़िगरेशन का वर्णन करने वाले ऑनलाइन कुछ भी नहीं मिला है। निकटतम मैं यह पा सकता था:

# For the Samsung TV, use WAN DNS (i.e., Comcast).
# #############################################################
iptables -t nat -A PREROUTING -i br0 -s samsung-tv.home.lan -p tcp --dport 53 -j DNAT --to $(nvram get wan_get_dns | awk -F' ' '{print $1}')
iptables -t nat -A PREROUTING -i br0 -s samsung-tv.home.lan -p udp --dport 53 -j DNAT --to $(nvram get wan_get_dns | awk -F' ' '{print $1}')

# For every other client, use LAN DNS.
# #############################################################
iptables -t nat -A PREROUTING -i br0 -p udp --dport 53 -j DNAT --to $(nvram get lan_ipaddr)
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to $(nvram get lan_ipaddr)

यह करीब है, लेकिन कुछ समस्याएं हैं।

1) मैं इसे होस्टनाम के बजाय मैक पते से करना पसंद करूंगा। क्या यह संभव है?

2) यह केवल क्लाइंट के लिए एक एकल DNS सर्वर की अनुमति देता है। क्या इस (या समान) पद्धति का उपयोग करके प्राथमिक और द्वितीयक DNS असाइन करने का कोई तरीका है?

जवाबों:


2

प्रश्न n.1 हाँ यह किया जा सकता है: बस उपयोग करें

iptables -t nat -A PREROUTING -i br0 -m mac --mac-source MAC-ADDRESS-OF-SAMSUNG -p tcp --dport 53 -j DNAT --to $(nvram get wan_get_dns | awk -F' ' '{print $1}')

पहला नया विकल्प, -M मैक , मैक मॉड्यूल को लोड करने के लिए iptables को निर्देश देता है । मैं शिब्बी टोमेटो से परिचित नहीं हूं, लेकिन मानक लिनक्स में यह मॉड्यूल काफी मानक है।

प्रश्न n.2 आप हमेशा किसी काम को आसपास कर सकते हैं। मान लीजिए कि आपने अपने सैमसंग टीवी को 8.8.4.4 और 8.8.8.8 को DNS के रूप में उपयोग करने का निर्देश दिया है (भले ही वे DNS नहीं हैं जो आप चाहते हैं)। फिर आप निम्नलिखित दो आदेशों के साथ पिछले iptables कमांड को प्रतिस्थापित करके एक दूसरे DNS को कार्यान्वित करने की तरह कर सकते हैं :

 iptables -t nat -A PREROUTING -i br0 -d 8.8.4.4 -m mac --mac-source MAC-ADDRESS-OF-SAMSUNG -p tcp --dport 53 -j DNAT --to $(nvram get wan_get_dns1 | awk -F' ' '{print $1}')

 iptables -t nat -A PREROUTING -i br0 -d 8.8.8.8 -m mac --mac-source MAC-ADDRESS-OF-SAMSUNG -p tcp --dport 53 -j DNAT --to $(nvram get wan_get_dns2 | awk -F' ' '{print $1}')

यह निम्नानुसार काम करता है: यदि टीवी को अपने पहले DNS से ​​उत्तर नहीं मिलता है (जो कि यह 8.8.4.4 लगता है लेकिन हम जानते हैं कि wan_get_dns1 है), तो यह दूसरे से संपर्क करने की कोशिश करेगा, 8.8.8.8, जिसे अब पुनर्निर्देशित किया गया है दूसरे DNS के लिए, wan_get_dns।


@ jluce50 समय की देरी सर्वर के लिए अप्रासंगिक है: यह ऊपर दिए गए दो नियमों का पालन करते हुए टीवी से आने वाले DNAT पैकेट होगा: एक पैकेट प्राप्त करता है, DNATs इसे भेजता है, इसे दूर भेजता है। यदि पहला डीएनएस नीचे है, तो यह कुछ भी नहीं करता है, लेकिन टीवी, जो एक उत्तर की प्रतीक्षा कर रहा है जो नहीं आ रहा है, नुकीला हो जाता है और दूसरे DNS को एक पैकेट भेजता है। अब सर्वर इस दूसरे पैकेट को दूसरे DNS पर डीएनएटीएस भेजता है, इसे दूर भेजता है, जवाब का इंतजार नहीं करता है।
मारियसमैटुटिया

धन्यवाद! यह आदर्श नहीं है, क्योंकि मैं हमेशा नहीं जानता कि क्लाइंट ने प्राथमिक / माध्यमिक DNS (बच्चों के कंप्यूटर, उदाहरण के लिए) के लिए क्या निर्दिष्ट किया है, लेकिन ऐसा लगता है कि यह उतना ही करीब है जितना मैं चाहता हूं। संपादित करें: क्षमा करें, मैंने आपका उत्तर देखने से पहले अपनी मूल टिप्पणी हटा दी थी। मुझे एहसास हुआ कि मुझे गलतफहमी थी कि यह कैसे काम करेगा।
jluce50

0

iptablesवास्तव में DNS सर्वर प्रबंधन के लिए नहीं है - यह DNS सर्वर को सेट नहीं करता है, बल्कि यह क्लाइंट से सभी DNS प्रश्नों को हाईजैक करता है और उन्हें एक विशिष्ट सर्वर पर जाने के लिए मजबूर करता है। डीएचसीपी सर्वर डीएनएस सर्वर की जानकारी को किसी भी तरह से सौंपने के बाद आप डीएचसीपी सर्वर को कॉन्फ़िगर करना बेहतर होगा। यह एकमात्र तरीका है जिससे आप प्राथमिक / द्वितीयक DNS सर्वर सेट कर पाएंगे।

आप मैक पते के द्वारा रूट कर सकते हैं, लेकिन मैं इसके खिलाफ सलाह दूंगा कि जब तक डिवाइस राउटर से सीधे जुड़ा हुआ है, तब तक आसानी से टूट जाएगा। यदि आप होस्टनाम का उपयोग नहीं करना चाहते हैं, तो एक आईपी का उपयोग करें।


1
हाँ, मुझे वह मिल गया है, लेकिन मुझे जो चाहिए वह करने के लिए एक बेहतर तरीका नहीं मिल रहा है। राउटर की डीएचसीपी सेटिंग्स मुझे डीएनएस प्रति क्लाइंट सेट करने की अनुमति नहीं देती हैं (जो मैं देख सकता हूं)। मैं IP का उपयोग नहीं करना चाहता क्योंकि यह केवल तभी काम करता है जब उपयोगकर्ता DHCP का उपयोग कर रहा हो। यदि वे एक स्थिर IP सेट करते हैं तो यह पूरी तरह से इस कार्यक्षमता को दरकिनार कर देता है (मैं Dnsmasq का उपयोग कर रहा था, जो इस मुद्दे को छोड़कर, महान काम करता है)।
jluce50
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.