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

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

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 διανομές με ελαφρώς διαφορετικές τις εντολές.

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

Μέθοδος 1η : μέσω grub

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

sudo gedit /etc/default/grub

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

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

sudo update-grub

Κάνουμε επανεκκίνηση του υπολογιστή μας και αν θέλουμε να διαπιστώσουμε ότι έχει όντως απενεργοποιηθεί το  ipv6 δίνουμε στο τερματικό

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

Εφόσον η εντολή δεν επιστρέψει κάποιο αποτέλεσμα έχουμε απενεργοποιήσει επιτυχώς το ipv6

Μέθοδος 2η (upstart): τροποποίηση του /etc/sysctl.conf

Αυτή η μέθοδος όπως είπαμε απευθύνεται σε διανομές προ-systemd εποχής και γίνεται δίνοντας στο τερματικό

sudo gedit /etc/sysctl.conf

Και προσθέτουμε στο τέλος του αρχείου τις ακόλουθες γραμμές

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

Στη συνέχεια σώζουμε το αρχείο και κλείνουμε το gedit. Εν συνεχεία δίνουμε

sysctl -p

και εφόσον δεν έχουμε κάνει κάποιο λάθος θα πρέπει να μας επιστραφεί το αποτέλεσμα

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

Τέλος δίνοντας στο τερματικό

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

Πρέπει να βγει αποτέλεσμα

1

Ακολούθως θα προβούμε στις απαραίτητες ενέργειες προκειμένου να ενεργοποιείται στο ξεκίνημα του συστήματος μας. Σε τερματικό δίνουμε

sudo gedit /etc/init/rimadiip.conf

και εισάγουμε

# description "Ξεκίνα το sysctl κατά το boot"

description "sysctl"

start on runlevel [2345]
stop on runlevel [016]

console log

respawn
respawn limit unlimited

exec /sbin/sysctl -p

Επίλογος

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

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

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

  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». Η ρύθμιση θα ισχύσει αμέσως.

    • Καλημέρα

      Ειδικά στο 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