DNS लुकअप IP और पोर्ट को पुनर्निर्देशित करने के लिए Iptables


22

मुझे पता चला है कि मेरा ISP (verizon) पोर्ट 53 पर सभी DNS ट्रैफ़िक को रोक रहा है।

Iptables का उपयोग करके, मैं सभी DNS लुकअप ट्रैफ़िक को एक विशिष्ट IP और पोर्ट (5353) पर पुनर्निर्देशित करना चाहता हूं। मेरे कंप्यूटर को पोर्ट 53 पर किसी अन्य कंप्यूटर से कनेक्ट करने का कोई भी प्रयास 23.226.230.72 लगभग 353 पर पुनर्निर्देशित किया जाना चाहिए।

DNS सर्वर और पोर्ट को सत्यापित करने के लिए मैं उपयोग करने की कोशिश कर रहा हूं, मैंने इस कमांड को चलाया है।

~$ dig +short serverfault.com @23.226.230.72 -p5353
198.252.206.16

यह iptables नियम है जिसका मैं उपयोग करने की कोशिश कर रहा हूं।

iptables -t nat -A OUTPUT -p udp -m udp --dport 53 -j DNAT --to-destination 23.226.230.72:5353

उस नियम को जोड़ने के बाद, सभी DNS लुकअप नहीं मिले। वेबसाइट पिंग्स वापस unknown host। वेबपेजों का कहना है कि 'सर्वर नॉट फाउंड'।

~$ mtr serverfault.com
Failed to resolve host: Name or service not known

मैं चाहता हूं कि मेरा DNS 23.226.230.72 to353 से खींचा जाए। मैं iptables नियम कैसे बना सकता हूं?

संपादित करें

मेरे ISP द्वारा DNS (पोर्ट 53) अवरोधन का प्रदर्शन। पोर्ट 5353 के माध्यम से खुदाई से 23.226.230.72 तक ट्रेस आउटपुट, और फिर पोर्ट 53।

~$ dig +trace stackexchange.com @23.226.230.72 -p5353

; <<>> DiG 9.9.5-3-Ubuntu <<>> +trace stackexchange.com @23.226.230.72 -p5353
;; global options: +cmd
.           86395   IN  NS  ns7.opennic.glue.
.           86395   IN  NS  ns4.opennic.glue.
.           86395   IN  NS  ns3.opennic.glue.
.           86395   IN  NS  ns5.opennic.glue.
.           86395   IN  NS  ns2.opennic.glue.
.           86395   IN  NS  ns10.opennic.glue.
.           86395   IN  NS  ns1.opennic.glue.
.           86395   IN  NS  ns6.opennic.glue.
.           86395   IN  NS  ns8.opennic.glue.
dig: couldn't get address for 'ns8.opennic.glue': no more


~$ dig +trace stackexchange.com @23.226.230.72 -p53

; <<>> DiG 9.9.5-3-Ubuntu <<>> +trace stackexchange.com @23.226.230.72 -p53
;; global options: +cmd
.           7440    IN  NS  f.root-servers.net.
.           7440    IN  NS  d.root-servers.net.
.           7440    IN  NS  j.root-servers.net.
.           7440    IN  NS  i.root-servers.net.
.           7440    IN  NS  g.root-servers.net.
.           7440    IN  NS  k.root-servers.net.
.           7440    IN  NS  a.root-servers.net.
.           7440    IN  NS  h.root-servers.net.
.           7440    IN  NS  e.root-servers.net.
.           7440    IN  NS  m.root-servers.net.
.           7440    IN  NS  c.root-servers.net.
.           7440    IN  NS  b.root-servers.net.
.           7440    IN  NS  l.root-servers.net.
;; Received 239 bytes from 23.226.230.72#53(23.226.230.72) in 2948 ms

stackexchange.com.  215 IN  A   198.252.206.16
;; Received 62 bytes from 192.228.79.201#53(b.root-servers.net) in 116 ms

मेरे वर्तमान iptables। iptables-save

~# iptables-save
# Generated by iptables-save v1.4.21 on Tue Jul 15 23:06:52 2014
*mangle
:PREROUTING ACCEPT [79950528:41742899703]
:INPUT ACCEPT [78748282:41360159554]
:FORWARD ACCEPT [13:5427]
:OUTPUT ACCEPT [85455483:57472640071]
:POSTROUTING ACCEPT [85480442:57475512901]
-A POSTROUTING -o lxcbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Tue Jul 15 23:06:52 2014
# Generated by iptables-save v1.4.21 on Tue Jul 15 23:06:52 2014
*nat
:PREROUTING ACCEPT [71:18713]
:INPUT ACCEPT [7:474]
:OUTPUT ACCEPT [109:7855]
:POSTROUTING ACCEPT [109:7855]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -d 172.17.0.0/16 -j MASQUERADE
-A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE
COMMIT
# Completed on Tue Jul 15 23:06:52 2014
# Generated by iptables-save v1.4.21 on Tue Jul 15 23:06:52 2014
*filter
:INPUT ACCEPT [78748139:41360144354]
:FORWARD ACCEPT [13:5427]
:OUTPUT ACCEPT [85454926:57472600172]
:fail2ban-ssh - [0:0]
:fail2ban-vsftpd - [0:0]
-A INPUT -p tcp -m multiport --dports 21,20,990,989 -j fail2ban-vsftpd
-A INPUT -p tcp -m multiport --dports 22,6622 -j fail2ban-ssh
-A INPUT -i lxcbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i lxcbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i lxcbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -i lxcbr0 -p udp -m udp --dport 67 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o lxcbr0 -j ACCEPT
-A FORWARD -i lxcbr0 -j ACCEPT
-A fail2ban-ssh -j RETURN
-A fail2ban-vsftpd -j RETURN
COMMIT

तो आप उस आईपी (23.226.230.72) और पोर्ट (5353) में सभी पोर्ट 53 ट्रैफिक को रीडायरेक्ट करने की कोशिश कर रहे हैं?
ताचोमी

कृपया अपने iptables rulesयहाँ पोस्ट करें
Networker

@tachomi Correct
Rucent88

या फिर आप अपने आईएसपी के DNS का उपयोग नहीं कर सकता है ... Google का सार्वजनिक डीएनएस सर्वर हैं 8.8.8.8और8.8.4.4
क्रीक

@ मुझे लगता है कि आप गलत समझ रहे हैं। मेरा isp पोर्ट 53 के माध्यम से सभी ट्रैफ़िक को रोक रहा है। भले ही मैं Google dns सर्वर का उपयोग करना चाहता था, मैं उन्हें एक्सेस नहीं कर सकता।
Rucent88

जवाबों:


13

इन सभी निर्देशों को रूट (sudo) के रूप में निष्पादित करें।

इस फ़ाइल को संपादित करें।

/etc/NetworkManager/NetworkManager.conf

DnsMasq को लाइन में टिप्पणी करके अक्षम करें dns=dnsmasq#लाइन के सामने रख दिया

#dns=dnsmasq

अपनी नेटवर्किंग को पुनरारंभ करें।

service network-manager restart

इन iptable नियम जोड़ें।

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to 23.226.230.72:5353
iptables -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to 23.226.230.72:5353

2
यह समाधान ओएस के साथ अद्यतन करता है, और शून्य संसाधनों का उपभोग करता है, और शून्य सुरक्षा जोखिम, बूट स्क्रिप्ट के साथ सुपर आसान सेटअप और शून्य रखरखाव है। नकारात्मक पक्ष यह बहुत लचीला नहीं है
Rucent88

3

ऐसा लगता है कि आपके DNS प्रश्नों के साथ क्या होता है, इसके नियंत्रण में होना क्या है।

मुझे यकीन नहीं है कि iptables का उपयोग करना मेरा पसंदीदा समाधान होगा।

क्या आपने एक स्थानीय डीएनएस सर्वर स्थापित करने के बारे में सोचा है जो केवल मेजबान और आपके इच्छित पोर्ट के लिए आपके अनुरोधों को आगे बढ़ाता है? एक उदाहरण: bind9 फारवर्डर विकल्प का उपयोग करके आप एक फारवर्डर में एक पोर्ट जोड़ सकते हैं।

इस तरह के एक सेट-अप को बनाए रखना और समस्या निवारण करना बहुत आसान है, और अधिक लचीला हो सकता है। कैशिंग के लाभ पर विचार करें, या केवल उस मामले पर विचार करें जिसमें आपका बाहरी DNS सर्वर डाउन है। आपके DNS कॉन्फ़िगरेशन में कई फ़ॉरवर्डर्स हो सकते हैं, लेकिन iptables नियमों में केवल एक IP ...।

डिजिटल महासागर में एक ट्यूटोरियल में बाइंड 9 की स्थापना का एक अच्छा अवलोकन है । बस पोर्ट को फ़ॉरवर्डर्स में जोड़ें और आपको सभी सेट होना चाहिए।

Bind9 बहुत सारे संसाधनों का उपभोग नहीं करता है और आसानी से कॉन्फ़िगर किया जाता है (या कम से कम: iptables से आसान है :-))


ऊह, और उस सेटअप में कहने के लिए अनावश्यक, DNS सर्वर को अग्रेषित करते हुए अपने स्थानीय, अपने डिवाइस का उपयोग करने के लिए मत भूलना।
विंसेंट डी बेरे

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

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

वास्तव में, IMHO, यह 99% मामलों में परिदृश्य को बनाए रखने का बेहतर तरीका है। केवल 1% जो लागू नहीं होता है, जब आप कैप्टिव पोर्टल सिस्टम को कॉन्फ़िगर कर रहे हैं, लेकिन यह एक और कहानी है।
ivanleoncz

2

इसे इस्तेमाल करे:

सबसे पहले आपको अग्रेषण विकल्प को सक्षम करना होगा

/etc/sysctl.conf

के मान पर सेट करें

net.ipv4.ip_forward = 1

परिवर्तनों को सक्षम करें

sysctl -p 

निम्न को सहेजें और चलाएं:

iptables -t nat -A PREROUTING -p tcp --sport 53 -j DNAT --to-destination 23.226.230.72:5353
iptables -t nat -A POSTROUTING -j MASQUERADE

यदि आप PREROUTING के बारे में इन-इंटरफेस (-i eth1) निर्दिष्ट कर सकते हैं या / और आउट-इंटरफेक्ट (-o eth0) में पोस्टिंग उपयोगी हो सकता है।

ध्यान दें: MASQUARADE लाइन आवश्यक है जबकि यह मुख्य IP के साथ गंतव्य IP को मास्क करता है।


मैं sysctl net.ipv4.ip_forward=1और iptables नियमों में डाल दिया । DNS काम कर रहा है, लेकिन यह अभी भी मेरे isp द्वारा इंटरसेप्ट किया जा रहा है। तो यह मुझे इंगित करता है कि DNS अभी भी पोर्ट 53 के माध्यम से भेजा जा रहा है।
Rucent88

मैंने आपका नियम बदल दिया udp, लेकिन मुझे वही परिणाम मिले।
Rucent88

क्या आप कृपया iptables- सेव का आउटपुट डाल सकते हैं? मैं क्या कर सकता हूं कि आपके द्वारा केवल निर्दिष्ट MASQUERADE - 10.0.3.0/24 को मास्किंग किया गया है, इसलिए यदि आप उस लाइन को अक्षम कर सकते हैं और एक पोस्टिंग -j
MASQUERADE को

मैंने आपके द्वारा अनुरोधित जानकारी को जोड़ा
Rucent88

ठीक है, चलो थोड़ा हरा को समझें .... सभी बंदरगाह 53 INCOMING ट्रैफ़िक वह है जिसे आप 23.226.230.72 या OUTGOING एक पर पुनर्निर्देशित करना चाहते हैं?
ताचोमि

1

इसे इस्तेमाल करे:

iptables -t nat -A OUTPUT -p tcp --dport 53 -j DNAT --to 23.226.230.72:5353;

iptables -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to 23.226.230.72:5353;

iptables -t nat -A POSTROUTING -j MASQUERADE

इसका अर्थ है:
1) पोर्ट टीसी
3 पर 23.226.230.72 पर पोर्ट करने के लिए दुनिया से संपर्क करने वाला कोई भी स्थानीय उपयोगकर्ता 5353. 2) 2) 1 के रूप में एक ही है, लेकिन यूडीपी
3 के लिए) आउटगोइंग पैकेट पर स्रोत जानकारी सेट करें।


0
iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to XX.XX.XX.XX:5353
iptables -t nat -A PREROUTING -p udp  --dport 53 -j DNAT --to XX.XX.XX.XX:5353
iptables -t nat -A POSTROUTING -j MASQUERADE

तथ्य यह है कि इस जवाब में "5353" का उल्लेख नहीं है, मुझे विश्वास है कि यह स्वचालित रूप से गलत है।
जी-मैन का कहना है कि 'मोनिका' की बहाली

सही किया गया .........
जिबरी

ठीक है, मैं आपके उत्तर पर दूसरा नज़र डाल रहा हूं। यह करने के लिए बहुत समान प्रतीत हो रहा है tachomi के जवाब को छोड़कर (1) आप को बदल दिया है sportकरने के लिए  dport(यह था, जाहिरा तौर पर, कि tachomi के जवाब में एक त्रुटि battman622 तीन साल पहले कहा , (2) आप के लिए एक लाइन (आदेश) जोड़ा udp(यह है टैकोमी के उत्तर के लिए एक वैध सुधार, लेकिन एक जो पहले ही एक टिप्पणी में उल्लेख किया गया था  ... (Cont'd)
जी-मैन कहते हैं 'मोनिका'

(जारी) ... और कई अन्य उत्तर), और (3) आप की जगह --to-destinationके साथ  --to।  मैन पेज ऐसा नहीं कहता है --toऔर  --to-destinationसमकक्ष हैं; इसके विपरीत, यह कहता है कि लक्ष्य के --toसाथ प्रयोग किया जाता है NETMAP(लक्ष्य के विपरीत  DNAT) और इसके तर्क में पोर्ट नंबर शामिल नहीं है। (हालांकि मैं ध्यान देता हूं कि कुछ अन्य उत्तर आपके द्वारा किए --toगए तरीके का उपयोग करते हैं।) क्या आप सुनिश्चित हैं कि --toआप जिस तरह से इसका उपयोग करते हैं (पोर्ट संख्या के साथ, DNATलक्ष्य के साथ  ) काम करता है? ... (Cont'd)
जी-मैन ने कहा कि मोनिका

(Cont'd) ... (यदि हां, तो शायद किसी को मैन पेजों के अनुरक्षक (ओं) को एक परिवर्तन अनुरोध प्रस्तुत करना चाहिए।) क्या  किसी भी तरह से श्रेष्ठता से --toबेहतर है   --to-destination?
जी-मैन का कहना है कि 'मोनिका' की बहाली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.