Site is under maintenance mode. Please wait few min!
Saltar al contenido

Como desplegar una aplicación Laravel con Nginx en Ubuntu 16.04

marzo 4, 2020

 

Introducción

DNS o Domain Name System, es a menudo un componente difícil hacerlo bien al aprender cómo configurar y sitios web de servidores. Mientras que la mayoría de la gente probablemente optar por utilizar los servidores DNS proporcionados por su empresa de alojamiento o de su registrador de dominios, hay algunas ventajas a la creación de sus propios servidores DNS.

En esta guía, vamos a discutir cómo instalar y configurar el servidor DNS Bind9 como servidor DNS caché o reenvío en Ubuntu 16.04 máquinas. Estas dos configuraciones ambos tienen ventajas a la hora de servir redes de máquinas.

Requisitos previos Objetivos y

Para completar esta guía, en primer lugar deberá estar familiarizado con la terminología común DNS. Echa un vistazo a esta guía para aprender sobre algunos de los conceptos estaremos implementando en esta guía.

Nos hará una demostración de dos configuraciones separadas que cumplen objetivos similares: un almacenamiento en caché y un servidor DNS de reenvío.

para seguir adelante, tendrá que tener acceso a dos ordenadores (por lo menos uno de los cuales debe ser un servidor de Ubuntu 16.04). Uno va a funcionar como el cliente y el otro será configurado como servidor DNS. Para tener el servidor en un buen estado preliminar, siga la guía de configuración inicial del servidor de Ubuntu 16.04.

Los detalles de la configuración de ejemplo son:

Le mostrará cómo configurar el equipo cliente para utilizar el servidor DNS para las consultas. Le mostraremos cómo configurar el servidor DNS en dos configuraciones diferentes, dependiendo de sus necesidades.

almacenamiento en caché DNS del servidor

La primera configuración será por un servidor DNS almacenamiento en caché. Este tipo de servidor también se conoce como un dispositivo de resolución, ya que se encarga de las consultas recursivas y por lo general puede manejar el trabajo pesado de rastrear los datos del DNS de otros servidores.

Cuando un caché de DNS del servidor pistas abajo la respuesta a la pregunta de un cliente, devuelve la respuesta al cliente. Pero también almacena la respuesta en su caché para el período de tiempo permitido por el valor TTL de los registros. La memoria caché se puede utilizar como fuente para las solicitudes posteriores con el fin de acelerar el tiempo total de ida y vuelta.

Casi todos los servidores DNS que pueda tener en la configuración de la red será el almacenamiento en caché los servidores DNS. Estos compensan la falta de resolución de DNS bibliotecas adecuadas implementadas en la mayoría de las máquinas cliente. Un servidor de almacenamiento en caché de DNS es una buena opción para muchas situaciones. Si no desea confiar en su ISP DNS u otros servidores DNS disponibles públicamente, hacer su propio servidor de almacenamiento en caché es una opción buena. Si está en estrecha proximidad física a los equipos cliente, es también muy probable que mejore los tiempos de consulta DNS.

Forwarding Servidor DNS

La segunda configuración que estaremos demostrando es un servidor DNS de reenvío . Un reenvío del servidor DNS se verá casi idéntico a un servidor de almacenamiento en caché desde la perspectiva de un cliente, pero los mecanismos y la carga de trabajo son muy diferentes.

Un servidor DNS de reenvío ofrece la misma ventaja de mantener una caché para mejorar los tiempos de resolución de DNS para los clientes. Sin embargo, en realidad no hace nada de la propia consulta recursiva. En su lugar, reenvía todas las peticiones a un servidor de resolución de fuera y luego almacena en caché los resultados de usar para consultas posteriores.

Esto le responde el servidor de reenvío de su caché, si bien no le obligue a hacer todo el trabajo de consultas recursivas. Esto permite que el servidor sólo para hacer peticiones individuales (la solicitud del cliente reenviado) en lugar de tener que ir a través de toda la rutina de la recursividad. Esto puede ser una ventaja en entornos en los que el ancho de banda de transferencia externa es costoso, donde puede ser que necesite sus servidores de almacenamiento en caché que ser cambiado a menudo, o cuando se desea enviar consultas locales a un servidor y externos consultas a otro servidor.

instalar BIND en el servidor DNS

Independientemente de la opción de configuración que desea usar, el primer paso en la implementación de un servidor DNS Bind es instalar el software real. software

el enlace está disponible en los repositorios por defecto de Ubuntu, así que sólo necesitamos actualizar nuestro índice local de paquetes e instalar el software usando apt. También incluiremos la documentación y algunas empresas de servicios comunes:

sudo apt-get update
sudo apt-get install bind9 bind9utils bind9-doc

  • sudo apt-get update
  • sudo apt-get install bind9 bind9utils bind9-doc

Ahora que los componentes de enlace se instalan, podemos empezar a configurar el servidor . El servidor de reenvío utilizará la configuración del servidor de almacenamiento en caché como un punto de partida, por lo que independientemente de su objetivo final, configurar el servidor como un servidor de almacenamiento en caché en primer lugar.

Configurar como almacenamiento en caché del servidor DNS

En primer lugar, vamos a cubrir cómo configurar vinculación para actuar como un servidor de almacenamiento en caché de DNS. Esta configuración forzar al servidor a buscar de forma recursiva respuestas de otros servidores DNS cuando un cliente emite una consulta. Esto significa que se está haciendo el trabajo de consulta de cada servidor DNS relacionado a su vez hasta que encuentra toda la respuesta. archivos de configuración

La vinculación se almacenan por defecto en un directorio en / etc / bind. Mover a ese directorio ahora:

cd /etc/bind

  • cd / etc / bind

no vamos a estar preocupado con la mayoría de los archivos de este directorio. El archivo de configuración principal se llama named.conf (nombrado y se unen son dos nombres para la misma aplicación). Este fichero sólo el archivo de fuentes named.conf.options, el archivo named.conf.local, y el archivo-zonas named.conf.default.

Para un servidor de almacenamiento en caché de DNS, que sólo se modificaba el archivo named.conf.options. Abrir esto en su editor de texto con privilegios sudo:

sudo nano named.conf.options

  • sudo nano named.conf.options

Con los comentarios despojado a cabo para facilitar la lectura, las miradas de archivo como esto: el almacenamiento en caché de configuración

options {
directory "/var/cache/bind";

dnssec-validation auto;

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

A, el primer paso es configurar una lista de control de acceso o ACL.

como un servidor DNS que se utilizará para resolver consultas recursivas, no queremos que el servidor DNS para ser objeto de abuso por usuarios maliciosos. Un ataque llamado un ataque de amplificación de DNS es especialmente problemático, ya que puede causar su servidor para participar en ataques de denegación de servicio.

Un DNS ataque de amplificación es una manera de que los usuarios malintencionados tratan de acabar con los servidores o sitios en Internet. Para ello, tratan de encontrar los servidores DNS públicos que resolverán las consultas recursivas. Que simule la dirección IP de la víctima y enviar una consulta que devolverá una gran respuesta al servidor DNS. De este modo, el servidor DNS responde a una solicitud pequeña con una gran carga útil dirigidos al servidor de víctimas, lo que amplifica eficazmente el ancho de banda disponible del atacante.

recibimiento de un servidor DNS público, recursiva requiere una gran cantidad de configuración y administración especial. Para evitar la posibilidad de que el servidor sea utilizada para fines maliciosos, vamos a configurar una lista de direcciones IP o rangos de red que confiamos.

Por encima de las opciones de bloqueo, vamos a crear un nuevo bloque llamado ACL. Crear una etiqueta para el grupo de ACL que se está configurando. En esta guía, vamos a llamar el grupo goodclients .

acl goodclients {
};

options {
. . .

Dentro de este bloque, una lista de las direcciones IP o redes que deberían estar autorizados a utilizar este servidor DNS. Dado que tanto nuestro servidor y el cliente están operando dentro de la misma subred 24 / en nuestro ejemplo, vamos a restringir el ejemplo de esta red. Debe ajustar esto para incluir sus propios clientes, y no hay partes externas. También añadiremos localhost y localnets que se tratará de hacer esto de forma automática:

acl goodclients {
192.0.2.0/24;
localhost;
localnets;
};

options {
. . .

Ahora que tenemos una ACL de clientes que queremos solicitud de determinación para, podemos configurar esas capacidades en el bloque de opciones. Dentro de este bloque, añada las siguientes líneas:

. . .

options {
directory "/var/cache/bind";

recursion yes;
allow-query { goodclients; };
. . .

Nos volvió explícitamente recursividad en, y luego configurar el parámetro allow-query utilizar nuestra especificación ACL. Podríamos haber utilizado un parámetro diferente, como permitir recursividad para hacer referencia a nuestro grupo de ACL. Si está presente y recursividad está activada, permitirá recursividad dictará la lista de clientes que pueden utilizar los servicios recursivos.

Sin embargo, si permitirá recursividad no está definida, se unen entonces cae de nuevo en la lista allow-query-cache, entonces la lista de admitidos en consultas, y finalmente un valor predeterminado de localnets y localhost solamente. Dado que estamos configurando un único servidor de almacenamiento en caché (que no tiene zonas de autoridad de su propio y no lo hace peticiones a plazo), la lista de admitidos-consulta siempre se aplicará solamente a la recursividad. Estamos utilizando porque es la forma más general de la especificación de la ACL.

Cuando haya terminado de realizar estos cambios, guardar y cerrar el archivo.

Esto es en realidad todo lo que se requiere para un servidor de almacenamiento en caché de DNS. Si ha decidido que este es el tipo de servidor que desea utilizar, puede saltarse por delante para aprender a ver sus archivos de configuración, reinicie el servicio, e implementar configuraciones de cliente.

De lo contrario, continúe leyendo para aprender cómo configurar un servidor DNS de reenvío en su lugar.

Configurar como servidor DNS de reenvío

Si un servidor DNS de reenvío es un mejor ajuste para su infraestructura, se puede fijar fácilmente que en su lugar.

Vamos a empezar con la configuración que lo dejamos en la configuración del servidor de almacenamiento en caché. El archivo named.conf.options debería tener este aspecto:

acl goodclients {
192.0.2.0/24;
localhost;
localnets;
};

options {
directory "/var/cache/bind";

recursion yes;
allow-query { goodclients; };

dnssec-validation auto;

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

vamos a utilizar la misma lista ACL para restringir nuestro servidor DNS para una lista específica de los clientes. Sin embargo, tenemos que cambiar la configuración para que el servidor intenta ya no realice personalmente las consultas recursivas.

Para hacer esto, hacemos no cambio recursividad a ninguna. El servidor de reenvío es dejar de ofrecer servicios de recursivas por responder a las preguntas de las zonas es no autorizada de . En su lugar, tenemos que configurar una lista de servidores de almacenamiento en caché para reenviar a nuestras peticiones.

Esto se hará dentro de las opciones {} bloque. En primer lugar, crear un bloque dentro de los llamados promotores de que contiene las direcciones IP de los servidores de nombres recursivos que queremos reenviar solicitudes a. En nuestra guía, vamos a utilizar los servidores de Google DNS públicos (8.8.8.8 y 8.8.4.4):

. . .

options {
directory "/var/cache/bind";

recursion yes;
allow-query { goodclients; };

forwarders {
8.8.8.8;
8.8.4.4;
};
. . .

Después, nos debe establecer la directiva hacia adelante a “sólo” desde este servidor reenviará todas las peticiones y no debe tratar de solicitudes de resolución por sí mismo.

El archivo de configuración se verá así cuando haya terminado:

. . .

options {
directory "/var/cache/bind";

recursion yes;
allow-query { goodclients; };

forwarders {
8.8.8.8;
8.8.4.4;
};
forward only;

dnssec-validation auto;

auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};

Un cambio final que debemos hacer es a los parámetros de DNSSEC. Con la configuración actual, dependiendo de la configuración de los servidores DNS reenviados, es posible que vea algunos errores que se ven así en los registros:

Jun 25 15:03:29 cache named[2512]: error (chase DS servers) resolving 'in-addr.arpa/DS/IN': 8.8.8.8#53
Jun 25 15:03:29 cache named[2512]: error (no valid DS) resolving '111.111.111.111.in-addr.arpa/PTR/IN': 8.8.4.4#53

Para evitar esto, cambie el ajuste dnssec validación a “sí” y explícitamente permiten dnssec:

. . .

forward only;

dnssec-enable yes;
dnssec-validation yes;

auth-nxdomain no; # conform to RFC1035
. . .

Guardar y cerrar el archivo cuando haya terminado. Ahora debe tener un servidor DNS de reenvío en su lugar. Continúe con la siguiente sección para validar los archivos de configuración y reiniciar el demonio.

prueba

su configuración y reinicie Enlazar

Ahora que ha configurado el servidor BIND como un servidor de almacenamiento en caché de DNS o un servidor DNS de reenvío, que están dispuestos a poner en práctica nuestros cambios.

Antes de dar el paso y reiniciar el servidor de enlace en nuestro sistema, se debe utilizar herramientas incluidas de Bind para comprobar la sintaxis de los ficheros de configuración.

Podemos hacer esto fácilmente escribiendo:

sudo named-checkconf

  • sudo checkconf llamado

Si no hay errores de sintaxis en su configuración, el intérprete de comandos volverá inmediatamente sin mostrar ninguna salida.

Si tiene errores de sintaxis en los archivos de configuración, se le avisará al número de error y la línea donde se produce. Si esto ocurre, volver atrás y revisar sus archivos de errores.

Cuando haya comprobado que sus archivos de configuración no tienen errores de sintaxis, reiniciar el demonio de enlace para implementar los cambios:

sudo systemctl restart bind9

  • sudo systemctl reinicio bind9

Si ha seguido la guía de configuración inicial del servidor, la UFW firewall es habilitado en su servidor. Tenemos que permitir que el tráfico DNS en nuestro servidor con el fin de responder a las solicitudes del cliente.

habilitar una excepción a la política de firewall para enlazar escribiendo:

sudo ufw allow Bind9

  • sudo UFW permiten Bind9

A continuación, mantener un ojo en los registros del servidor mientras configura la máquina cliente para asegurarse de que todo va bien. Deje esta ejecutando en el servidor:

sudo journalctl -u bind9 -f

  • sudo -u journalctl bind9 -f

Ahora, abre una nueva ventana de terminal para configurar los equipos cliente.

configurar el cliente de la máquina

Ahora que tiene su servidor en funcionamiento, se puede configurar el equipo cliente para utilizar este servidor DNS para las consultas.

registrarse en la máquina cliente. Asegúrese de que el cliente que está utilizando se especificó en el grupo de ACL se establece para el servidor DNS. De lo contrario, el servidor DNS se niegan a servir a las solicitudes de cliente.

tenemos que editar el archivo /etc/resolv.conf para que apunte a nuestro servidor al servidor de nombres. Los cambios realizados aquí sólo durará hasta el reinicio, que es ideal para probar. Si estamos satisfechos con los resultados de nuestras pruebas, podemos hacer estos cambios sean permanentes.

Abrir el archivo con privilegios sudo en su editor de texto:

sudo nano /etc/resolv.conf

  • sudo nano /etc/resolv.conf

El archivo aparecerá una lista de los servidores DNS de usar para resolver las consultas mediante el establecimiento de las directivas del servidor de nombres. Comente todas las entradas actuales y añadir una línea de servidor de nombres que apunta a su servidor DNS:

nameserver 192.0.2.2
# nameserver 8.8.4.4
# nameserver 8.8.8.8
# nameserver 209.244.0.3

Guardar y cerrar el archivo.

Ahora, usted puede poner a prueba para asegurarse de que las consultas pueden resolver correctamente mediante el uso de algunas herramientas comunes.

Puede utilizar ping para probar que las conexiones se pueden hacer para dominios:

ping -c 1 google.com

  • ping -c 1 google.com

OutputPING google.com (173.194.33.1) 56(84) bytes of data.
64 bytes from sea09s01-in-f1.1e100.net (173.194.33.1): icmp_seq=1 ttl=55 time=63.8 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 63.807/63.807/63.807/0.000 ms

Esto significa que nuestro cliente puede conectar con google.com usando nuestro servidor DNS.

podemos obtener información más detallada mediante el uso de herramientas específicas como DNS excavación. Pruebe con un dominio diferente esta vez:

dig linuxfoundation.org

  • excavación linuxfoundation.org

Output; <<>> DiG 9.9.5-3-Ubuntu <<>> linuxfoundation.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35417 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;linuxfoundation.org. IN A ;; ANSWER SECTION: linuxfoundation.org. 6017 IN A 140.211.169.4 ;; Query time: 36 msec ;; SERVER: 192.0.2.2#53(192.0.2.2) ;; WHEN: Wed Jun 25 15:45:57 EDT 2014 ;; MSG SIZE rcvd: 64

se puede ver que la consulta se llevó 36 milisegundos. Si hacemos la petición de nuevo, el servidor debe extraer los datos de su memoria caché, lo que disminuye el tiempo de respuesta:

dig linuxfoundation.org

  • excavación linuxfoundation.org

Output; <<>> DiG 9.9.5-3-Ubuntu <<>> linuxfoundation.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18275 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;linuxfoundation.org. IN A ;; ANSWER SECTION: linuxfoundation.org. 6012 IN A 140.211.169.4 ;; Query time: 1 msec ;; SERVER: 192.0.2.2#53(192.0.2.2) ;; WHEN: Wed Jun 25 15:46:02 EDT 2014 ;; MSG SIZE rcvd: 64

Como se puede ver, la respuesta en caché es significativamente más rápido.

También puede probar la búsqueda inversa utilizando la dirección IP que nos encontramos (140.211.169.4 en nuestro caso) con la opción -x de excavación:

dig -x 140.211.169.4

  • dig -x 140.211.169.4

Output; <<>> DiG 9.9.5-3-Ubuntu <<>> -x 140.211.169.4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61516 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;4.169.211.140.in-addr.arpa. IN PTR ;; ANSWER SECTION: 4.169.211.140.in-addr.arpa. 3402 IN CNAME 4.0-63.169.211.140.in-addr.arpa. 4.0-63.169.211.140.in-addr.arpa. 998 IN PTR load1a.linux-foundation.org. ;; Query time: 31 msec ;; SERVER: 192.0.2.2#53(192.0.2.2) ;; WHEN: Wed Jun 25 15:51:23 EDT 2014 ;; MSG SIZE rcvd: 117

Como se puede ver, la búsqueda inversa también tiene éxito.

De vuelta a su servidor DNS, debe ver si los errores se han registrado durante las pruebas. Un error común que puede presentarse es similar al siguiente:

Output from sudo journalctl -u bind9 -f. . .
Jun 25 13:16:22 cache named[2004]: error (network unreachable) resolving 'ns4.apnic.net/A/IN': 2001:dc0:4001:1:0:1836:0:140#53
Jun 25 13:16:22 cache named[2004]: error (network unreachable) resolving 'ns4.apnic.com/A/IN': 2001:503:a83e::2:30#53
Jun 25 13:16:23 cache named[2004]: error (network unreachable) resolving 'sns-pb.isc.org/AAAA/IN': 2001:500:f::1#53
Jun 25 13:16:23 cache named[2004]: error (network unreachable) resolving 'ns3.nic.fr/A/IN': 2a00:d78:0:102:193:176:144:22#53

Estos indican que el servidor está intentando resolver la información de IPv6, pero que el servidor no está configurado para IPv6. Puede solucionar este problema diciendo Enlazar utilizar sólo IPv4.

Para hacer esto, podemos modificar el archivo unidad de systemd que comienza Bind9:

sudo systemctl edit --full bind9

  • sudo systemctl edición --full bind9

Dentro del archivo que aparece, se suman -4 hasta el final de la línea ExecStart para restringir la servidor para las solicitudes de IPv4:

[Unit]
Description=BIND Domain Name Server
Documentation=man:named(8)
After=network.target

[Service]
ExecStart=/usr/sbin
amed -f -u bind -4
ExecReload=/usr/sbin/rndc reload
ExecStop=/usr/sbin/rndc stop

[Install]
WantedBy=multi-user.target

Guardar y cerrar el archivo cuando haya terminado.

Actualizar el demonio systemd para leer el archivo unidad cambiado en el sistema de inicio:

sudo systemctl daemon-reload

  • sudo systemctl daemon-recarga

Reiniciar el servicio Bind9 para implementar los cambios:

sudo systemctl restart bind9

  • sudo systemctl reinicio bind9

Usted no debe ver estos errores en los registros de nuevo.

Haciendo Cliente DNS Ajustes permanentes

Como se ha mencionado antes, la configuración /etc/resolv.conf que apuntan la máquina cliente en nuestro servidor DNS no sobrevivirá a un reinicio. Para hacer los cambios de última, tenemos que modificar los archivos que se utilizan para generar este archivo.

Si la máquina cliente está ejecutando Debian o Ubuntu, abra el archivo / etc / network / interfaces con privilegios sudo:

sudo nano /etc
etwork/interfaces

  • sudo nano / etc / network / interfaces

Busque el parámetro DNS-servidores de nombres. Puede eliminar las entradas existentes y reemplazarlos con su servidor DNS o simplemente añada el servidor DNS como una de las opciones:

. . .

iface eth0 inet static
address 192.168.2.100
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.0.2.2

. . .

Guardar y cerrar el archivo cuando haya terminado. La próxima vez que arranque, se aplicará la configuración.

Si el cliente está ejecutando CentOS o Fedora, es necesario abrir la red / network-scripts / etc / sysconfig / / ifcfg-eth0 lugar:

sudo nano /etc/sysconfig
etwork-scripts/ifcfg-eth0

  • sudo nano / etc / sysconfig / network-scripts / ifcfg- eth0

interior, busca las líneas que comienzan con el DNS. Cambio DNS1 a su servidor DNS. Si no desea utilizar los otros servidores DNS como punto de retorno, retire el resto de entradas:

. . .
DNS1=192.0.2.2
. . .

Guardar y cerrar el archivo cuando haya terminado. Su cliente debe utilizar esos ajustes en el siguiente inicio.

Conclusión

Ahora debe tener ya sea un servidor de reenvío o el almacenamiento en caché DNS configurado para servir a sus clientes. Esto puede ser una gran manera de acelerar las consultas de DNS para las máquinas que está gestionando.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *