Verwenden Sie die Domäne in iptables PREROUTING

Verwenden Sie die Domäne in iptables PREROUTING

Ich habe eine www.example.comIP X.X.Y.Yund möchte den Datenverkehr von Port 80 an die Domäne (www.example.com) weiterleiten. Ich habe die folgende Iptable verwendet:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination X.X.Y.Y:80

aber ich bekomme kein gutes Ergebnis, weil X.X.Y.Yder Inhalt nicht mit der Domäne übereinstimmt (www.example.com).
Beispiel: Wenn Sie 198.252.206.16mit Ihrem Browser zu (der IP von Serverfault) gehen, sehen Sie, dass Ergebnis und Inhalt der Adresse (IP-Adresse) nicht übereinstimmen www.serverfault.com.
Ich möchte die Domäne in der obigen iptables-Regel verwenden, zum Beispiel: --to-destination www.example.com(es ist nur ein Beispiel und ich weiß, dass es nicht funktioniert), wie kann ich das machen?
Gibt es eine alternative Möglichkeit, dies zu tun, ohne iptables zu verwenden?
Danke

Antwort1

Ich denke, was Sie brauchen, ist ein HTTP-Proxy, der die Anforderungsheader neu schreibt. IPTables analysiert den HTTP-Header nicht und ersetzt die darin enthaltenen Domänen nicht.

Sie sollten sich hierfür etwas wie Nginx oder Squid ansehen, einfach etwas, das die HTTP-Anforderungsheader versteht und in die gewünschte Domäne umschreibt.

IPTables kennt keine höheren Protokolle als TCP oder UDP.

Antwort2

iptablesDies ist auch bei Verwendung dieser Option nicht möglich, -dda die Domänennamen beim Start von iptables geladen werden. Die richtige Vorgehensweise für Ihr Anliegen ist die Verwendung eines Proxyservers wie Squid.

Antwort3

Führen Sie auf Ihrem Webserver Folgendes aus:

 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>

verwandte Informationen