iptables的tcp代理规则不起作用

我有几个需要连接到远程服务的服务器。 这些服务器是我控制下的ec2实例。 远程服务运行在我公司pipe理的服务器上,但不是我的部门,我不确定它在哪里托pipe。 出于安全原因,远程服务将只允许在特定端口上的一个IP地址(这是一个AWS弹性IP)访问该服务,因此所有请求都必须通过代理。 我已经查阅了几个如何完成这个任务的例子,并尝试了许多不同的改动,而且没有任何改动。 我试图根据我对iptables的了解来创build规则,并且提出了我已经有的规则(这依然不起作用)。 我希望有人能够帮助我迅速做到这一点。

$ cat /proc/sys/net/ipv4/ip_forward 1 $proxy_ip $remote_server_ip $remote_server_port *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -d $proxy_ip/32 -p tcp -m tcp --dport $remote_server_port -j DNAT --to-destination $remote_server_ip:$remote_server_port -A POSTROUTING -d $remote_server_ip/32 -p tcp -m tcp --dport $remote_server_port -j SNAT --to-source $proxy_ip COMMIT # Completed on Mon Sep 17 17:28:07 2012 # Generated by iptables-save v1.4.12 on Mon Sep 17 17:28:07 2012 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1376:205512] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name DEFAULT --rsource -j DROP -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -p tcp -m tcp --dport $remote_server_port -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Mon Sep 17 17:28:07 2012 

任何人都可以告诉我什么是我的两个速率限制规则在SSH上,这也是行不通的奖励积分。

所以我觉得现在有点愚蠢,但我知道我的问题是什么。 我会在这里分享它的历史目的。

这些规则实际上起作用,这只是我的testing方法被打破了。 我正在将MS SQL从群集转发到远程数据库。 但我实际上不能testing它的工作原理,因为唯一的IP地址允许打到远程数据库正在被一个单独的服务器使用,而不是代理其他请求,并且正在生产中。 所以我一直试图使用curl通过代理来打另一个web服务器,看看我是否得到回应。 然后,我可以切换IP地址和端口周围,它希望工作。

但是我的问题是规则

 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 

抓住了所有的反应,而不是转发他们。 一旦我意识到,我评论了这条规则,一切工作。 而且由于在生产中它将是一个完全不同的端口,这个规则不会对代理产生负面影响。

感谢任何花时间试图弄清楚我的错误的人。