透明代理的 IPTables 配置

问题描述 投票:0回答:6

我很困惑为什么我的 IPTable 不能在路由器中工作。我想做的是将源 IP 发往端口 80 和 443 的任何数据包重定向到 192.168.1.110:3128。然而当我尝试这个时:

 iptables -t nat -A PREROUTING -s 192.168.1.5 -p tcp --dport 80:443 -j DNAT --to-destination 192.168.1.110:3128

不起作用。但是当我添加这个时,

iptables -t nat -A POSTROUTING-j MASQUARADE

它有效。但伪装的问题是我没有得到真正的IP而是路由器的IP。我需要获取源 ip,以便我的代理服务器可以记录连接到它的所有 ip。有人可以告诉我如何使其工作而不使 POSTROUTING 跳转到 Masquarade 吗?

proxy iptables
6个回答
6
投票

对于真正的透明代理,您需要使用 TPROXY 目标(在 mangle 表中,PREROUTING 链中)。所有其他 iptables 机制(例如任何 NAT、MASQUERADE、REDIRECT)都会重写数据包的 IP 地址,这使得无法找出数据包最初的目的地。

代理程序必须像任何其他服务器一样在套接字上进行bind()和listen(),但需要一些特定的套接字标志(这需要一些Linux功能(权限类型)或root)。 – 连接后,可以通过某种方式从操作系统获取“目标服务器”。

抱歉,我对细节有点懒,但是搜索“TPROXY”作为关键字会让你快速前进!


5
投票
如果我没记错的话,该规则的正确语法将是:


iptables -t nat -A PREROUTING -s 192.168.1.5 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 192.168.1.110:3128

--dport 80:443

 会将所有端口从 80 转发到 443 

--dports 80,443
 将仅转发端口 80 和 443。 

如果您希望将端口 80 和 443 上到达 192.168.1.5 的流量转发到 192.168.1.110 的 3128 端口,那么您应该使用以下规则:

iptables -t nat -A PREROUTING -d 192.168.1.5 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 192.168.1.110:3128

您还应该确保 192.168.1.110 上的网关指向您的路由器 IP。

最后你可以使用如下的伪装规则。

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE



eth1 应该是您的传出接口。


1
投票
我遇到了同样的问题,解决方案是告诉透明代理在正确的标头字段中转发源 IP。 对于我的 nginx 代理,规则接近于:

location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-NginX-Proxy true; proxy_pass http://name_of_proxy; proxy_redirect off; }
    

1
投票
我使用了

iptables -t nat -A PREROUTING -p tcp -s foreign ip to your device --dport 80:443 -j DNAT --to-destination your application or local ip:port

。我认为您在设备中对数据包进行了预路由,这些数据包从未连接到端口 80 或 443,这些用于连接到设备的 Web 服务器。192.168.1.5 就像我的本地地址。

并记得配置

echo 1 > /proc/sys/net/ipv4/ip_forward


    


0
投票
我认为您通过不指定接口来进行双向 NAT。尝试将

-o eth0

 添加到您的 
-j MASQUERADE
 行中。 (替换您的“外部”接口,而不是 
eth0
,具体取决于您的设置。)


0
投票
我将添加到罗伯特的帖子中。为此,您必须修改代理以启用(SOL_IP,IP_TRANSPARENT)侦听套接字。

© www.soinside.com 2019 - 2024. All rights reserved.