iptables 预路由用于重定向以太网上的源 IP 地址

iptables 预路由用于重定向以太网上的源 IP 地址

我在互联网上有 2 个 IP 地址,它们重定向到同一台机器。在这台机器上,一台 Debian 在 OpenVZ 上运行。我可以设置 iptables 规则将所有 http 请求重定向到 Debian。

    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_地址_2“,我可以看到好的内容,但是访问日志文件上的 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   

有任何想法吗?

答案1

也许这就像添加Listen ip.add.re.ss2:80您的 httpd 配置一样简单?

并删除任何Listen 80指令,以确保服务器仅提供您想要的 IP 地址。

我刚刚重新阅读了你的 iptables 规则;你正在将流量从端口 80 上的 ip2 发送到端口 80 上的 ip1...当然你的日志将显示 ip1。你在流量到达服务器之前对其进行了重定向。

相关内容