iptables에서 도메인 사용

iptables에서 도메인 사용

포트 80에서 도메인(www.example.com)으로 트래픽을 전달하려는 IP가 있습니다. 다음 iptable을 사용 www.example.com했습니다 .X.X.Y.Y

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)과 동일하지 않기 때문에 좋은 결과를 얻지 못합니다. 예: 브라우저에서 (serverfault의 IP)
로 이동하면 해당 결과와 주소(IP 주소)의 콘텐츠를 볼 수 있습니다. 198.252.206.16)은 동등하지 않습니다 www.serverfault.com.
위의 iptables 규칙에서 도메인을 사용하고 싶습니다. 예를 들면 다음과 같습니다. --to-destination www.example.com(단순한 예일 뿐이며 작동하지 않는다는 것을 알고 있습니다.) 어떻게 해야 합니까?
iptables를 사용하지 않고 이를 수행할 수 있는 다른 방법이 있습니까?
감사합니다

답변1

내 생각에는 요청 헤더를 다시 작성하는 데 필요한 HTTP 프록시가 필요하다고 생각합니다. IPTables는 HTTP 헤더를 구문 분석하지 않고 헤더의 도메인을 대체하지 않습니다.

이를 위해서는 Nginx나 Squid와 같은 것을 살펴봐야 합니다. 이는 HTTP 요청 헤더를 이해하고 원하는 도메인에 다시 쓰는 것입니다.

IPTables는 TCP 또는 UDP보다 높은 프로토콜을 알지 못합니다.

답변2

iptables 시작 시 도메인 이름이 로드되므로 해당 옵션을 iptables사용해도 수행할 수 없습니다 . -d원하는 작업을 수행하는 올바른 방법은 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>

관련 정보