Πως να απενεργοποιήσετε το IPv6 στο Linux

apenergopoiisi-ipv6

Αρκετοί από εσάς ίσως να έχετε παρατηρήσει κατά την διάρκεια της πλοήγησης σας στο internet, ένα latency (καθυστέρηση) κατά το άνοιγμα των ιστοσελίδων. Επίσης, κάποιες φορές ίσως να λαμβάνετε ένα μήνυμα λάθους κατά τη διάρκεια της αναβάθμισης του συστήματος, του στυλ «Προσωρινή αποτυχία εύρεσης του archive.ubuntu.com»
Αυτό οφείλεται στο IPv6, την 6η version του πρωτοκόλλου πάνω στο οποίο χτίστηκε όλο το διαδίκτυο.

ΕΝΗΜΕΡΩΣΗ: 07.12.2017

apenergopoiisi-ipv6

Τι είναι όμως το IPv6;

Σε κάθε συσκευή στο διαδίκτυο, όπως ένας ηλεκτρονικός υπολογιστής ή ένα κινητό τηλέφωνο, πρέπει να αποδοθεί μία Διεύθυνση IP, ένας αριθμός αποτελούμενος από συγκεκριμένο αριθμό bits, ο οποίος και αποτελεί την ταυτότητα της συσκευής, ώστε να είναι δυνατή η επικοινωνία της στο Internet. Με τον ολοένα αυξανόμενο αριθμό συσκευών που συνδέονται στο διαδίκτυο, παρουσιάστηκε η ανάγκη περισσοτέρων διευθύνσεων, από όσες μπορεί να παράσχει το IPv4.

To IPv4 χρησιμοποιεί διευθύνσεις 32 bit, το οποίο επιτρέπει περίπου 4,3 δισεκατομμύρια διαφορετικές διευθύνσεις. Το IPv6 χρησιμοποιεί διευθύνσεις 128 bit, το οποίο επιτρέπει 3.4×10^38 διαφορετικές διευθύνσεις. Τα δύο πρωτόκολλα δεν έχουν σχεδιαστεί ώστε να μπορούν να συνεργάζονται, δυσκολεύοντας έτσι την μετάβαση στο IPv6. Οι διευθύνσεις IP του πρωτοκόλλου IPv6, αποτελούνται από 8 ομάδες των τεσσάρων δεκαεξαδικών ψηφίων, χωρισμένων με άνω και κάτω τελεία, π.χ 2001:0db8:85a3:0042:1000:8a2e:0370:7334. [πηγή: Wikipedia]

apenergopoiisi-ipv4_ipv6_table

Και εμένα τι με νοιάζει;;;

Σύμφωνα με το blog post του Geoff Huston, μέλος της ΜΚΟ apnic.net, υπεύθυνο για την καταχώρηση διευθύνσεων στην ευρύτερη περιοχή της Ασίας, αναδεικνύει το πρόβλημα των IPv6 διευθύνσεων έναντι των «κλασσικών» IPv4. Συγκεκριμένα :

While the connection performance is roughly equivalent once the connection is established, the probability of establishing the connection is not the same. The current connection failure rate for IPv4 connections was seen to be some 0.2% of all connection attempts, while the equivalent connection failure rate for unicast IPv6 is nine times higher, at 1.8% of all connection attempts.

apenergopoiisi-ipv6-sfalmata

Κοινώς τα ποσοστά αποτυχίας σύνδεσης των IPv6 είναι 9 φορές υψηλότερα από τα αντίστοιχα των IPv4. Οι μετρήσεις στο 60% των δοκιμών γίνανε με διαφορά 10ms μεταξύ τους γεγονός που δεν αφήνει περιθώρια αμφισβήτησης για την αποτελεσματικότητα τους ή τυχόν πρόβλημα των sites.

Με λίγα λόγια με την απενεργοποίηση του IPv6, θα μπαίνετε πιο γρήγορα στο site που σας ενδιαφέρει και θα δείτε μια αισθητή διαφορά στο φόρτωμα των σελίδων.

Όμως για να εντοπίσουμε την «πηγή του κακού» δηλαδή αν μπορεί το router μας να κάνει αιτήσεις IPv6 ή όχι θα κάνουμε το παρακάτω test στο τερματικό:

dig AAAA www.google.com

Αν δείτε στο τέλος αυτή την εγγραφή:

;; ANSWER SECTION:
www.google.com. 207 IN AAAA 2a00:1450:4016:804::2004

σημαίνει ότι το router σας δεν έχει πρόβλημα. Αν όμως λάβετε μήνυμα :

AAAA www.google.com
;; global options: +cmd
;; connection timed out; no servers could be reached

τότε σημαίνει ότι το router σας είναι η πηγή του κακού.

Ωραία με πείσατε, πως το κλείνω το ρημάδι;

Στη συνέχεια θα προτείνουμε κάποιους τρόπους πως να κλείσετε το IPv6 στο Ubuntu, οι οποίοι θα δουλεύουν σίγουρα και σε παράγωγες διανομές (πχ Linux Mint …κλπ)

Ο έλεγχος της IPv6 γίνεται από τον «παντοκράτορα», Linux πυρήνα. Θα πρέπει λοιπόν να πούμε στον πυρήνα Linux να μην ενεργοποιήσει την δυνατότητα διευθυνσιοδότησης IPv6.

Για να ελέγξουμε εάν το IPv6 είναι ενεργοποιημένο στο σύστημά μας, μπορούμε να δώσουμε τη παρακάτω εντολή σε ένα τερματικό.

test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"

Εάν μας γυρίσει κάποιο αποτέλεσμα, τότε είναι ενεργοποιημένο. Εάν όχι, τότε δεν είναι ενεργοποιημένο.

Η πρώτη μέθοδος απενεργοποίησης είναι η πιο απλή και μπορεί να χρησιμοποιηθεί σε νεότερες εκδόσεις του Ubuntu, 16.04+

Εδώ θα χρησιμοποιήσουμε το αρχείο sysctl.d και θα το κάνουμε έτσι ώστε οι ρυθμίσεις να είναι μόνιμες. Για παράδειγμα, εάν επεξεργαστούμε άμεσα το αρχείο sysctl.conf τότε σε ενδεχόμενη αναβάθμιση του συστήματος ίσως αντικατασταθεί από το default αρχείο της διανομής. Φτιάχνοντας όμως ένα δικό μας αρχείο ρυθμίσεων μέσα στο sysctl.d, αυτό θα παραμείνει μέχρι να το αφαιρέσουμε εμείς οι ίδιοι.

Από ένα τερματικό και με τον αγαπημένο μας text editor με δικαιώματα root ανοίγουμε (και ταυτόχρονα δημιουργούμε) το αρχείο.

gksudo gedit /etc/sysctl.d/60-ipv6-disable.conf

Προσθέτουμε μέσα τις παρακάτω γραμμές:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

και σώζουμε το αρχείο. Στην επόμενη επανεκκίνηση οι ρυθμίσεις θα έχουν ενεργοποιηθεί.

Η δεύτερη μέθοδος απενεργοποίησης γίνεται μέσω του GRUB Bootloader. Είναι και αυτή γενική, και όχι ειδική μόνο για το Ubuntu και μπορεί να εφαρμοστεί σχεδόν σε όλες τις διανομές Linux.

Σε ένα ανοιχτό παράθυρο τερματικού δίνουμε

gksudo gedit /etc/default/grub

εντοπίζουμε τη γραμμή που λέει GRUB_CMDLINE_LINUX_DEFAULT και προσθέτουμε ipv6.disable=1 όπως φαίνεται στην εικόνα

apeneropoihsi ipv6 grub
Όπως παρατηρούμε στην εικόνα, υπογραμμίσαμε τα σχόλια που μας ενημερώνουν ότι αν αλλαχθεί το αρχείο πρέπει να ενημερωθεί το configuration file του grub που βρίσκεται στη διαδρομή /boot/grub/grub.cfg .
Εφόσον κάνουμε τις αλλαγές μας δίνουμε πάλι στο τερματικό

sudo update-grub

Κάνουμε επανεκκίνηση του υπολογιστή μας για να ισχύσουν οι αλλαγές.

Η τρίτη μέθοδος απενεργοποίησης αφορά μόνο τον apt-get, τον διαχειριστή ενημερώσεων του Ubuntu (και συγγενών διανομών) και την εφαρμόζουμε σε περίπτωση που αντιμετωπίσουμε πρόβλημα όπως φαίνεται στη παρακάτω εικόνα:

ipv6_problem_cerebrux.net
Η παραπάνω εικόνα είναι από πραγματικό πρόβλημα σε χρήστη Ubuntu το οποίο δημοσιεύτηκε στο Facebook Group και το οποίο επιλύθηκε με τον τρόπο που θα δούμε παρακάτω.

Με τον αγαπημένο μας text editor και με δικαιώματα root ανοίγουμε (και ταυτόχρονα δημιουργούμε) το παρακάτω αρχείο:

gksudo gedit /etc/apt/apt.conf.d/99forceIPv4

Προσθέτουμε μέσα τη παρακάτω γραμμή:

Acquire::ForceIPv4 true;

και σώζουμε το αρχείο. Οι αλλαγές ενεργοποιούνται άμεσα. Από εδώ και στο εξής ο apt-get καθώς και όλα τα προγράμματα που θεωρούνται front ends αυτού και διαβάζουν τις ρυθμίσεις του, θα χρησιμοποιούν μόνον IPv4 για τη λήψη αρχείων (πχ ενημερώσεις λογισμικού).

Επίλογος

Αν και προτείνεται η απενεργοποίηση του IPv6 σε διανομές Linux, δεν είναι κάτι που θα προταθεί απευθείας από τις εταιρείες που βρίσκονται πίσω από αυτές αλλά περισσότερο σαν ένα hack από τις κοινότητες.

Μελλοντικά το IPv6 θα είναι καθεστώς αλλά ως τότε υπάρχει περιθώριο βελτίωσης της τεχνολογίας αυτής, δεδομένου ότι υπάρχει ακόμη ένας σημαντικός αριθμός IPv4 διευθύνσεων.

Advertisements

6 thoughts on “Πως να απενεργοποιήσετε το IPv6 στο Linux

  1. Σημαντική η πληροφορία.
    Πως όμως ξέρω ποια από τις δύο μεθόδους θα χρησιμοποιήσω; Υπάρχει κάποιος τρόπος να το μάθω από την κονσόλα;
    Δεν θέλω να μαντεύω γιατί μπορεί πχ να έχω μία λίγο παλιότερη διανομή αλλά παιζοντας με το λειτουργικό μου να έχω κάνει και μία αναβαθμισούλα και να μην το θυμάμαι 😉

    1. Το upstart ως διαδικασία εκκίνησης αντικαθίσταται σταδιακά από το systemd. Όπως μπορείς να δεις και εδώ https://en.wikipedia.org/wiki/Systemd#Adoption_and_reception θα δεις από πότε το systemd έρχεται ως default.

      Απαντώντας στην ερώτηση σου.

      Αν έχεις κάποια από τις «μεγάλες» διανομές τότε είσαι πιθανότατα στο systemd, επομένως η 1η μέθοδος συνίσταται. Αν έχεις όμως κάποια LTS (Έκδοση μακράς υποστήριξης) υπάρχει το ενδεχόμενο να έχει upstart (όπως πχ το Ubuntu 14.04) τότε θα έκανα τη 2η.

  2. Χρήσιμο άρθρο. Μερικές πρόσθετες πληροφορίες είναι:

    Από προσωπική εμπειρία έχω διαπιστώσει πως πρέπει να γίνουν και τα δύο βήματα για να υπάρξει αποτέλεσμα. Επίσης, σε Arch Linux αντί της επεξεργασίας του αρχείου /etc/sysctl.conf όπως γίνεται στο Ubuntu, απλώς προσθέτω μια γραμμή με την επιλογή «noipv6rs» στο αρχείο /etc/dhcpcd.conf (# cat ‘noipv6rs’ >> etc/dhcpcd.conf).

    Ειδικά στο Arch Linux είναι απαραίτητο να γίνουν και τα δύο, αλλιώς αντιμετωπίζω το παρακάτω πρόβλημα: https://bbs.archlinux.org/viewtopic.php?id=174752

    Αν το πρόβλημα υπάρχει μόνο στην περιήγηση, το IPv6 μπορεί να απενεργοποιηθεί μεμονωμένα για τον Firefox ως εξής: Πληκτρολογούμε τη διεύθυνση about:config και κάνουμε αναζήτηση με τον όρο IPv6.
    Στη γραμμή ρυθμίσεων «network.dns.disableIPv6» που θα εμφανιστεί, απλώς κάνουμε διπλό κλικ στην επιλογή «false» ώστε να αλλάξει σε «true». Η ρύθμιση θα ισχύσει αμέσως.

    1. Καλημέρα

      Ειδικά στο arch το πρόβλημα που αναφέρεις (γνωστό και παλιό και σπαστικό) το έλυσα κάνοντας την 1η μέθοδο αλλά όχι εκει που γράφω αλλά όπως βλέππεις στην εικόνα εδώ https://dl.dropboxusercontent.com/1/view/e3tlt44hd13emjx/Apps/Shutter/Screenshot%20from%202016-04-14%2010-24-56.png

      Κατά τα άλλα συμφωνώ σε αυτά που λου λες. Προσωπικά λόγω και χάλια router (το μαμά της HOL) στο Ubuntu βλέπω αισθητή διαφορά στον update-manager αλλά και στο άνοιγμα (μόνο στο άνοιγμα όχι στο φόρτωμα) κάποιων ιστοσελίδων.

      Ευχαριστούμε για τις πρόσθετες πληροφορίες.

  3. Καλησπέρα σας! Ενδιαφέρον άρθρο! Έκανα το τέστ αρχικά όπως γράφετε και παραπάνω αλλά μου έβαγε τα εξής και δεν έχω καταλάβει ακόμα τι είναι καλύτερο να κάνω… http://imgur.com/0ogoE4N

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s