我很困惑为什么我的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
Run Code Online (Sandbox Code Playgroud)
不起作用。但是,当我添加它时,
iptables -t nat -A POSTROUTING-j MASQUARADE
Run Code Online (Sandbox Code Playgroud)
有用。但假装的问题是我没有得到真正的IP,而是路由器的IP。我需要获取源IP,以便我的代理服务器可以记录连接到它的所有IP。有人可以告诉我如何在不使POSTROUTING跳至Masquarade的情况下使其工作吗?
如果我没记错的话,该规则的正确语法是:
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
Run Code Online (Sandbox Code Playgroud)
--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
Run Code Online (Sandbox Code Playgroud)
您还应该确保 192.168.1.110 上的网关指向您的路由器 IP。
最后您可以使用如下的伪装规则。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
eth1 应该是您的传出接口。
对于真正的透明代理,您需要使用 TPROXY 目标(在 mangle 表中的 PREROUTING 链中)。所有其他 iptables 机制(如任何 NAT、MASQUERADE、REDIRECT)都会重写数据包的 IP 地址,这使得无法找出数据包最初的目的地。
\n\n代理程序必须像任何其他服务器一样在套接字上进行bind()和listen(),但需要一些特定的套接字标志(这需要一些Linux功能(权限类型)或root)。\xe2\x80\x93 连接后,可以通过某种方式从操作系统获取 \xe2\x80\x9cintended 服务器\xe2\x80\x9d。
\n\n抱歉,我\xe2\x80\x99m对细节有点懒,但是搜索\xe2\x80\x9cTPROXY\xe2\x80\x9d作为关键字会让你快速前进!
\n 归档时间: |
|
查看次数: |
47379 次 |
最近记录: |