blob: 1e98ae27b8d99c95b42d2dba4b613d151365ae4c [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.es.xsl"?>
<!-- English Revision: 1673947 -->
<!-- Translated by: Luis Gil de Bernabé Pfeiffer -->
<!-- Reviewed by: Sergio Ramos -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manualpage metafile="bind.xml.meta">
<title>Mapeo de Direcciones y Puertos.</title>
<summary>
<p>Configurando Apache HTTP Server para que escuche en una dirección y puertos específicos.</p>
</summary>
<seealso><a href="vhosts/">Hosts Virtuales</a></seealso>
<seealso><a href="dns-caveats.html">Problemas de DNS</a></seealso>
<section id="overview">
<title>Visión General</title>
<related>
<modulelist>
<module>core</module>
<module>mpm_common</module>
</modulelist>
<directivelist>
<directive module="core" type="section">VirtualHost</directive>
<directive module="mpm_common">Listen</directive>
</directivelist>
</related>
<p>Cuando httpd se ejecuta, se mapea a una dirección y un puerto en la
máquina local, y espera a recibir peticiones. Por defecto, escucha en
todas las direcciones de la máquina. Ahora bien, se le puede especificar
que escuche en un determinado puerto, o en una sola dirección IP especifica,
o una combinación de ambos. A menudo esto se combina con la característica
de los <a href="vhosts/">Hosts virtuales</a>, que determina como responde el
<code>httpd</code> a diferentes direcciones IP, nombres de máquinas y puertos.</p>
<p>La directiva <directive module="mpm_common">Listen</directive>
le dice al servidor que acepte peticiones en el puerto o puertos que
se le especifiquen al servidor, o a combinaciones de direcciones y
puertos. Si sólo se especifica el número del puerto en la directiva
<directive module="mpm_common">Listen</directive>, el servidor escuchará en
ese puerto pero en todas las interfaces de red.
Si además del puerto se le especifica una dirección IP, el servidor escuchará
en el puerto y en la interfaz de red asociado a la dirección IP
que se le ha especificado en la directiva. Se pueden especificar
múltiples directivas <directive module="mpm_common">Listen</directive> para
especificar un determinado número de IP´s y puertos por donde el servidor escuchará.
El servidor por tanto, responderá a las peticiones en cualquiera de las IP´s y puertos
listados en la directiva.</p>
<p>Por ejemplo, para hacer que el servidor escuche en ambos puertos 80 y 8080 en todas
sus interfaces de red, se usa lo siguiente:</p>
<example>
<highlight language="config">
Listen 80
Listen 8000
</highlight>
</example>
<p>Para hacer que el servidor acepte peticiones en el puerto 80 en una sola interfaz de red, usaremos:</p>
<example>
<highlight language="config">
Listen 192.0.2.1:80
Listen 192.0.2.5:8000
</highlight>
</example>
<p>Las direcciones IPv6 debrán ir entre '[ ]' corchetes como en el siguiente ejemplo:</p>
<example>
<highlight language="config">
Listen [2001:db8::a00:20ff:fea7:ccea]:80
</highlight>
</example>
<note type="warning"><p>Si se superponen directivas de tipo <directive
module="mpm_common">Listen</directive>, dará como resultado un error fatal
que impedirá que se inicie el servidor.</p>
<example>
(48)Address already in use: make_sock: could not bind to address [::]:80
</example>
<p>Puede mirar el <a
href="http://wiki.apache.org/httpd/CouldNotBindToAddress">articulo de la wiki</a>
de consejos para solucionar problemas relacionados.</p>
</note>
</section>
<section id="ipv6">
<title>Consideraciones especiales con IPv6</title>
<p>Un creciente número de plataformas implementan ya IPv6, y
<glossary>APR</glossary> soporta IPv6 en la mayoría de estas plataformas,
permitiendo así a httpd asignar sockets IPv6, y manejar las respuestas
enviadas a través de IPv6.</p>
<p>Un factor bastante complejo para un administrador del httpd
es si un socket IPv6 puede o no manejar tanto conexiones IPv6
como IPv4. El manejo por httpd de conexiones IPv4 con socket IPv6
se debe al mapeo de direcciones IPv4 sobre IPv6, que
está permitido por defecto en muchas plataformas, pero no lo está
en sistemas FreeBSD, NetBSD y Open BSD, con el fin de que en estas
plataformas, cumpla con la política del sistema.
En los sistemas que no está permitido el mapeo por defecto,
existe un parámetro de <program>configure</program> especial
para cambiar éste comportamiento para httpd.</p>
<p>Por otro lado, en algunas plataformas, como Linux y True64, la
<strong>única</strong> forma para el manejo de IPv4 e IPv6 al mismo
tiempo es mediante direcciones mapeadas.
Si quieres que <code>httpd</code> maneje amos tipos de conexiones IPv4 e IPv6
con el mínimo de sockets, hay que especificar la opción
<code>--enable-v4-mapped</code> al <program>
configure</program>.</p>
<p><code>--enable-v4-mapped</code> es la opción que está estipulada por defecto
en todos los sistemas menos en FreeBSD, NetBSD y Open BSD, por
lo que es probablemente como se compiló su httpd.</p>
<p>Si lo que quiere es manejar sólo conexiones IPv4, independientemente de
lo que soporten <glossary>APR</glossary> y su plataforma, especifique
una dirección IPv4 por cada directiva
<directive module="mpm_common">Listen</directive>, como en el siguiente
ejemplo:</p>
<example>
<highlight language="config">
Listen 0.0.0.0:80
Listen 192.0.2.1:80
</highlight>
</example>
<p>Si en cambio, su plataforma lo soporta, y lo que quiere es que su httpd
soporte tanto conexiones IPv4 como IPv6 en diferentes sockets (ejemplo.: para
deshabilitar mapeo de direcciones IPv4), especifique la opción
<code>--disable-v4-mapped</code> al <program>
configure</program>. <code>--disable-v4-mapped</code> es la opción por defecto
en FreeBSD, NetBSD y OpenBSD.</p>
</section>
<section id="protocol">
<title>Especificar el Protocolo en el Listen</title>
<p>El segundo argumento en la directiva <directive module="mpm_common">Listen</directive>
el <var>protocolo</var> que es opcional no es algo que se requiera en las configuraciones.
Si éste argumento no se especifica, <code>https</code> es el protocolo
usado por defecto en el puerto 443 y <code>http</code> para el resto.
El protocolo se utiliza para determinar que módulo deberá manejar la petición,
y se le aplicarán optimizaciones específicas del protocolo con la directiva
<directive module="core">AcceptFilter</directive>.</p>
<p>Sólo necesitará especificar el protocolo si no está escuchando en un puerto
de los que son estándares, por ejemplo si ejecuta un sitio web <code>https</code> en el puerto 8443:</p>
<example>
<highlight language="config">
Listen 192.170.2.1:8443 https
</highlight>
</example>
</section>
<section id="virtualhost">
<title>Como Funciona en los Hosts Virtuales</title>
<p> La directiva <directive
module="mpm_common">Listen</directive> no implementa los
Hosts Virtuales - solo le dice al servidor en que direcciones
y puertos debe escuchar. Si no hay directiva
<directive module="core" type="section">VirtualHost</directive>
en uso, el servidor se comportará de la misma manera para todas las
peticiones aceptadas. Ahora bien,
<directive module="core" type="section">VirtualHost</directive>
puede ser usado para especificar un comportamiento diferente en una o
varias direcciones o puertos.
Para implementar los Hosts Virtuales, antes se le tiene que decir al servidor
que direcciones y puertos van a ser usados.
Después de esto, se deberá especificar una sección de la directiva
<directive module="core" type="section">VirtualHost</directive>
especificando direcciones y puertos que se van a usar en el Host Virtual
Note que si se configura un
<directive module="core" type="section">VirtualHost</directive>
para una dirección y puerto en el que el servidor no está escuchando,
no se podrá acceder al Host Virtual.</p>
</section>
</manualpage>