ICMP Redirect Host क्यों होता है?


25

मैं 4 सबनेट के लिए एक राउटर के रूप में डेबियन बॉक्स स्थापित कर रहा हूं। उसके लिए मैंने एनआईसी पर 4 वर्चुअल इंटरफेस को परिभाषित किया है जहां लैन जुड़ा हुआ है ( eth1)।

eth1      Link encap:Ethernet  HWaddr 94:0c:6d:82:0d:98  
          inet addr:10.1.1.1  Bcast:10.1.1.255  Mask:255.255.255.0
          inet6 addr: fe80::960c:6dff:fe82:d98/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6026521 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35331299 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:673201397 (642.0 MiB)  TX bytes:177276932 (169.0 MiB)
          Interrupt:19 Base address:0x6000 

eth1:0    Link encap:Ethernet  HWaddr 94:0c:6d:82:0d:98  
          inet addr:10.1.2.1  Bcast:10.1.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:19 Base address:0x6000 

eth1:1    Link encap:Ethernet  HWaddr 94:0c:6d:82:0d:98  
          inet addr:10.1.3.1  Bcast:10.1.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:19 Base address:0x6000 

eth1:2    Link encap:Ethernet  HWaddr 94:0c:6d:82:0d:98  
          inet addr:10.1.4.1  Bcast:10.1.4.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:19 Base address:0x6000 

eth2      Link encap:Ethernet  HWaddr 6c:f0:49:a4:47:38  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::6ef0:49ff:fea4:4738/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:199809345 errors:0 dropped:0 overruns:0 frame:0
          TX packets:158362936 errors:0 dropped:0 overruns:0 carrier:1
          collisions:0 txqueuelen:1000 
          RX bytes:3656983762 (3.4 GiB)  TX bytes:1715848473 (1.5 GiB)
          Interrupt:27 

eth3      Link encap:Ethernet  HWaddr 94:0c:6d:82:c8:72  
          inet addr:192.168.2.5  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::960c:6dff:fe82:c872/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:110814 errors:0 dropped:0 overruns:0 frame:0
          TX packets:73386 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:16044901 (15.3 MiB)  TX bytes:42125647 (40.1 MiB)
          Interrupt:20 Base address:0x2000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:22351 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22351 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2625143 (2.5 MiB)  TX bytes:2625143 (2.5 MiB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:41358924 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23116350 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:3065505744 (2.8 GiB)  TX bytes:1324358330 (1.2 GiB)

मेरे पास इस नेटवर्क से जुड़े दो अन्य कंप्यूटर हैं। एक में आईपी 10.1.1.12 (सबनेट मास्क 255.255.255.0) और दूसरा 10.1.2.20 (सबनेट मास्क 255.255.255.0) है। मैं 10.1.2.20 से 10.1.1.12 तक पहुंचने में सक्षम होना चाहता हूं।

चूंकि पैकेट अग्रेषण राउटर में सक्षम है और फॉरवर्ड चेन की नीति ACCEPT है (और कोई अन्य नियम नहीं हैं), मैं समझता हूं कि 10.1.2.20 से 10.1.1.12 तक राउटर से गुजरने में कोई समस्या नहीं होनी चाहिए।

हालाँकि, मुझे यही मिलता है:

$ ping -c15 10.1.1.12
PING 10.1.1.12 (10.1.1.12): 56 data bytes
Request timeout for icmp_seq 0
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 81d4   0 0000  3f  01 e2b3 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 1
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 899b   0 0000  3f  01 daec 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 2
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 78fe   0 0000  3f  01 eb89 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 3
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 14b8   0 0000  3f  01 4fd0 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 4
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 8ef7   0 0000  3f  01 d590 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 5
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 ec9d   0 0000  3f  01 77ea 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 6
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 70e6   0 0000  3f  01 f3a1 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 7
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 b0d2   0 0000  3f  01 b3b5 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 8
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 f8b4   0 0000  3f  01 6bd3 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 9
Request timeout for icmp_seq 10
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 1c95   0 0000  3f  01 47f3 10.1.2.20  10.1.1.12 

Request timeout for icmp_seq 11
Request timeout for icmp_seq 12
Request timeout for icmp_seq 13
92 bytes from router2.mydomain.com (10.1.2.1): Redirect Host(New addr: 10.1.1.12)
Vr HL TOS  Len   ID Flg  off TTL Pro  cks      Src      Dst
 4  5  00 0054 62bc   0 0000  3f  01 01cc 10.1.2.20  10.1.1.12 

क्यों होता है ऐसा?

मैंने जो पढ़ा है, Redirect Hostप्रतिक्रिया से इस तथ्य का कुछ लेना देना है कि दोनों मेजबान एक ही नेटवर्क में हैं और एक छोटा मार्ग है (या इसलिए मुझे समझ में आया)। वे वास्तव में एक ही भौतिक नेटवर्क में हैं, लेकिन अगर वे एक ही सबनेट पर नहीं हैं (तो वे एक दूसरे को नहीं देख सकते हैं) बेहतर मार्ग क्यों होगा?

मुझे किसकी याद आ रही है?

कुछ अतिरिक्त जानकारी जिन्हें आप देखना चाहते हैं:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
127.0.0.1       0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth3
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth2
10.1.4.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.1.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.1.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.1.3.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth2
0.0.0.0         192.168.2.1     0.0.0.0         UG    100    0        0 eth3

# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

# iptables -L -n -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  -- !10.0.0.0/8           10.0.0.0/8          
MASQUERADE  all  --  10.0.0.0/8          !10.0.0.0/8          

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

जवाबों:


22

पहले ब्लश पर, ऐसा लगता है कि डेबियन आईसीएमपी रीडायरेक्ट भेजने के लिए सीमाओं को खींच रहा है; RFC 792 (इंटरनेट प्रोटोकॉल) को उद्धृत करना ।

  The gateway sends a redirect message to a host in the following
  situation.  A gateway, G1, receives an internet datagram from a
  host on a network to which the gateway is attached.  The gateway,
  G1, checks its routing table and obtains the address of the next
  gateway, G2, on the route to the datagram's internet destination
  network, X.  If G2 and the host identified by the internet source
  address of the datagram are on the same network, a redirect
  message is sent to the host.  The redirect message advises the
  host to send its traffic for network X directly to gateway G2 as
  this is a shorter path to the destination.  The gateway forwards
  the original datagram's data to its internet destination.

इस स्थिति में, G1 10.1.2.1( eth1:0ऊपर) है, X है 10.1.1.0/24और G2 है 10.1.1.12, और स्रोत है 10.1.2.20(यानी G2 and the host identified by the internet source address of the datagram are **NOT** on the same network)। हो सकता है कि एक ही इंटरफ़ेस पर इंटरफ़ेस उपनाम (या द्वितीयक पते) के मामले में ऐतिहासिक रूप से इसकी अलग-अलग व्याख्या की गई हो, लेकिन कड़ाई से बोलने पर मुझे यकीन नहीं है कि हमें डेबियन को उस रीडायरेक्ट को भेजना चाहिए।

अपनी आवश्यकताओं के आधार पर, आप सबनेट के लिए बनाने के द्वारा इस हल करने में सक्षम हो सकता है eth1की तरह कुछ 10.1.0.0/22(से मेजबान पतों 10.1.0.1- 10.1.3.254) के बजाय व्यक्ति के लिए इंटरफ़ेस उपनाम का उपयोग कर /24ब्लॉक ( eth1, eth1:0, eth1:1, eth1:2); यदि आपने ऐसा किया है, तो आपको संलग्न सभी होस्टों के नेटमास्क को बदलने की आवश्यकता होगी और जब तक आप एक तक विस्तार नहीं करते, आप 10.1.4.x का उपयोग करने में सक्षम नहीं होंगे /21

संपादित करें

हम मूल प्रश्न के दायरे से थोड़ा बाहर हैं, लेकिन मैं आपकी टिप्पणी में उल्लिखित डिज़ाइन / सुरक्षा मुद्दों के माध्यम से काम करने में मदद करूँगा।

यदि आप अपने कार्यालय के उपयोगकर्ताओं को एक-दूसरे से अलग करना चाहते हैं, तो एक सेकंड के लिए पीछे हटें और अब आपके पास जो कुछ सुरक्षा मुद्दे हैं, उन्हें देखें:

आपके पास वर्तमान में एक ईथरनेट प्रसारण डोमेन में चार सबनेट हैं। एक प्रसारण डोमेन के सभी उपभोक्ता सुरक्षा आवश्यकताओं आप टिप्पणी में व्यक्त पूरा नहीं करता है (सभी मशीनों अन्य मशीनों से प्रसारण देखेंगे और अनायास Layer2 पर एक दूसरे से यातायात भेज सकता है, उनके डिफ़ॉल्ट गेटवे किया जा रहा है की परवाह किए बिना eth1, eth1:0, eth1:1या eth1:2)। ऐसा कुछ नहीं है जो आपके डेबियन फ़ायरवॉल को बदलने के लिए कर सकता है (या शायद मुझे कहना चाहिए कि आपके डेबियन फ़ायरवॉल को बदलने के लिए कुछ भी नहीं करना चाहिए # :-)

  • आपको टिप्पणियों में बताई गई सुरक्षा नीति के आधार पर उपयोगकर्ताओं को Vlans में असाइन करने की आवश्यकता है। ठीक से कॉन्फ़िगर किया गया Vlan ऊपर वर्णित समस्याओं को ठीक करने के लिए एक लंबा रास्ता तय करेगा। यदि आपका ईथरनेट स्विच Vlans का समर्थन नहीं करता है, तो आपको ऐसा करना चाहिए।
  • कई सुरक्षा डोमेन तक पहुँचने के संबंध में 10.1.1.12, आपके पास कुछ विकल्प हैं:
    • विकल्प 1 : सभी उपयोगकर्ताओं के लिए सेवाओं को एक्सेस करने की आवश्यकता को देखते हुए 10.1.1.12, आप सभी उपयोगकर्ताओं को एक आईपी सबनेट में डाल सकते हैं और निजी योजनाओं (आरएफसी 5517) के साथ सुरक्षा नीतियों को लागू कर सकते हैं , यह मानते हुए कि आपका ईथरनेट स्विच इसका समर्थन करता है। इस विकल्प के iptablesलिए सुरक्षा सीमाओं को पार करने से इंट्रा-ऑफिस ट्रैफिक को सीमित करने के लिए नियमों की आवश्यकता नहीं होगी (जो कि निजी Vlans के साथ पूरा किया गया है)।
    • विकल्प 2 : आप सकता है अलग सबनेट में उन (VLANs के अनुरूप) रख दिया और लागू iptablesनियम आपकी सुरक्षा नीतियों को तैनात करने
  • वलान स्तर पर आपने अपना नेटवर्क सुरक्षित करने के बाद, विभिन्न उपयोगकर्ताओं को आपके कई अपलिंक भेजने के लिए स्रोत-आधारित रूटिंग नीतियों की स्थापना की ।

FYI करें, यदि आपके पास एक रूटर है जो VRF का समर्थन करता है , तो इसमें से कुछ और भी आसान हो जाता है; IIRC, आपके पास एक सिस्को IOS मशीन ऑनसाइट है। आपके पास पहले से मौजूद मॉडल और सॉफ़्टवेयर छवि के आधार पर, सिस्को एक शानदार काम कर सकता है जो आपके उपयोगकर्ताओं को एक-दूसरे से अलग कर सकता है और स्रोत-आधारित रूटिंग नीतियों को लागू कर सकता है।


मूल रूप से जो मुझे चाहिए वह एक कार्यालय के विभिन्न क्षेत्रों के लिए 4 सबनेट्स होना चाहिए। कुछ सबनेट एक आईएसपी का उपयोग करके इंटरनेट पर जाएंगे और अन्य एक अलग का उपयोग करेंगे। अलग-अलग सबनेट से मशीनें एक-दूसरे को देखने या कनेक्ट करने में सक्षम नहीं होनी चाहिए। 10.1.1.12 की मेजबानी के लिए EXCEPT जो कुछ सेवाएं प्रदान करता है जो सभी के लिए उपलब्ध होनी चाहिए। वर्तमान में मैंने इसके लिए उपयुक्त फॉरवर्ड नियमों की स्थापना नहीं की है। हालाँकि, जब से सभी फॉरवर्ड स्वीकार किए जाते हैं मैंने सोचा कि मुझे 10.1.2.20 से 10.1.1.12 तक पिंग करने में सक्षम होना चाहिए।
एल बार्टो

हम्म ... ठीक है, धन्यवाद माइक। मैं अधिक गहराई से वीएलएएन में देखूंगा। मैंने यह सब शुरू करने से पहले इसके बारे में सोचा था, और मुझे लगा कि मुझे इसकी आवश्यकता नहीं है। हमारे पास जो स्विच हैं, वे वीएलएएन का समर्थन करते हैं, हालांकि वे अप्रबंधित स्विच हैं इसलिए, अगर मैं गलत नहीं हूं, तो मुझे लगता है कि मुझे डेबियन राउटर पर टैगिंग करनी होगी, है ना? सबनेट्स का अलगाव वास्तव में इस कार्यालय में एक महत्वपूर्ण मुद्दा नहीं है, लेकिन यह कुछ ऐसा है जो मुझे लगता है कि यह बहुत अच्छा होगा अगर इसे बहुत अधिक अतिरिक्त काम की आवश्यकता नहीं है। मैं इसे देखूंगा और देखूंगा कि मैं क्या कर सकता हूं :)
एल बार्टो

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

यह सही है, जो मुझे उपयोगकर्ता से समझ में आता है वह स्विच "टैग को बनाए रखने" का समर्थन करता है, लेकिन "वास्तविक टैगिंग करने" का नहीं। डेबियन के संबंध में स्पष्टीकरण के लिए धन्यवाद। बात यह है कि भले ही मैं दो सबनेट रखता हूं, फिर भी मुझे 10.1.1.12 तक पहुंचने के लिए सबनेट 10.1.2.0/24 से मशीनों की आवश्यकता होगी।
एल बार्टो

एक अलग सबनेट में मशीनें अभी भी एक्सेस करने में सक्षम होनी चाहिए 10.1.1.12। यदि आप Linux को ICMP भेजने से रोकते हैं iptables, तो आप अभी भी CPU को ICMP संदेश भेजने से बर्न करेंगे, लेकिन कम से कम वे आपके होस्ट टेबल में स्थापित नहीं होंगे। यदि आपने डेबियन पर एक और ईथरनेट इंटरफ़ेस जोड़ दिया है (यानी प्रति उपयोगकर्ता 'क्लास' के लिए एक इंटरफ़ेस समर्पित), तो डेबियन को आईसीएमपी अनचेक नहीं भेजना चाहिए ; इसका अर्थ यह होगा कि आपके पास दो अलग-अलग ईथरनेट स्विच हैं: प्रत्येक उपयोगकर्ता 'क्लास' के लिए। आपके केबल बिछाने वाले तकनीशियन इसे नापसंद करेंगे, लेकिन इससे काम हो जाता है
माइक पेनिंगटन

3

यह वास्तव में स्पष्ट नहीं है कि आप क्या करने की कोशिश कर रहे हैं, लेकिन मैं निम्नलिखित कह सकता हूं।

ये सबनेट एक ही भौतिक इंटरफ़ेस से जुड़े होते हैं। लिनक्स राऊटर ICMP पुनर्निर्देशित संदेश लौटाएगा जब प्राप्त पैकेट को उसी भौतिक इंटरफ़ेस पर अग्रेषित किया जाना चाहिए।


मुझे इन 4 सबनेट को संभालने की आवश्यकता है जो सभी एक ही एनआईसी के माध्यम से जुड़े हुए हैं। यह विचार है कि अलग-अलग सबनेट से होस्ट मेजबान 10.1.1.12 को छोड़कर एक दूसरे से कनेक्ट नहीं हो सकते हैं, जो सभी के लिए उपलब्ध होना चाहिए। मैंने अभी तक इसके लिए नियमों को परिभाषित नहीं किया है, इसलिए मुझे लगा कि उन सबनेट्स में से कोई भी होस्ट 10.1.1.12 तक पहुंचने में सक्षम होना चाहिए। क्या ICMP रीडायरेक्ट से बचने का कोई तरीका है?
एल बार्टो

1
@ElBarto, एक विधि एक iptablesनियम को जोड़ना है जो बाहर जाने वाले रीडायरेक्ट को छोड़ देता हैeth1
माइक पेनिंगटन

1

मैं खालिद की टिप्पणियों से सहमत हूं और उनके वाक्यांश के अंत में जोड़ूंगा:

"ये सबनेट एक ही भौतिक इंटरफ़ेस से जुड़े हैं। लिनक्स राउटर ICMP रीडायरेक्ट संदेश को लौटाएगा जब प्राप्त पैकेट को उसी भौतिक इंटरफ़ेस पर भेजा जाना चाहिए" उसी गंतव्य सबनेट पर फिर अगले अनुरोध के अनुरोध को पुनर्निर्देशित करना। यह मेरे लिए आज एक मिकरोटिक लिनक्स राउटर और एक एफ 5 बिगिप एलटीएम डिवाइस का उपयोग करके होता है।

root@(primaryadc)(cfg-sync In Sync)(Standby)(/Common)(tmos)# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.153.20: icmp_seq=1 Redirect Host(New nexthop: 192.168.153.2)
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=82.8 ms
From 192.168.153.20: icmp_seq=2 Redirect Host(New nexthop: 192.168.153.2)
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=123 ms
**routing table**
0.0.0.0  192.168.153.20  0.0.0.0         UG        0 0          0 external
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.