Iptableの事前ルーティングについて質問があります。私はネットワーキング/ルーティング/ iptablesにあまり詳しくないので、これがばかげた質問ではないことを願っています。 ご理解とご褒美をお願いします。
私がしていることは、LXCを使用してコンテナー内のアプリを分離することです。コンテナ内のサービス(おそらくApache2)にアクセスするには、次のような事前ルーティングを行う必要があります。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20080 -j DNAT --to <container-ip>:80
これまでのところ、正常に機能しています。
ホストシステムがApache2(ポート80)も実行していると想像してください。 1 NICおよび2つのDNS名が割り当てられました:DNS1(HostRecord)およびDNS2(Alias to DNS1 =)私がやりたいのは、dportを使用せずに、DNS名を使用してPREROUTEすることです。これにより、次のようになります。
http://DNS1:80 #ends up at the Host Apache2
http://DNS2:80 #ends up at lxc-container's Apache2 (at the the same Host)
それは可能ですか?もしそうなら、iptablesを設定する方法は?
TCP/IPパケットは、ホスト名ではなく、IPアドレスとネットワークポートにルーティングされます。
したがって、iptables packetfilterは、DNS /ホスト名ではなく、IPアドレス、ネットワークポート、プロトコルで機能します。
オプションは次のとおりです。
例えば:
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>