Использовать домен в iptables PREROUTING

Использовать домен в iptables PREROUTING

У меня есть IP- www.example.comадрес X.X.Y.Y, с которого я хочу перенаправить трафик с порта 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 address) не равны www.serverfault.com.
Я хочу использовать домен в указанном выше правиле iptables, например: --to-destination www.example.com(это просто пример, и я знаю, что он не работает), как я могу это сделать?
Есть ли альтернативный способ сделать это без использования iptables?
Спасибо

решение1

Я думаю, что вам нужен HTTP-прокси для перезаписи заголовков запроса. IPTables не разбирает HTTP-заголовки и не заменяет в них домены.

Для этого вам следует рассмотреть что-то вроде Nginx или Squid — что-то, что понимает и переписывает заголовки HTTP-запросов в нужный вам домен.

IPTables не знает протоколов более высокого уровня, чем TCP или UDP.

решение2

Вы не сможете сделать это, iptablesдаже если используете -dопцию, так как доменные имена загружаются во время запуска iptables. Правильный способ сделать то, что вы хотите сделать, — использовать прокси-сервер, такой как Squid.

решение3

на вашем веб-сервере сделайте что-то вроде этого:

 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>

Связанный контент