Δεν έχω internet όταν το anonsurf είναι σταματημένο

Έχω βάλει σε ένα VM (virtualbox) το Parrot OS 5 Home. Έχω ενεργοποιήσει και το anonsurf αλλά αν δεν τρέχει δεν έχω internet. Μόνο όταν τρέχει το anonsurf έχω internet και βέβαια είναι μέσα από το Tor δίκτυο που είναι πολλή αργό. Έχω τσεκάρει τις ρυθμίσεις της κάρτας δικτύου και φαίνονται όλα σωστά. Πού αλλού μπορώ να ψάξω?

└──╼ #ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:8e:d2:5c brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 86126sec preferred_lft 86126sec

Βρήκα και αυτό στο internet Network not working without anonsurf - Network - Parrot Community αλλά σε μένα η εντολή cat /etc/resolv.conf δεν βγάζει τίποτα:

└──╼ #cat /etc/resolv.conf
cat: /etc/resolv.conf: No such file or directory

Δοκίμασε

/usr/sbin/service resolvconf start
/usr/bin/dnstool address dhcp

Αν έχεις ακόμα θέμα μάλλον φταίει το πείραγμα που κάνει το script εκκίνησης του anonsurf με τους IPTables κανόνες.

Πολλά πράγματα τσακώνονται για το ποιος θα έχει τον έλεγχο του αρχείου /etc/resolv.conf. Δες

Αν φτιάξεις το αρχείο με το χέρι συνήθως τίποτα δεν το πειράζει, αλλά λέω συνήθως.

Από το παραπάνω άρθρο

Αν λοιπόν ξεκινήσεις την υπηρεσία systemd-resolved.service και αυτό δεν υπάρχει θα το φτιάξει. Μια λύση είναι πριν ξεκινάς το anonsurf (για το οποίο δεν έχω την παραμικρή ιδέα τι είναι και πως δουλεύει και πρέπει να υπάρχει καλύτερος τρόπος) να σβήνεις το αρχείο και όταν το σταματάς να ξεκινάς το systemd-resolved.service

Μάλλον έχει bugs το anonsurf, έτσι τουλάχιστον όπως το έχουν βάλει οι προγραμματιστές στο ParrotOS (το έχω εγκαταστήσει manual σε ubuntu και δεν είχα τέτοια θέματα).
Φτιάχνω manually το resolv.conf και παίζει μια χαρά το internet:


Τρέχω το anonsurf και πάει και αλλάζει τις ρυθμίσεις…

… αλλάζοντας το namserver σε 127.0.0.1, και έχω internet μέσω Tor.
image
Κάνω stop το anonsurf και σβήνει εντελώς το αρχείο!
image

Το πρόβλημα δεν είναι το start, το πρόβλημα είναι το stop που σβήνει εντελώς το αρχείο /etc/resolv.conf με αποτέλεσμα:

┌─[user@Parrot5VM]─[~]
└──╼ $/usr/sbin/service resolvconf start
Failed to start resolvconf.service: Unit resolvconf.service not found.
┌─[✗]─[user@Parrot5VM]─[~]
└──╼ $/usr/bin/dnstool address dhcp
[!] /etc/resolvconf/resolv.conf.d/tail is not writable. Did you try sudo?
/run/resolvconf/resolv.conf doesn't exist. Maybe resolvconfig is not running.
[DNS error] File resolv.conf not found

[*] Applied DNS settings

…και το πιο περίεργο είναι ότι στις ρυθμίσεις δικτύου από το GUI φαίνονται μια χαρά οι nameservers.

.

Αλλά κάνοντας restart το Network manager (sudo systemctl restart NetworkManager.service ) φτιάχνει τις ρυθμίσεις στο resolv.conf

Το πρόβλημα είναι αυτή ακριβώς η εντολή τότε. Αυτό που κάνει το dnstool address dhcp είναι διαγράφει το resolv.conf και το κάνει link στο generated του resolvconf το οποίο ωστόσο δεν τρέχει (και μάλιστα δεν υπάρχει καν).

'Όπως έχω δείξει στα άρθρα που ανέφερα παραπάνω, τι ακριβώς παρέχει το DNS resolution σε μια διανομή είναι αρκετά πολύπλοκο και διαφέρει από διανομή σε διανομή. Αν τη μία στιγμή έχεις το TOR την άλλη το annonsurf την άλλη κάτι άλλο, θα γίνει ένας μικρός χαμούλης.

Θα κοίταζα τι παρέχει DNS τη διανομή μου και θα προσπαθούσα όταν έχει νόημα να έχω το ίδιο. Διαφορετικά σταματάω και ξεκινώ την αντίστοιχη υπηρεσία, αφού πρώτα έχω φτιάξει το /etc/resolv.conf. Συνήθως αυτό είναι symlink κάπου άλλου.

Για παράδειγμα, στο σύστημα μου με systemd-resolve έχω

 /etc/resolv.conf../run/systemd/resolve/stub-resolv.conf

( … που τρέχει ένα nameserver στο 127.0.0.53 που είναι ρυθμισμένο να μεταφέρει το ερώτημα σε ένα PiHole, που με την σειρά του χρησιμοποιεί το unbound όπως δείχνω σε αυτό το άρθρο και δε χρησιμοποιώ κανένα γνωστό DNS Server να με καταγράφει. Δουλεύει :disguised_face: )

Βασικά το τι συμβαίνει φαίνεται στο λινκ που έδωσα στο πρώτο ποστ.

Όταν τρέξει το anonsurf start αυτό τρέχει service anonsurfd start το οποίο με τη σειρά του τρέχει anondaemon start.

Το anondaemon start αρχικά χρησιμοποιεί το dnstool address 127.0.0.1 για να γράψει (αφότου διαγράψει το παλιό) ένα resolv.conf με μοναδική διεύθυνση το argument που δόθηκε. Στη συνέχεια αποθήκευει τους υπάρχοντας IPTables κανόνες και φτιάχνει νέους που κάνουν redirect όλη τη κίνηση μέσω TOR.

Μέχρι εδώ καλά.

Όμοια, όταν τρέξει το anonsurf stop αυτό τρέχει service anonsurfd stop το οποίο με τη σειρά του τρέχει anondaemon stop.

Το anondaemon stop αρχικά επαναφέρει τους κανόνες παλιούς IPTables κανόνες. Στη συνέχεια τρέχει το dnstool address dhcp το οποίο διαγράφει το resolv.conf και δημιουργεί ένα λινκ από /etc/resolv.conf σε /run/resolvconf/resolv.conf. Όμως το resolvconf δεν υπάρχει και εμφανίζει το error χωρίς να δημιουργήσει κανένα resolv.conf (οπότε κι εμφανίζει το δεύτερο error).

1 «Μου αρέσει»

Που σημαίνει… bug!

Αυτά τα καλά που έχει το OpenSource… μπορείς να εντοπίσεις από το κώδικα το πρόβλημα, ασχέτως αν δεν μπορείς άμεσα να το λύσεις. Απλά, θα πρέπει να είσαι προγραμματιστής, με σχετική εμπειρία στο να διαβάζει κώδικα τρίτων, να γνωρίζεις C, VB, script, commands, και ένα σωρό άλλα παρόμοια, και να έχεις το χρόνο, την υπομονή και την “τρέλα” για να ασχοληθείς με αυτά.
Συμπέρασμα (κατά την δική μου γνώμη): αυτός είναι ένας από τους βασικούς λόγους όπου το Linux (που βασίζεται πολλή στο OpenSource) δεν θα γίνει ποτέ Windows (σε δημοτικότητα)! :bomb:

Ναι είναι bug αλλά δεν βρίσκω που μπορεί να γίνει report. Βασικά η λύση (πέρα από το να κάνεις restart το NetworkManager[^1]) είναι είτε να εγκατασταθεί το resolvconf που λείπει, με:

sudo apt install resolvconf
sudo resolvconf -u

είτε να τροποποιηθεί το dnstool ώστε να χρησιμοποιεί το NetworkManager. Λογικά το καλύτερο είναι το τελευταίο εφόσον το dnstool χρησιμοποιείται έτσι κι αλλιώς.

[^1]: Το οποίο εφόσον δουλεύει μπορείς να πετάξεις την εντολή στο anondaemon στη θέση του dnstool address dhcp για να μην χρειάζεται να το κάνεις χειροκίνητα.

1 «Μου αρέσει»

Αυτό το νήμα έκλεισε αυτόματα 2 ημέρες μετά την τελευταία απάντηση. Δεν επιτρέπονται πλέον νέες απαντήσεις.