Mètode 1: utilitzeu la configuració de la interfície estàtica
Mètode 2: feu que resolv.conf sigui immutable
Mètode 3: digueu educadament a FreeBSD que deixi la vostra configuració en pau
Si esteu executant el vostre propi solucionador, o voleu utilitzar-ne un d'un proveïdor de tercers, és possible que trobeu que el vostre /etc/resolv.conffitxer està sent sobreescrit per DHCP. Hi ha un grapat de maneres de resoldre aquest problema. Com que és probable que vulgueu reiniciar per assegurar-vos que els vostres canvis es mantenen, i com que, en primer lloc, us anirà fent mico amb la configuració de la xarxa, us recomano fer-ho en una instància de prova i/o fora del pic. hores.
Ara bé, aquí hi ha tres mètodes, del pitjor al millor. Tingueu en compte que tots els mètodes d'aquesta guia s'han escrit per a FreeBSD 10. Els usuaris de Linux poden consultar aquesta guia .
Mètode 1: utilitzeu la configuració de la interfície estàtica
A les meves proves limitades, això resulta en temps d'arrencada lleugerament més ràpids, ja que no heu d'esperar que DHCP assigni la vostra configuració de xarxa. Tanmateix, he vist esmentar en diversos documents de Vultr que l'ús de la configuració de la interfície estàtica està mal vist i que hauríeu de respectar DHCP. Suposo que tenen una bona raó per això i, per tant, he continuat utilitzant DHCP jo mateix. No obstant això, si decidiu fer aquesta ruta, seguiu els passos següents.
- Determineu la IP del vostre servidor, la màscara de xarxa i la IP de la passarel·la.
- Modifiqueu
/etc/rc.confper utilitzar aquests valors en comptes de DHCP.
- Reinicieu per provar la configuració.
Determineu IP/màscara de xarxa/gateway
Suposant que la vostra interfície és vtnet0, feu el següent:
ifconfig vtnet0 | grep inet
Això us hauria d'obtenir l'adreça IP i la màscara de xarxa del vostre servidor:
inet 10.10.10.10 netmask 0xffffff00 broadcast 10.10.10.255
A FreeBSD li agrada utilitzar hexadecimal per a la màscara de xarxa. L'anterior es converteix en 255.255.255.0si teniu curiositat. Podeu trobar una taula útil aquí , però no us preocupeu: només podeu copiar l'adreça hexadecimal als vostres fitxers de configuració (o convertir-la a decimal si ho preferiu).
Podeu trobar la porta d'entrada de diverses maneres. Aquí en teniu un:
route get default | grep gateway tornarà alguna cosa semblant a:
gateway: 10.10.10.1
Modificar /etc/rc.confamb nous valors
Armat amb la IP, la màscara de xarxa i la passarel·la, ara és el moment d'afegir-los a la configuració del sistema. Us recomano fer una còpia de seguretat d'aquest fitxer abans de fer qualsevol canvi, ja que us farà molt més fàcil desfer-lo si us trobeu. Aleshores, obriu /etc/rc.confal vostre editor que trieu i feu els canvis següents:
# Comment out this line:
# ifconfig_vtnet0="dhcp"
# Add these lines:
defaultrouter="10.10.10.1"
ifconfig_vtnet0="inet 10.10.10.10 netmask 0xffffff00"
Òbviament, hauríeu d'assegurar-vos de substituir la vostra IP real, màscara de xarxa i passarel·la per les meves falsificacions òbvies.
Reinicieu i proveu
Reinicieu el vostre servidor fent servir shutdown -r nowi assegureu-vos que torna a funcionar correctament. Feu les proves que considereu necessàries per assegurar-vos que tot funciona correctament. Si la xarxa és inaccessible, inicieu sessió mitjançant la consola i revertiu els canvis. Si tot està bé, en aquest moment podeu posar el que vulgueu resolv.confsense por que s'esborri.
Si per qualsevol motiu no pots reiniciar, això hauria de funcionar, però realment faria un reinici correcte si fos tu:
service netif restart && service routing restart
Mètode 2: Fer resolv.confimmutable
Això és una mica un truc, però és fàcilment la solució més ràpida. No ho recomano perquè no puc garantir que això no causarà alguna estranya en el futur quan actualitzeu a una nova versió del sistema operatiu, i és probable que dhclient es queixarà un munt. Dit això, un simple chflags schg /etc/resolv.confés tot el que es necessita. El fitxer ara està completament protegit contra escriptura, fins i tot des de l'arrel. Podeu verificar així:
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.
Desfer amb: chflags noschg /etc/resolv.conf
Mètode 3: digueu educadament a FreeBSD que deixi la vostra configuració en pau
Aquesta és, amb diferència, la manera més neta i adequada de fer-ho. Hi ha dos enfocaments que podeu adoptar:
Configura dhclient
Prenguem l'exemple des de la part superior i diguem que tot el que voleu fer és posar el vostre servidor de noms personalitzat resolv.confi no voleu perdre-lo cada vegada que DHCP fa les seves coses. En el meu cas, vull utilitzar la solució de memòria cau que he instal·lat que escolta a localhost, així que edito /etc/dhclient.conf(que probablement quedarà en blanc a part dels comentaris) i afegeixo el següent:
interface "vtnet0" {
supersede domain-name-servers 127.0.0.1;
}
Això permetrà que dhclient faci tot el que necessiteu, però quan el servidor DHCP li enviï una llista de servidors de noms per utilitzar, el vostre substituirà (com en, substituirà completament) els que ofereix. Si preferiu complementar (en lloc de substituir) els que s'ofereixen, podeu "afegir" o "afegir" en lloc de "substituir", segons correspongui.
Per cert, si necessiteu més d'un servidor personalitzat, especifiqueu-los així:
supersede domain-name-servers 127.0.0.1, 127.0.0.2;
Després de fer els canvis, reinicieu dhclientperquè entrin en vigor immediatament:
service dhclient restart vtnet0
Examineu el vostre /etc/resolv.confi haureu de trobar que ara té els vostres servidors de noms personalitzats.
A l'hora d'escriure aquest article, els servidors de noms són l'únic que el servidor DHCP de Vultr ha posat mai al meu resolv.conf, i l'únic que m'ha preocupat de personalitzar. Tanmateix, si mai necessiteu anul·lar qualsevol altra configuració, consulteu l'excel·lent manual per obtenir una llista completa:
man 5 dhclient.conf
Hi ha grans exemples a la part inferior que us haurien de donar una idea del que podeu fer. Des de la part superior del meu cap, puc imaginar que potser voldreu afegir alguna cosa com supersede domain-name "example.com";si normalment tingueu una línia com aquesta al vostre resolv.conf. De nou, consulteu els documents.
Configura resolvconf
Aquesta és la solució més senzilla si només voleu que us resolv.confdeixin sol. Segons el manual:
resolvconf manages resolv.conf(5) files from multiple sources, such as DHCP and VPN clients
La seva configuració resideix a /etc/resolvconf.conf, que probablement no existeix al vostre sistema, així que no dubteu a crear-lo. Per fer-lo resolv.confimmutable, afegeix això:
# prevent all updates to resolv.conf:
resolv_conf="/dev/null"
Si utilitzeu unboundcom a solucionador de memòria cau local, aquesta és la línia que afegeix (juntament amb unes quantes). Bàsicament, és enganyar-se resolvconfa pensar que /etc/resolv.confes troba a /dev/null. Una cosa una mica menys dolenta, però igualment eficaç, seria:
# disable resolvconf from running any subscribers:
resolvconf="NO"
Si voleu fer alguna cosa més sofisticada que només desactivar-lo, les pàgines de manual resolvconfi resolvconf.conftenen molta informació.