0

Can any one suggest me a packet blocking software ??

My requirement is to block packets within the LAN.(Internet does not come into picture).

Supposing CLIENT_A communicating to CLIENT_B in the same network(LAN).

I want a CLIENT_C (who is in the same network) to capture(I can use jpcap library's sniffer for this purpose) and block packets sent by CLIENT_A to CLIENT_B.

How do i block packets over LAN..?

Thank you in advance.

Regards, Veenit Shah

4

3 回答 3

2

这种事情通常使用单独的防火墙(例如在路由器或网关盒中)或运行在一台或两台客户端机器上的防火墙软件来完成。

这不是在 Java 中实现的明智之举。

编辑- 对此后续行动的回应

我知道这样的事情在Java中是不可取的..但仍然必须实现它..所以有什么办法可以这样做..?

让我们假设您正在谈论在 Linux 机器上实现客户端防火墙。我可以想到两种方法:

  • 您可以使用Process.execute()和朋友来运行 Linuxiptables(8)管理实用程序,该实用程序操纵操作系统内核的网络数据包过滤器。这是最简单的基于 Java 的方法。但它要求您的 Java 应用程序以root.

  • 您可以iptables(8)对操作数据包过滤器的操作进行逆向工程,并在 Java 中编写相同的功能。那将是更多的编码工作,包括通过 JNI 或 JNA 在 C 中实现部分功能。并且您的应用程序需要以root.

但是一个简单得多的方法是简单地从命令行运行iptables(8),或者使用基于 GUI 的精美管理工具进行更改。

请注意,在上述场景中,防火墙本身不是用 Java 实现的。您所做的只是从 Java 应用程序管理防火墙。我想不出任何方法来实际在 Java 中进行过滤/阻塞,这甚至是远程实用的。

于 2010-02-24T14:57:41.723 回答
1

您可能需要一些 arp 攻击来将数据包从 CLIENT-A 重定向到 Client-C 而不是 CLIent-B。

我不认为这是一个好主意。

于 2010-02-26T03:10:56.707 回答
0

如果您在客户端 C 上读取网络上的数据包,则客户端 B 已经收到它,因此阻止它为时已晚。如果您使用的是交换以太网,那么客户端 C 甚至都不会看到发送给 B 的数据包。

这样做的唯一方法是让 A 通过 C 与 B 通信,然后 C 可以决定是否应该发送数据包。这称为防火墙。您可以在 Linux 上使用 iptables 来执行此操作,而不是编写一个。

但要利用这一点,您需要了解网络的工作原理,根据您的问题,我不确定您目前是否这样做。所以你需要学习很多关于以太网的知识(假设你使用的是以太网)和不同的网络层。我不确定这方面的资源。

于 2010-02-24T20:14:20.187 回答