如何暂时禁用本地主机对某个端口的访问?

如何暂时禁用本地主机对某个端口的访问?

我正在用 Java 开发一个 Web 应用程序,该应用程序由端口 80 上的 Tomcat 容器提供服务。另一个 CLI 应用程序正在连接到该 Web 应用程序。我想测试当连接意外断开时,此 CLI 应用程序是否能够重新连接,以及 Web 应用程序是否正在正确清理。

停止 ( sudo service stop tomcat8) 或终止 ( kill -9 <pid>) Tomcat 时,连接会以标准方式断开。也就是说,CLI 应用程序会BYE从 Web 应用程序接收一个帧。我想测试当出现超时、连接突然断开时会发生什么。

是否可以禁用本地主机网络对端口 80 的访问,以使得 Web 应用程序或客户端都没有时间发送其BYE帧?

答案1

在服务器上使用iptables,阻止它向客户端发送数据包以及从客户端接收数据包:

sudo iptables -A OUTPUT -p tcp --sport 80 -j DROP

将阻止服务器到达客户端;并且

sudo iptables -A INPUT -p tcp --dport 80 -j DROP

将阻止客户端到达服务器。sport代表源端口和dport目标端口。

这完全独立于tomcat服务器进程,并且(对于客户端和服务器而言)看起来就像连接突然中断了一样。我确信即使客户端和服务器位于同一台主机上,这也能正常工作。

查看当前实施的规则:

sudo iptables -L

使用以下命令删除所有现有规则:

sudo iptables -F

相关内容