Metode 1: Bruk statiske grensesnittinnstillinger
Metode 2: Gjør resolv.conf uforanderlig
Metode 3: Be FreeBSD høflig om å la innstillingene være i fred
Hvis du kjører din egen resolver, eller ønsker å bruke en fra en tredjepartsleverandør, kan du oppleve at /etc/resolv.conffilen din blir overskrevet av DHCP. Det er en håndfull måter å løse dette problemet på. Siden du sannsynligvis vil starte på nytt for å være sikker på at endringene dine holder seg, og siden du kommer til å ape med nettverksinnstillinger i utgangspunktet, anbefaler jeg på det sterkeste å gjøre dette på en testinstans og/eller utenfor peak. timer.
Nå, her er tre metoder, fra verste til beste. Merk at alle metodene i denne veiledningen ble skrevet for FreeBSD 10. Linux-brukere kan referere til denne veiledningen .
Metode 1: Bruk statiske grensesnittinnstillinger
I min begrensede testing resulterer dette i litt raskere oppstartstider siden du ikke trenger å vente på at DHCP skal tildele nettverksinnstillingene dine. Imidlertid har jeg sett det nevnes i flere Vultr-dokumenter at bruk av statiske grensesnittinnstillinger er mislikt og at du bør holde deg til DHCP. Jeg antar at de har en god grunn til dette og dermed har jeg fortsatt å bruke DHCP selv. Likevel, hvis du bestemmer deg for å gå denne ruten, følg trinnene nedenfor.
- Bestem serverens IP, nettverksmaske og gateway-IP.
- Endre for
/etc/rc.confå bruke disse verdiene i stedet for DHCP.
- Start på nytt for å teste innstillingene.
Bestem IP/nettmaske/gateway
Forutsatt at grensesnittet ditt er vtnet0, utfør følgende:
ifconfig vtnet0 | grep inet
Dette bør gi deg IP-adressen og nettmasken for serveren din:
inet 10.10.10.10 netmask 0xffffff00 broadcast 10.10.10.255
FreeBSD liker å bruke hex for nettmasken. Ovennevnte konverteres til 255.255.255.0hvis du er nysgjerrig. Du kan finne en hendig tabell her , men frykt ikke: du kan bare kopiere hex-adressen inn i konfigurasjonsfilene dine (eller konvertere den til desimal hvis du foretrekker det).
Du kan finne gatewayen på flere måter. Her er en:
route get default | grep gateway vil returnere noe i retning av:
gateway: 10.10.10.1
Endre /etc/rc.confmed nye verdier
Bevæpnet med IP, nettmaske og gateway, er det nå på tide å legge dem til systemkonfigurasjonen. Jeg anbefaler på det sterkeste å sikkerhetskopiere denne filen før du gjør noen endringer, da det vil gjøre det mye lettere å angre hvis du roter. Nå åpner du opp /etc/rc.confi redigeringsprogrammet du ønsker, og gjør følgende endringer:
# Comment out this line:
# ifconfig_vtnet0="dhcp"
# Add these lines:
defaultrouter="10.10.10.1"
ifconfig_vtnet0="inet 10.10.10.10 netmask 0xffffff00"
Selvfølgelig bør du være sikker på å erstatte den faktiske IP-en, nettmasken og gatewayen din med mine åpenbare forfalskninger.
Start på nytt og test
Start serveren på nytt ved å bruke shutdown -r nowog sørg for at den kommer opp på riktig måte. Utfør de testene du mener er nødvendige for å sikre at alt fungerer som det skal. Hvis nettverket er utilgjengelig, logger du på via konsollen og tilbakestiller endringene. Hvis alt er bra, kan du på dette tidspunktet legge det du vil i resolv.confuten frykt for at det blir utslettet.
Hvis du av en eller annen grunn ikke kan starte på nytt, burde dette fungere, men jeg ville virkelig gjort en skikkelig omstart hvis jeg var deg:
service netif restart && service routing restart
Metode 2: Gjør resolv.confuforanderlig
Dette er litt av et hack, men det er lett den raskeste løsningen. Jeg anbefaler det ikke fordi jeg ikke kan garantere at dette ikke vil forårsake noe rart i fremtiden når du oppgraderer til en ny versjon av operativsystemet, og dhclient kommer sannsynligvis til å klage en haug. Når det er sagt, en enkel chflags schg /etc/resolv.confer alt som trengs. Filen er nå fullstendig skrivebeskyttet, selv fra root. Du kan bekrefte slik:
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.
Angre med: chflags noschg /etc/resolv.conf
Metode 3: Be FreeBSD høflig om å la innstillingene være i fred
Dette er den desidert reneste og mest riktige måten å få dette gjort på. Det er to tilnærminger du kan ta:
Konfigurer dhclient
La oss ta eksemplet fra toppen, og si at alt du vil gjøre er å sette inn din egendefinerte navneserver resolv.confog ikke vil miste den hver gang DHCP gjør sitt. I mitt tilfelle vil jeg bruke caching-resolveren jeg installerte som lytter på localhost, så jeg redigerer /etc/dhclient.conf(som sannsynligvis vil være tom bortsett fra kommentarer) og legger til følgende:
interface "vtnet0" {
supersede domain-name-servers 127.0.0.1;
}
Dette vil tillate dhclient å gjøre alt annet du trenger den til å gjøre, men når DHCP-serveren sender den en liste over navneservere som skal brukes, vil din erstatte (som i, fullstendig erstatte) de den tilbyr. Hvis du foretrekker å supplere (i stedet for å erstatte) de som tilbys, kan du "legge til" eller "prepend" i stedet for "supersede", etter behov.
Forresten, hvis du trenger mer enn én tilpasset server, spesifiser dem slik:
supersede domain-name-servers 127.0.0.1, 127.0.0.2;
Etter å ha gjort endringene, start dhclientpå nytt for å få dem til å tre i kraft umiddelbart:
service dhclient restart vtnet0
Undersøk din /etc/resolv.confog du bør finne at den nå har din(e) egendefinerte navneserver(e) i seg.
Når dette skrives, er navneservere det eneste Vultrs DHCP-server noen gang har lagt inn i min resolv.conf, og det eneste jeg har brydd meg om å tilpasse. Men hvis du noen gang trenger å overstyre andre innstillinger, se den utmerkede håndboken for en omfattende liste:
man 5 dhclient.conf
Det er gode eksempler nederst som burde gi deg en idé om hva du kan gjøre. På toppen av hodet mitt kan jeg forestille meg at du kanskje vil legge til noe sånt som supersede domain-name "example.com";hvis du vanligvis har en slik linje i resolv.conf. Igjen, konsulter dokumentene.
Konfigurer resolvconf
Dette er den enkleste løsningen hvis du bare vil at du resolv.confskal være alene. I henhold til manualen:
resolvconf manages resolv.conf(5) files from multiple sources, such as DHCP and VPN clients
Konfigurasjonen ligger i /etc/resolvconf.conf, som sannsynligvis ikke finnes på systemet ditt, så lag det gjerne. For å gjøre din resolv.confuforanderlig, legg til dette:
# prevent all updates to resolv.conf:
resolv_conf="/dev/null"
Hvis du bruker unboundsom din lokale hurtigbufferløser, er det linjen den legger til (sammen med noen for seg selv). Det er i utgangspunktet å lure resolvconftil å tro at du /etc/resolv.confbefinner deg på /dev/null. Noe litt mindre slemt, men like effektivt, ville være:
# disable resolvconf from running any subscribers:
resolvconf="NO"
Hvis du vil gjøre noe mer sofistikert enn å bare slå det av, søker man etter resolvconfog resolvconf.confhar massevis av informasjon.