Si está ejecutando su propio resolutor, o desea utilizar uno de un proveedor externo, es posible que /etc/resolv.conf
DHCP sobrescriba su archivo. Hay varias formas de resolver este problema. Dado que es probable que desee reiniciar para asegurarse de que sus cambios se mantengan, y dado que va a estar haciendo monos con la configuración de red en primer lugar, le sugiero encarecidamente que haga esto en una instancia de prueba y / o fuera del pico horas
Ahora bien, aquí hay tres métodos, de peor a mejor. Tenga en cuenta que todos los métodos en esta guía fueron escritos para FreeBSD 10. Los usuarios de Linux pueden consultar esta guía .
Método 1: usar la configuración de la interfaz estática
En mis pruebas limitadas, esto da como resultado tiempos de arranque un poco más rápidos, ya que no tiene que esperar a que DHCP asigne su configuración de red. Sin embargo, he visto mencionar en varios documentos de Vultr que el uso de la configuración de la interfaz estática está mal visto y que debe apegarse a DHCP. Supongo que tienen una buena razón para esto y, por lo tanto, he seguido usando DHCP yo mismo. Sin embargo, si decide seguir esta ruta, siga los pasos a continuación.
- Determine la IP de su servidor, la máscara de red y la IP de la puerta de enlace.
- Modifique
/etc/rc.conf
para usar estos valores en lugar de DHCP.
- Reiniciar para probar la configuración.
Determinar IP / máscara de red / puerta de enlace
Suponiendo que su interfaz es vtnet0, realice lo siguiente:
ifconfig vtnet0 | grep inet
Esto debería proporcionarle la dirección IP y la máscara de red para su servidor:
inet 10.10.10.10 netmask 0xffffff00 broadcast 10.10.10.255
A FreeBSD le gusta usar hexadecimal para la máscara de red. Lo anterior se convierte a 255.255.255.0
si tienes curiosidad. Puede encontrar una tabla práctica aquí , pero no tema: puede copiar la dirección hexadecimal en sus archivos de configuración (o convertirla a decimal si lo prefiere).
Puede encontrar la puerta de enlace de varias maneras. Aquí hay uno:
route get default | grep gateway
devolverá algo en la línea de:
gateway: 10.10.10.1
Modificar /etc/rc.conf
con nuevos valores
Armado con la IP, la máscara de red y la puerta de enlace, ahora es el momento de agregarlos a la configuración del sistema. Yo recomiendo hacer copias de seguridad de este archivo antes de hacer cualquier cambio, ya que hará que sea mucho más fácil de deshacer debe metes la pata. Ahora, abre /etc/rc.conf
en el editor de tu elección y realiza los siguientes cambios:
# Comment out this line:
# ifconfig_vtnet0="dhcp"
# Add these lines:
defaultrouter="10.10.10.1"
ifconfig_vtnet0="inet 10.10.10.10 netmask 0xffffff00"
Obviamente, debe asegurarse de sustituir su IP real, máscara de red y puerta de enlace por mis falsificaciones obvias.
Reiniciar y probar
Reinicie su servidor usando shutdown -r now
y asegúrese de que vuelva a funcionar correctamente. Realice las pruebas que considere necesarias para asegurarse de que todo funcione correctamente. Si no se puede acceder a la red, inicie sesión a través de la consola y revierta sus cambios. Si todo está bien, en este punto puedes poner lo que quieras resolv.conf
sin temor a que sea borrado.
Si por alguna razón no puede reiniciar, esto debería funcionar, pero realmente haría un reinicio adecuado si fuera usted:
service netif restart && service routing restart
Método 2: hacer resolv.conf
inmutable
Es un truco, pero es fácilmente la solución más rápida. No lo recomiendo porque no puedo garantizar que esto no cause algo extraño en el futuro cuando actualice a una nueva versión del sistema operativo, y es probable que dhclient se queje un montón. Dicho esto, un simple chflags schg /etc/resolv.conf
es todo lo que se necesita. El archivo ahora está completamente protegido contra escritura, incluso desde la raíz. Puedes verificar así:
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.
Deshacer con: chflags noschg /etc/resolv.conf
Método 3: dígale cortésmente a FreeBSD que deje su configuración sola
Esta es, con mucho, la forma más limpia y adecuada de hacer esto. Hay dos enfoques que puede tomar:
Configurar dhclient
Tomemos el ejemplo desde arriba, y digamos que todo lo que quiere hacer es poner su servidor de nombres personalizado resolv.conf
y no quiere perderlo cada vez que DHCP hace lo suyo. En mi caso, quiero usar el resolutor de almacenamiento en caché que instalé que escucha en localhost, así que edito /etc/dhclient.conf
(que probablemente estará en blanco aparte de los comentarios) y agrego lo siguiente:
interface "vtnet0" {
supersede domain-name-servers 127.0.0.1;
}
Esto permitirá que dhclient haga todo lo que usted necesita que haga, pero cuando el servidor DHCP le envíe una lista de servidores de nombres para usar, el suyo reemplazará (como en, reemplazará por completo) los que ofrece. Si prefiere complementar (en lugar de reemplazar) los ofrecidos, puede "agregar" o "anteponer" en lugar de "reemplazar", según corresponda.
Por cierto, si necesita más de un servidor personalizado, especifíquelos así:
supersede domain-name-servers 127.0.0.1, 127.0.0.2;
Después de realizar los cambios, reinicie dhclient
para que entren en vigencia de inmediato:
service dhclient restart vtnet0
Examine su /etc/resolv.conf
y debería encontrar que ahora tiene sus servidores de nombres personalizados.
Al momento de escribir esto, los servidores de nombres son lo único que el servidor DHCP de Vultr ha puesto en mi resolv.conf
, y lo único que me he preocupado por personalizar. Sin embargo, si alguna vez necesita anular cualquier otra configuración, consulte el excelente manual para obtener una lista completa:
man 5 dhclient.conf
Hay excelentes ejemplos en la parte inferior que deberían darle una idea de lo que puede hacer. Fuera de mi cabeza, me imagino que querrás agregar algo como supersede domain-name "example.com";
si normalmente tienes una línea como esa en tu resolv.conf
. Nuevamente, consulte los documentos.
Configurar resolvconf
Esta es la solución más simple si solo quiere resolv.conf
que se quede solo. Por el manual:
resolvconf manages resolv.conf(5) files from multiple sources, such as DHCP and VPN clients
Su configuración reside /etc/resolvconf.conf
, lo que probablemente no exista en su sistema, así que siéntase libre de crearlo. Para hacer su resolv.conf
inmutable, agregue esto:
# prevent all updates to resolv.conf:
resolv_conf="/dev/null"
Si lo usa unbound
como su resolución local de almacenamiento en caché, esa es la línea que agrega (junto con algunas para sí mismo). Eso es básicamente engañar resolvconf
a pensar que tu /etc/resolv.conf
se encuentra en /dev/null
. Algo un poco menos malo, pero igualmente efectivo, sería:
# disable resolvconf from running any subscribers:
resolvconf="NO"
Si desea hacer algo más sofisticado que simplemente apagarlo, las páginas del manual resolvconf
y resolvconf.conf
tienen mucha información.