Tenho um www.example.com
com X.X.Y.Y
ip quero encaminhar o tráfego da porta 80 para o domínio (www.example.com), usei o seguinte iptable:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination X.X.Y.Y:80
mas não obtenho um bom resultado porque X.X.Y.Y
o conteúdo não é igual ao domínio (www.example.com).
Por exemplo: se você acessar 198.252.206.16
(o ip do serverfault) com seu navegador você verá esse resultado e o conteúdo do endereço (endereço IP ) não é igual www.serverfault.com
.
Quero usar domínio na regra iptables acima, por exemplo: --to-destination www.example.com
(é apenas um exemplo e sei que não está funcionando), como posso fazer isso?
Existe alguma maneira alternativa de fazer isso sem usar o iptables?
Obrigado
Responder1
Acho que você precisa é de um proxy HTTP para reescrever os cabeçalhos da solicitação. IPTables não analisa o cabeçalho HTTP e substitui os domínios neles.
Você deve procurar algo como Nginx ou Squid para fazer isso, apenas algo que entenda e reescreva os cabeçalhos de solicitação HTTP no domínio que você deseja.
IPTables não conhece nenhum protocolo superior ao TCP ou UDP.
Responder2
Você não pode fazer isso iptables
mesmo se usar a -d
opção, pois os nomes de domínio são carregados durante a inicialização do iptables. A maneira certa de fazer o que você deseja é usar um servidor proxy como o Squid.
Responder3
no seu servidor web faça algo assim:
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>