Java 重定向网络流量
我正在尝试重定向一些流量,因此当要求1.1.1.1:2222本地计算机时,改为2.2.2.2:3333 使用java实现这一点最简单的方法是什么 致意 windows上的主机文件不可用!选择权 编辑: IP1.1.1.1:2222是一个扩展ip(一个我不拥有的服务器)。因此,我无法创建一个简单的套接字服务器来重定向流量。我必须改变包的方向 还请注意,这是我要重定向的传出部分。一个简单的例子是,如果我问www.google.dk,我会得到facebookJava 重定向网络流量,java,networking,Java,Networking,我正在尝试重定向一些流量,因此当要求1.1.1.1:2222本地计算机时,改为2.2.2.2:3333 使用java实现这一点最简单的方法是什么 致意 windows上的主机文件不可用!选择权 编辑: IP1.1.1.1:2222是一个扩展ip(一个我不拥有的服务器)。因此,我无法创建一个简单的套接字服务器来重定向流量。我必须改变包的方向 还请注意,这是我要重定向的传出部分。一个简单的例子是,如果我问www.google.dk,我会得到facebook 这必须通过java实现。我认为它可以通过套
这必须通过java实现。我认为它可以通过套接字轻松实现,基本上:
你有一个例子,你不能用Java做这种事情。事实上,在用户空间应用程序中通常根本无法做到这一点 如果您使用的是Linux平台,您可能会配置
iptables
,截获指定类型的发送到特定IP地址/端口的数据包,并重写目标IP地址。然而,这实际上是一个系统/网络管理问题,而不是编程问题
正如您所想象的,如果一个非特权应用程序可能会导致流量被重新路由,那么您可能会做各种令人讨厌的事情。您需要Linux上的root权限才能更改iptables配置
这必须从java中完成 好的,除非您询问应用程序重定向其自己的请求,否则它不能用Java/从Java完成
(在例外情况下,您可以通过实现一个自定义套接字工厂来实现这一点,该工厂打开连接到不同的位置,以满足更高级别的应用程序代码的要求。但是,我不认为这是您的要求。)更新的问题。你似乎不明白我的意思:)尽管谢谢你的尝试;)那你就不能做那样的事了,感谢上帝。你必须在沟通的中间不知何故…想象一下互联网上的混乱,如果你可以重定向你不拥有的服务器的所有流量…你这样做的目的是什么?我认为这个问题与编程无关。您应该调整网络软件,工作取决于具体要求。例如,您的目标IP具有DNS名称?您对特定于协议(如http)的重定向感兴趣吗?如果服务器不在您的控制之下,为什么要指定端口?这是相关的,因为根据您的回复,实际的服务器不属于您,所以您听起来好像在做一些不太可能的事情,甚至可能是非法的,比如钓鱼……根据他的问题,我假设它是在Windows上