同じマシンでリダイレクトする2つのIPアドレスがインターネット上にあります。このマシンでは、1つのDebianがOpenVZで実行されます。すべてのhttpリクエストをDebianにリダイレクトするようにiptablesルールを設定できます。
iptables prerouting -d ip_address_2 DNAT --to ip_address_local_1
+--------------+
| |
| V
| 10.10.101.5
I| +------+ +----------+
N|ip_address_1 | |-----|Debian1 VE|-- Apache's log
T|-----------------|OpenVZ| +----------+ [client ip_address_1]
E| | | |
R|ip_address_2 | | |
N|--------------+ | |
E| +------+
T|
Iptablesのルール:
iptables -t nat -A PREROUTING -p tcp -i eth0 -d ip_address_2 --dport 80 -j DNAT --to 10.10.101.5:80
iptables -A FORWARD -p tcp -i eth0 -o venet0 -d 10.10.101.5 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -i venet0 -o eth0 -s 10.10.101.5 --sport 80 -j ACCEPT
「 http:// ip_address_2 」のWebページにアクセスすると、適切なコンテンツが表示されますが、アクセスログファイルのIPアドレスはip_address_1です。ISPのIPアドレスを確認したいと思います。
入力した場合:
# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 ip_address_2 tcp dpt:80 to:10.10.101.5:80
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
SNAT all -- 10.10.101.5 0.0.0.0/0 to:ip_address_2
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
何か案は?
おそらくこれは、httpd構成にListen ip.add.re.ss2:80
を追加するのと同じくらい簡単ですか?
Listen 80
ディレクティブを削除して、サーバーが必要なIPアドレスのみを提供していることを確認します。
iptablesのルールを読み直しました。ポート80のip2からポート80のip1にトラフィックを送信しています...もちろん、ログにはip1が表示されます。サーバーに到達する前にトラフィックをリダイレクトしています。