IPv6 विधि का उपयोग करने के लिए apt-get * नहीं * को मनाएं


239

ISP I जिस पर काम करता है वह अंततः IPv6 इंटरनेट से जुड़ने की तैयारी में एक आंतरिक IPv6 नेटवर्क स्थापित कर रहा है। नतीजतन, इस नेटवर्क के कई सर्वर अब चल रहे होने पर डिफ़ॉल्ट रूप से अपने IPv6 पते के माध्यम से security.debian.org से जुड़ने का प्रयास करते हैं apt-get update, और जब भी मैं किसी भी प्रकार के अपडेट डाउनलोड कर रहा होता हूं, तब तक लंबे समय तक प्रतीक्षा करने का परिणाम होता है। ।

क्या उपयुक्त तरीके से आईपीवी 4 को प्राथमिकता देने या आईपीवी 6 को अनदेखा करने का कोई तरीका है?


3
एक रूटिंग विफलता के साथ तुरंत वापस नहीं आना चाहिए?
pjc50

7
नहीं, यह पूरी तरह से संभव है कि उनके आंतरिक नेटवर्क में कई सबनेट्स (और होस्ट्स में IPv6 डिफ़ॉल्ट गेटवे) हो, लेकिन बाहरी दुनिया के लिए कोई IPv6 कनेक्टिविटी नहीं है।
एंड्रयू मेडिको

5
संभवतः स्थापित करने का एक तरीका है /etc/gai.confताकि security.debian.orgAAA रिकॉर्ड से पहले एक रिकॉर्ड लौटाया जाए, लेकिन मुझे ठीक से पता नहीं है कि उस फ़ाइल में क्या रखा जाए।
गाइल्स

3
@AndrewMedico - लेकिन क्या उनके नेटवर्क के डिफ़ॉल्ट गेटवे को यह पता नहीं होना चाहिए कि बाहरी ipV6 कनेक्टिविटी नहीं है और किनारे पर आउटबाउंड प्रयास को बहुत जल्दी अस्वीकार कर देते हैं? मुझे लगता है कि यहां एक नेटवर्क मुद्दा है और साथ ही सवाल पूछा जा रहा है।
माइकल कोहेन

7
बढ़त राउटर / फ़ायरवॉल को ठीक करना / जो भी समस्या पैदा कर रहा है वह इसे संभालने का "सबसे अच्छा" तरीका है। यह एक ICMP गंतव्य अप्राप्य पैकेट को लौटाना चाहिए । यह या तो नहीं हो रहा है, या कुछ इसे अवरुद्ध कर रहा है। किसी भी तरह से, समस्या आपके नेटवर्क के लोगों को बताई जानी चाहिए।
माइकल हैम्पटन

जवाबों:


319

-o Acquire::ForceIPv4=trueचलाते समय जोड़ें apt-get

यदि आप सेटिंग को निरंतर बनाना चाहते हैं तो बस /etc/apt/apt.conf.d/99force-ipv4 बनाएं और इसमें डालें Acquire::ForceIPv4 "true";:

echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4

विकल्प कॉन्फ़िगर करें Acquire::ForceIPv4और Acquire::ForceIPv6संस्करण 0.9.7.9 ~ exp1 ( बग 611891 देखें ) में जोड़ा गया था जो उबंटू सॉसी ( अक्टूबर 2013 में जारी) और डेबियन जेसी (अप्रैल 2015 में जारी) के बाद से उपलब्ध है।


7
इसे "स्वीकार" करने के लिए आगे बढ़ना; जबकि मूल 30-बिंदु उत्तर पूरी तरह से सही है, यह बहुत व्यापक पैमाने पर लागू होता है, जबकि यह केवल उपयुक्त- विकल्प को प्रतिबंधित करने का विकल्प प्रदान करता है ।
शादुर

कृपया अपने उत्तर में ठीक से वर्णन करें। -o Acquire :: ForceIPv4 = true कमांड के अलावा एक उपयोगकर्ता को ipv4 का उपयोग करने की अनुमति देने के लिए है
Kendrick

केंड्रिक के सुझाव के बाद उत्तर अपडेट किया गया
एमएमओए

1
मेरे बाकी हिस्सों से apt.confआपको इसे इस तरह से लिखने की ज़रूरत है: Acquire::ForceIPv4 "true";(दोहरे उद्धरण के साथ)
मिराबिलोस

6
@ZAB क्योंकि अगर आपके पास फ़ाइल तक पहुंच नहीं है, sudo echo 'test' > fileतो काम नहीं करेगा क्योंकि पुनर्निर्देशन को उपयोगकर्ता की अनुमति के साथ निष्पादित किया जाता है
LeartS

81

जैसा कि गिल्स कहते हैं , उपयोग करें gai.conf। टिप्पणियाँ:

  1. यह एपीटी की तुलना में बहुत निचले स्तर (DNS और IP नेटवर्किंग) पर काम करता है, इसलिए यह बदल जाएगा कि आपके सभी एप्लिकेशन नेटवर्क - कम से कम, सभी का उपयोग करें getaddrinfo
  2. अपने संपादन से पहले gai.conf, आपको इसे वापस करना चाहिए, और इसे भी पढ़ना चाहिए (चिंता न करें, यह छोटा है)। नीचे दिए गए संपादन शायद आपकी वर्तमान फ़ाइल में पहले से ही उल्लिखित हैं; यदि वर्तमान फ़ाइल नीचे बताए गए से कुछ अलग इंगित करती है, तो आपको संभवतः अपनी वर्तमान फ़ाइल में पसंद करना चाहिए।

लेकिन अगर यही आप चाहते हैं (जो शायद यह है), तो आगे बढ़ें। कहते हैं कि हमारे पास दो मेजबान हैं www.he.netऔर www.ripe.net:

$ host www.he.net
www.he.net is an alias for he.net.
he.net has address 216.218.186.2
he.net has IPv6 address 2001:470:0:76::2

$ host www.ripe.net
www.ripe.net has address 193.0.6.139
www.ripe.net has IPv6 address 2001:67c:2e8:22::c100:68b

केस 1: सभी मेजबानों के लिए IPV4 पसंद करें

/etc/gai.confनिम्नलिखित लाइन के लिए आवेदन करें :

precedence ::ffff:0:0/96  100

संपादित फ़ाइल (पुनः आरंभ करने की कोई आवश्यकता नहीं) को सहेजने के बाद, आपको telnetआईपीवी 4 का उपयोग करके नेटवर्किंग ऐप्स (जैसे, ) देखना चाहिए : उदा।

$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 216.218.186.2...

केस 2: विशिष्ट मेजबानों के लिए IPV6 पसंद करें

यदि हम केवल www.he.netअपने नेटवर्क के लिए IPV6 को प्राथमिकता देना चाहते हैं , तो हम इसके IPV6 पते पर सभी के लिए एक मुखौटा / उपसर्ग , या सिर्फ कुछ हिस्सा जोड़ सकते हैं /etc/gai.conf। जैसे, निम्नलिखित पंक्ति:

precedence 2001:470::/32 100

(संपादित फ़ाइल को सहेजने के बाद) का उत्पादन करता है

$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 2001:470:0:76::2...
^C

केस 3: विशिष्ट मेजबानों के लिए IPV4 पसंद करते हैं

अगर हम नकाब को उल्टा करेंगे तो क्या रिवर्स सच होगा? @GrueMaster के अनुसार, आकर्षक

precedence 2001:470::/96 100

उसके लिए IPV6 को निष्क्रिय करने के बाद उसके लिए काम किया security.ubuntu.com(अन्यथा यह हमेशा के लिए रुक जाता है)।


यह सभी देखें:


शायद उपरोक्त लिंक गायब होने की स्थिति में सामग्री संक्षिप्त करें?
फहीम मीठा

तो, किसी विशेष नाम के लिए IPv6 को निष्क्रिय करने का सिंटैक्स क्या है, या कम से कम किसी विशेष पते (श्रेणी) के लिए? यदि आप इसे अपनी पोस्ट में जोड़ते हैं, तो यह यहाँ सबसे अच्छा जवाब होगा।
गाइल्स

धन्यवाद। मैंने #security.debian.org has IPv6 address 2610:148:1f10:3::73 \n #security.debian.org has IPv6 address 2001:4f8:8:36::6 \n precedence 2001:4f8::/96 100 \n precedence 2610:148::/96 100 अपने /etc/gai.conf में 2 पंक्तियाँ जोड़ीं और apt-get update का काम अभी पूरा किया।
उज्ज्वल

10

आप अपने सभी मेजबानों के लिए प्रॉक्सी / कैश के रूप में कार्य करने के लिए एक अतिरिक्त मशीन पर apt-cacher-ng सेटअप कर सकते हैं । आप कॉन्फ़िगरेशन को केवल विशिष्ट होस्ट का उपयोग करने के लिए मजबूर कर सकते हैं या उस एक मशीन पर @badp द्वारा सुझाए गए / etc / मेजबान चाल का उपयोग कर सकते हैं।

apt-get install apt-cacher-ng

एक बार जब आप उपयुक्त-संचय-एनजी सेटअप तुम सिर्फ निम्न पंक्ति में (अपने cacher मशीन पर बात करने के लिए आईपी पते / होस्टनाम के साथ बदल) छोड़ने की ज़रूरत /etc/apt/apt.conf.d/90httpproxy

Acquire::http { Proxy "http://[192.168.1.254]:3142"; };

मैं बैंडविड्थ के उपयोग को कम करने के लिए उस सेटअप का उपयोग करता हूं लेकिन इसे आपकी समस्या को हल करना चाहिए। दुर्भाग्य से मैं apt-get के लिए सीधे ipv6 लुकअप को अक्षम करने के तरीके से अवगत नहीं हूं।


अभी भी एक सही समाधान नहीं है, लेकिन जितना संभव हो उतना अच्छा है। धन्यवाद।
Shadur

5

आप DNS प्रॉक्सी सर्वर सेट करके इसके चारों ओर काम कर सकते हैं जिसने ip6 प्रतिक्रियाओं को गिरा दिया।


क्या आपका स्थानीय रिसॉल्वर अभी भी AAAA रिकॉर्ड प्राप्त करने की कोशिश नहीं करेगा? और टाइम आउट?
मिकेल

4

/etc/hostsप्रासंगिक पते को ओवरराइड करने में एक पंक्ति जोड़ने के बारे में कैसे ? जैसे,

130.89.149.226  ftp.debian.org      
195.20.242.89   security.debian.org 

13
मैं इस समाधान को पिछले के लिए बचा लूंगा अगर कोई दूसरा रास्ता नहीं निकलता है; मैं वास्तव में/etc/hosts आईपी ​​पते के साथ अव्यवस्था पसंद नहीं करता हूं जो मैं खुद नहीं करता हूं।
Shadur

@ बहादुर हाँ, मैं आपकी बात पूरी तरह देख सकता हूँ :)
badp

नोट: इनको फ़्लिप करने की आवश्यकता है, इसलिए यह आईपी है तब होस्टनाम
माइक टी

1

पुराने विषय को हाइजैक करना, लेकिन हाल ही में उसी समस्या का सामना करना। तो, ऊपर दी गई सलाह और होस्ट और हूइस के उत्पादन के आधार पर :

# host security.debian.org
security.debian.org has address 212.211.132.250
security.debian.org has address 195.20.242.89
security.debian.org has address 212.211.132.32
security.debian.org has IPv6 address 2001:8d8:580:400:6564:a62:0:2
security.debian.org has IPv6 address 2001:a78:5:0:216:35ff:fe7f:be4f
security.debian.org has IPv6 address 2001:a78:5:1:216:35ff:fe7f:6ceb

एक से थोड़ा अलग तरीके से हल समस्या - IPv6 नेटवर्क जो होते हैं की पूर्वता उतारा security.debian.org में /etc/gai.conf :

# Make IPv6 for security.debian.org undesirable
precedence 2001:8d8:580::/48    5
precedence 2001:a78:5::/48      5

इसलिए, अभी भी IPv6 को सुरक्षा के अलावा पसंद किया जाता है ।


1

08 अक्टूबर 2014 तक, मेरे पास एक ही मुद्दा था, स्थानीय नेटवर्क पर एक प्रॉक्सी के पीछे डेबियन को अपडेट करने की कोशिश कर रहा था। इस उम्मीद में कि यह दूसरों के लिए प्रासंगिक होगा, मैं यहां अपनी प्रतिक्रिया पोस्ट करता हूं। जैसा कि दूसरों ने उल्लेख किया है, संपादन /etc/hostsकुछ ऐसा है जिसके साथ सावधानी बरतनी चाहिए।

लेकिन व्यक्तिगत रूप से मैं सिर्फ अपडेट होना चाहता था।

अद्यतन करते समय /etc/apt/source.list की सामग्री (यह अद्यतन से पहले अलग थी ..):

deb http://http.debian.net/debian/ testing main
deb-src http://http.debian.net/debian/ testing main

deb http://mirrors.kernel.org/debian/ wheezy main
deb-src http://mirrors.kernel.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main

/Etc/apt/apt.conf की सामग्री:

Acquire::http::proxy "http://192.168.1.10:7777/";
Acquire::http::Timeout "10";
Acquire::ftp::Timeout "10";

/ आदि / मेजबानों के अलावा:

#Workaround for making apt-get work (08-10-2014)
195.20.242.89 security.debian.org
130.89.148.12 ftp.debian.org

अब, apt-get update ; apt-get upgradeरूट के रूप में अच्छी तरह से काम कर रहा है।

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

उदाहरण:

$ host ftp.debian.org
ftp.debian.org has address 130.89.148.12

इसने सिस्टम को सफलतापूर्वक अपडेट किया Debian GNU/Linux testing (jessie)। आप परीक्षण रिपॉजिटरी के साथ नहीं चलना चाहते हैं, तो बस इसे स्रोतों से हटा सकते हैं। परीक्षण रिपॉजिटरी आपको कई संकुल के हाल के अपडेट देता है, लेकिन स्थिर नहीं माना जाता है।


फिर से, hostsफ़ाइल को संशोधित करना एक अत्यधिक उप-अपनाने वाला समाधान है।
शादुर

0

मुझे ऐसा करने का एक बेहतर तरीका मिल गया है। अपनी sources.listफ़ाइल खोलें और रेपो के होस्टनाम को नोट करें। उनके आईपीवी 4 पते प्राप्त करें , फिर sources.listहोस्टनाम के बजाय आईपीवी 4 पते के साथ संपादित करें । Apt-get को अब आपके द्वारा निर्दिष्ट IPv4 पतों पर रिपॉजिटरी से संपर्क करना चाहिए, IPv6 को दरकिनार करते हुए।

नुकसान यह है कि रेपो में आमतौर पर किसी प्रकार का लोड संतुलन और / या आईपी जियोलोकेशन सेट होता है, जो पाठ्यक्रम के इस तरीके को बायपास करता है। हालाँकि, यह कोई फर्क नहीं पड़ता अगर केवल कुछ ही लोग कर रहे हैं। यदि आप पाते हैं कि एक दर्पण धीमा है, तो एक अन्य रेपो आईपी पता प्राप्त करने का प्रयास करें (उदाहरण के लिए, एक ऑनलाइन पिंग सेवा का उपयोग करके) और इसका उपयोग करें।


2
यह वास्तव में एक बुरा समाधान है, वास्तव में, उन कारणों के लिए जो आप पहले से ही वर्णन करते हैं।
शादुर

-4

आप के लिए काम करता है तो आप यह कोशिश कर सकते हैं

user@ubuntuvm:~$ sudo bash
root@ubuntuvm:~# echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6 

-> अपने इंटरफ़ेस का नाम बदलें


यह मेरे द्वारा पूछे गए सवाल से अलग प्रश्न है।
शादुर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.