我正在使用iptables(1.1.1.1 => 2.2.2.2)使用以下命令进行NATstream量转发:
iptables -t nat -A PREROUTING -d 1.1.1.1 -j DNAT --to-destination 2.2.2.2 iptables -t nat -A POSTROUTING -d 2.2.2.2 -j SNAT --to 1.1.1.1
除了一件事情,它工作正常:如果我检查Apache日志,在服务器2.2.2.2做防火墙规则等,它看起来像所有的stream量来自1.1.1.1。
当然这有点道理,因为它是1.1.1.1将stream量转发到2.2.2.2,但我认为NAT会通过包中的原始IP“请求者”?
有没有办法让stream量到2.2.2.2拥有“真正的”原生IP?
目前,由于所有stream量似乎都来自1.1.1.1,无论原始stream量实际来自何方,因此设置良好的防火墙规则和其他安全措施非常困难。
Apache将永远不会看到NAT后面的IP。 端点系统2.2.2.2不知道1.1.1.1以外的任何内容。 获得原始请求者的IP的唯一方法是embedded某种types的JavaScript或客户端代码,在客户端运行ipconfig或ifconfig的等效代码,并将其作为POST的一部分输出到Web服务器。 但是,这通常是皱眉。