我对Linux很陌生,使用iptables 。 这是我想要完成的:
我有一个ASP.net客户端与Linux上的Web逻辑托pipe的Web服务交谈。 通信是通过SSL。
我正在尝试使用iptables完成只是阻止回应客户端。
因此,客户端进行Web服务调用,Web服务处理请求并回复给客户端。
我希望Web服务接收请求,但阻止其回应给客户端。
我所做的testing目的是刷新iptables所有规则。 我在INPUT , OUTPUT和FORWARD链上为ACCEPT创build了默认策略。 接下来,我在OUTPUT链中添加了一条规则来DROP具有客户端源IP的任何东西。
iptables -A OUTPUT -s client_ip_address -j DROP
显然,这没有什么区别。 我可以从客户端调用Web服务,并仍然收到响应。
任何帮助表示赞赏?
这取决于你想要完成什么。 如果你想模拟networking超时使用这个:
iptables -A OUTPUT -d clientip -j DROP
它会静静地将所有数据包从服务器丢弃到客户端。
如果你想让tcp握手发生,然后杀死连接(可能是有用的,或者你可以稍后激活上面的规则)使用这个:
iptables -A OUTPUT -d clientip -p tcp --tcp-flags SYN,ACK SYN,ACK -j ACCEPT iptables -A OUTPUT -d clientip -j DROP
如果你想模拟closures的端口(服务没有运行)使用:
iptables -A INPUT -s clientip -j REJECT
它会发送ICMP目的地不可达消息给客户端。
希望能帮助到你。
在OUTPUT链中可能有一个规则允许所有ESTABLISHED和RELATED连接 – 这是很常见的。 如果有这样一条规则,那么在你放入-A的DROP规则之前,它将被匹配。 尽量把你的DROP规则放在OUTPUT链中:
iptables -I OUTPUT -d clientip -j DROP
将把这条规则放在链条的最顶端。