iptables を使用して、特定のドメイン (TLD) からネットワーク内の特定のマシンにパケットを転送する

iptables を使用して、特定のドメイン (TLD) からネットワーク内の特定のマシンにパケットを転送する

次のコマンドを使用してポート転送を行うことができます。

iptables -t nat -A PREROUTING -p tcp -d XXX.XXX.XXX.XXX --dport 80 -j DNAT --to 192.168.161.31:80

iptables -t nat -A POSTROUTING -d 192.168.161.31 -j MASQUERADE

XXX.XXX.XXX.XXX のような IP アドレスではなく、ドメイン名に向けたパケットを転送できるかどうか使用したいと考えました。

たとえば、次のようなことをして動作させることはできますか? 私の場合は動作しません!

iptables -t nat -A PREROUTING -p tcp -d XXX.XXX.XXX.XXX --dport 80 -j DNAT --to 192.168.161.31:80
iptables -t nat -A PREROUTING -p tcp -d www.example.com --dport 80 -j DNAT --to 192.168.161.32:80

上記のコマンドは異なるマシンに転送する必要があることに注意してください。

答え1

いいえ、それは不可能です。パケットは TCP/IP レベルでドメイン名を対象とすることはありません。

リクエストを別のホスト/ポートにリダイレクトする必要がある場合は、何らかのロードバランサー (たとえば、ProxyPass を使用した Apache) を使用する必要があります。

答え2

いいえ、そのようなことはできません。DNS 名は netfilter ルールでは許可されていません。DNS 名は TCP/IP および ICMP レベルでのみ適用されます。

関連情報