Tengo una www.example.com
ip X.X.Y.Y
y quiero reenviar tráfico desde el puerto 80 al dominio (www.example.com), utilicé la siguiente iptable:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination X.X.Y.Y:80
pero no obtengo un buen resultado porque X.X.Y.Y
el contenido no es igual al dominio (www.example.com).
Por ejemplo: si vas a 198.252.206.16
(la ip de serverfault) con tu navegador verás el resultado y el contenido de la dirección (dirección IP). ) no es igual www.serverfault.com
.
Quiero usar el dominio en la regla de iptables anterior, por ejemplo: --to-destination www.example.com
(es solo un ejemplo y sé que no funciona), ¿cómo puedo hacer esto?
¿Existe alguna forma alternativa de hacerlo sin utilizar iptables?
Gracias
Respuesta1
Creo que lo que necesita es un proxy HTTP para reescribir los encabezados de la solicitud. IPTables no analiza el encabezado HTTP ni reemplaza los dominios que contiene.
Deberías buscar algo como Nginx o Squid para hacer eso, simplemente algo que comprenda y reescriba los encabezados de solicitud HTTP en el dominio que desees.
IPTables no conoce ningún protocolo superior a TCP o UDP.
Respuesta2
No puede hacerlo iptables
incluso si usa la -d
opción ya que los nombres de dominio se cargan durante el inicio de iptables. La forma correcta de hacer lo que quieres es utilizar un servidor proxy como Squid.
Respuesta3
en su servidor web haga algo como esto:
NameVirtualHost *:80
<VirtualHost *:80>
# The DNS1 site is hosted locally
ServerName DNS1
DocumentRoot /var/www./...
</VirtualHost>
<VirtualHost *:80>
ServerName DNS2
# Forward all requests to container:
Proxypass / http://<container-ip>
ProxypassReverse / http://<container-ip>
</VirtualHost>