Μέθοδος 1: Χρησιμοποιήστε ρυθμίσεις στατικής διεπαφής
Μέθοδος 2: Κάντε το resolv.conf αμετάβλητο
Μέθοδος 3: Πείτε ευγενικά στο FreeBSD να αφήσει τις ρυθμίσεις σας ήσυχες
Εάν χρησιμοποιείτε το δικό σας πρόγραμμα επίλυσης ή θέλετε να χρησιμοποιήσετε ένα από τρίτο πάροχο, ενδέχεται να διαπιστώσετε ότι το /etc/resolv.conf
αρχείο σας αντικαθίσταται από το DHCP. Υπάρχουν αρκετοί τρόποι επίλυσης αυτού του προβλήματος. Δεδομένου ότι είναι πιθανό να θέλετε να κάνετε επανεκκίνηση για να βεβαιωθείτε ότι οι αλλαγές σας παραμένουν σταθερές, και δεδομένου ότι θα είστε μαϊμούδες με τις ρυθμίσεις δικτύου στην αρχή, προτείνω ανεπιφύλακτα να το κάνετε αυτό σε μια δοκιμή ή/και εκτός αιχμής ώρες.
Τώρα λοιπόν, εδώ είναι τρεις μέθοδοι, από το χειρότερο στο καλύτερο. Σημειώστε ότι όλες οι μέθοδοι σε αυτόν τον οδηγό γράφτηκαν για το FreeBSD 10. Οι χρήστες Linux μπορούν να ανατρέξουν σε αυτόν τον οδηγό .
Μέθοδος 1: Χρησιμοποιήστε ρυθμίσεις στατικής διεπαφής
Στις περιορισμένες δοκιμές μου, αυτό έχει ως αποτέλεσμα ελαφρώς ταχύτερους χρόνους εκκίνησης, καθώς δεν χρειάζεται να περιμένετε μέχρι το DHCP να εκχωρήσει τις ρυθμίσεις δικτύου σας. Ωστόσο, έχω δει να αναφέρουν σε πολλά έγγραφα του Vultr ότι η χρήση ρυθμίσεων στατικής διεπαφής είναι απογοητευτική και ότι πρέπει να τηρείτε το DHCP. Υποθέτω ότι έχουν έναν καλό λόγο για αυτό και έτσι συνέχισα να χρησιμοποιώ το DHCP ο ίδιος. Ωστόσο, εάν αποφασίσετε να ακολουθήσετε αυτή τη διαδρομή, ακολουθήστε τα παρακάτω βήματα.
- Προσδιορίστε την IP του διακομιστή σας, τη μάσκα δικτύου και την IP της πύλης.
- Τροποποιήστε
/etc/rc.conf
για να χρησιμοποιήσετε αυτές τις τιμές αντί για DHCP.
- Κάντε επανεκκίνηση για να δοκιμάσετε τις ρυθμίσεις.
Προσδιορίστε IP/μάσκα δικτύου/πύλη
Υποθέτοντας ότι η διεπαφή σας είναι vtnet0, εκτελέστε τα εξής:
ifconfig vtnet0 | grep inet
Αυτό θα σας δώσει τη διεύθυνση IP και τη μάσκα δικτύου για τον διακομιστή σας:
inet 10.10.10.10 netmask 0xffffff00 broadcast 10.10.10.255
Στο FreeBSD αρέσει να χρησιμοποιεί hex για τη μάσκα δικτύου. Το παραπάνω μετατρέπεται σε 255.255.255.0
αν είστε περίεργοι. Μπορείτε να βρείτε έναν εύχρηστο πίνακα εδώ , αλλά μην φοβάστε: μπορείτε απλώς να αντιγράψετε τη διεύθυνση hex στα αρχεία διαμόρφωσης (ή να τη μετατρέψετε σε δεκαδικό αν προτιμάτε).
Μπορείτε να βρείτε την πύλη με διάφορους τρόπους. Ορίστε ένα:
route get default | grep gateway
θα επιστρέψει κάτι όπως:
gateway: 10.10.10.1
Τροποποίηση /etc/rc.conf
με νέες τιμές
Οπλισμένοι με την IP, τη μάσκα δικτύου και την πύλη, ήρθε η ώρα να τα προσθέσετε στη διαμόρφωση συστήματος. Συνιστώ ανεπιφύλακτα να δημιουργήσετε αντίγραφα ασφαλείας αυτού του αρχείου πριν κάνετε οποιεσδήποτε αλλαγές, καθώς θα είναι πολύ πιο εύκολο να το αναιρέσετε σε περίπτωση που μπλέξετε. Τώρα, ανοίξτε /etc/rc.conf
το πρόγραμμα επεξεργασίας της επιλογής σας και κάντε τις ακόλουθες αλλαγές:
# Comment out this line:
# ifconfig_vtnet0="dhcp"
# Add these lines:
defaultrouter="10.10.10.1"
ifconfig_vtnet0="inet 10.10.10.10 netmask 0xffffff00"
Προφανώς, θα πρέπει να βεβαιωθείτε ότι θα αντικαταστήσετε την πραγματική IP, τη μάσκα δικτύου και την πύλη σας για τις προφανείς απομιμήσεις μου.
Επανεκκίνηση και δοκιμή
shutdown -r now
Κάντε επανεκκίνηση του διακομιστή σας χρησιμοποιώντας και βεβαιωθείτε ότι δημιουργείται αντίγραφο ασφαλείας σωστά. Πραγματοποιήστε ό,τι δοκιμές κρίνετε απαραίτητο για να βεβαιωθείτε ότι όλα λειτουργούν σωστά. Εάν το δίκτυο δεν είναι προσβάσιμο, συνδεθείτε μέσω της κονσόλας και επαναφέρετε τις αλλαγές σας. Εάν όλα είναι καλά, σε αυτό το σημείο μπορείτε να βάλετε ό,τι θέλετε resolv.conf
χωρίς να φοβάστε ότι θα εξαλειφθεί.
Εάν για οποιονδήποτε λόγο δεν μπορείτε να κάνετε επανεκκίνηση, αυτό θα μπορούσε να λειτουργήσει, αλλά θα έκανα πραγματικά μια σωστή επανεκκίνηση αν ήμουν στη θέση σας:
service netif restart && service routing restart
Μέθοδος 2: Κάντε resolv.conf
αμετάβλητο
Αυτό είναι λίγο χακάρισμα, αλλά είναι εύκολα η πιο γρήγορη λύση. Δεν το συνιστώ γιατί δεν μπορώ να εγγυηθώ ότι αυτό δεν θα προκαλέσει κάποια παράξενη κατάσταση στο μέλλον όταν κάνετε αναβάθμιση σε μια νέα έκδοση του λειτουργικού συστήματος και το dhclient είναι πιθανό να διαμαρτυρηθεί αρκετά. Τούτου λεχθέντος, ένα απλό chflags schg /etc/resolv.conf
είναι το μόνο που χρειάζεται. Το αρχείο είναι πλέον πλήρως προστατευμένο από εγγραφή, ακόμη και από το root. Μπορείτε να επαληθεύσετε ως εξής:
vultr [~]# chflags schg /etc/resolv.conf
vultr [~]# ls -ol /etc/resolv.conf
-rw-r--r-- 1 root wheel schg 50 Nov 29 06:28 /etc/resolv.conf
vultr [~]# echo "so very untouchable" >> /etc/resolv.conf
/etc/resolv.conf: Operation not permitted.
Αναίρεση με: chflags noschg /etc/resolv.conf
Μέθοδος 3: Πείτε ευγενικά στο FreeBSD να αφήσει τις ρυθμίσεις σας ήσυχες
Αυτός είναι μακράν ο καθαρότερος, πιο σωστός τρόπος για να γίνει αυτό. Υπάρχουν δύο ��ροσεγγίσεις που μπορείτε να ακολουθήσετε:
Διαμορφώστε dhclient
Ας πάρουμε το παράδειγμα από την κορυφή και ας πούμε ότι το μόνο που θέλετε να κάνετε είναι να βάλετε τον προσαρμοσμένο διακομιστή ονομάτων σας resolv.conf
και να μην θέλετε να τον χάνετε κάθε φορά που το DHCP κάνει το δικό του. Στην περίπτωσή μου, θέλω να χρησιμοποιήσω το πρόγραμμα επίλυσης προσωρινής αποθήκευσης που εγκατέστησα, το οποίο ακούει στο localhost, επομένως επεξεργάζομαι /etc/dhclient.conf
(που πιθανότατα θα είναι κενό εκτός από σχόλια) και προσθέτω τα εξής:
interface "vtnet0" {
supersede domain-name-servers 127.0.0.1;
}
Αυτό θα επιτρέψει στο dhclient να κάνει ό,τι άλλο χρειάζεται να κάνει, αλλά όταν ο διακομιστής DHCP του στείλει μια λίστα με διακομιστές ονομάτων προς χρήση, ο δικός σας θα αντικαταστήσει (όπως στο, θα αντικαταστήσει πλήρως) αυτούς που προσφέρει. Εάν προτιμάτε να συμπληρώσετε (αντί να αντικαταστήσετε) τα προσφερόμενα, μπορείτε να κάνετε "προσάρτηση" ή "prepend" αντί για "supersede", ανάλογα με την περίπτωση.
Παρεμπιπτόντως, εάν χρειάζεστε περισσότερους από έναν προσαρμοσμένους διακομιστές, καθορίστε τους ως εξής:
supersede domain-name-servers 127.0.0.1, 127.0.0.2;
Αφού κάνετε τις αλλαγές σας, κάντε επανεκκίνηση dhclient
για να τεθούν σε ισχύ αμέσως:
service dhclient restart vtnet0
Εξετάστε το /etc/resolv.conf
και θα ανακαλύψετε ότι τώρα έχει τους προσαρμοσμένους διακομιστή ονομάτων σας.
Από τη στιγμή που γράφω αυτό το άρθρο, οι διακομιστές ονομάτων είναι το μόνο πράγμα που έχει βάλει ποτέ ο διακομιστής DHCP του Vultr στο δικό μου resolv.conf
και το μόνο πράγμα που φρόντισα να προσαρμόσω. Ωστόσο, εάν χρειαστεί ποτέ να παρακάμψετε άλλες ρυθμίσεις, συμβουλευτείτε το εξαιρετικό εγχειρίδιο για μια ολοκληρωμένη λίστα:
man 5 dhclient.conf
Υπάρχουν εξαιρετικά παραδείγματα στο κάτω μέρος που πρέπει να σας δώσουν μια ιδέα για το τι μπορείτε να κάνετε. Από την κορυφή του κεφαλιού μου, μπορώ να φανταστώ ότι μπορεί να θέλετε να προσθέσετε κάτι παρόμοιο supersede domain-name "example.com";
εάν έχετε συνήθως μια τέτοια γραμμή στο resolv.conf
. Και πάλι, συμβουλευτείτε τα έγγραφα.
Διαμορφώστε resolvconf
Αυτή είναι η απλούστερη λύση αν θέλετε απλώς να μείνετε resolv.conf
μόνοι σας. Σύμφωνα με το εγχειρίδιο:
resolvconf manages resolv.conf(5) files from multiple sources, such as DHCP and VPN clients
Η διαμόρφωσή του βρίσκεται στο /etc/resolvconf.conf
, το οποίο πιθανότατα δεν υπάρχει στο σύστημά σας, οπότε μη διστάσετε να το δημιουργήσετε. Για να κάνετε το resolv.conf
αμετάβλητο, προσθέστε αυτό:
# prevent all updates to resolv.conf:
resolv_conf="/dev/null"
Εάν χρησιμοποιείτε unbound
ως τοπικό πρόγραμμα επίλυσης προσωρινής αποθήκευσης, αυτή είναι η γραμμή που προσθέτει (μαζί με μερικά για τον εαυτό του). Αυτό είναι βασικά εξαπάτηση resolvconf
για να πιστεύετε ότι /etc/resolv.conf
βρίσκεστε στο /dev/null
. Κάτι λίγο λιγότερο κακό, αλλά εξίσου αποτελεσματικό, θα ήταν:
# disable resolvconf from running any subscribers:
resolvconf="NO"
Αν θέλετε να κάνετε κάτι πιο εξελιγμένο από το να το απενεργοποιήσετε, ο χρήστης κάνει σελίδες για resolvconf
και resolvconf.conf
έχει πολλές πληροφορίες.