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

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

3 ответа

Решение

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

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

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

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

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

 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>
Другие вопросы по тегам