у меня есть www.example.com
с участием X.X.Y.Y
ip я хочу перенаправить трафик с порта 80 в домен (www.example.com), я использовал следующий iptable:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination X.X.Y.Y:80
но я не получаю хорошего результата, потому что X.X.Y.Y
контент не совпадает с доменом (www.example.com)
Например: если вы перейдете в 198.252.206.16
(IP-адрес serverfault) в вашем браузере вы увидите, что результат и содержимое адреса (IP-адрес) не равны www.serverfault.com
.
Я хочу использовать домен в приведенном выше правиле iptables, например:--to-destination www.example.com
(это просто пример, и я знаю, что он не работает), как я могу это сделать?
Есть ли альтернативный способ сделать это без использования iptables?
Спасибо
Вы не можете сделать это с iptables
даже если вы используете -d
опция, так как доменные имена загружаются при запуске iptables. Правильный способ делать то, что вы хотите, - использовать прокси-сервер, такой как Squid.
Я думаю, что вам нужен прокси-сервер HTTP для перезаписи заголовков запросов. IPTables не анализирует заголовок HTTP и не заменяет в них домены.
Для этого вам следует взглянуть на что-то вроде Nginx или Squid, просто что-то, что понимает и переписывает заголовки HTTP-запросов в желаемый домен.
IPTables не знает протоколов более высокого уровня, чем TCP или UDP.
на вашем веб-сервере сделайте что-то вроде этого:
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>