summaryrefslogtreecommitdiff
path: root/docs/manual/bind.xml.es
blob: 531eb1e125f5e23b623038676e0e77d121e83fcd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<?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: 1816110 -->
<!-- Translated by: Luis Gil de Bernabé Pfeiffer lgilbernabe@apache.org-->
<!-- 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 deberá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="reload">
    <title>Cambiar configuración de escucha al reiniciar</title>

    <p>Cuando httpd se reinicia, hay que tener especial consideración en los 
      cambios que se realicen a la directiva <directive module="mpm_common">Listen</directive>.
      Durante un reinicio, httpd mantiene los puertos (como en la configuración original)
    para evitar generar errores del tipo "Conexión rechazada" para cualquier intento
    nuevo de establecer la conexión contra el servidor. Si se realiza algún cambio
    al conjunto de la directiva <directive module="mpm_common">Listen</directive>, es probable que entre en conflicto con la configuración antigua, la configuración fallará y el servidor
    no se iniciará.
   </p>

    <p>Por ejemplo, cambiar de la configuración:</p>
    
    <example>
    <highlight language="config">
      Listen 127.0.0.1:80
    </highlight>
    </example>

    <p>a la siguiente configuración, es probable que falle, porque mapear el puerto 80 
      a todas las direcciones, entra en conflicto con sólo mapear el puerto 80 a
      la 127.0.0.1.</p>
    
    <example>
    <highlight language="config">
      Listen 80
    </highlight>
    </example>

    <p>Para que este tipo de cambios surtan efecto, es necesario parar el servidor, 
      y después iniciarlo.</p>
    
  </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>