web-dev-qa-db-ja.com

イーサネット上の送信元IPアドレスをリダイレクトするように事前ルーティングするiptables

同じマシンでリダイレクトする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   

何か案は?

2
Kevin Campion

おそらくこれは、httpd構成にListen ip.add.re.ss2:80を追加するのと同じくらい簡単ですか?

Listen 80ディレクティブを削除して、サーバーが必要なIPアドレスのみを提供していることを確認します。

iptablesのルールを読み直しました。ポート80のip2からポート80のip1にトラフィックを送信しています...もちろん、ログにはip1が表示されます。サーバーに到達する前にトラフィックをリダイレクトしています。

1
cpbills