iptables PREROUTING でドメインを使用する

iptables PREROUTING でドメインを使用する

私は IP を持っており、www.example.comポートX.X.Y.Y80 からドメイン (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ブラウザで (serverfault の IP) にアクセスすると、その結果が表示され、アドレス (IP アドレス) のコンテンツは等しくありません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>

関連情報