【问题标题】:Rerouting all trafic from a specific port路由来自特定端口的所有流量
【发布时间】:2022-01-24 02:56:30
【问题描述】:

我使用的是基于 Unix 的操作系统,我想知道是否可以将通过特定端口或来自特定应用程序的所有数据包重新路由到另一个目的地或完全丢弃数据包。

例如,我有一个应用程序 T,它忽略了并在端口 44444 上发送数据包。我有另一个应用程序 U,它将“挂钩”到该端口并抓取 T 发送的所有数据包,然后将它们重新路由到其他地方。

我希望基本上能够在用户模式级别执行此操作,而不需要对路由器或内核模式进行任何配置更改。如果绝对必须在内核中完成,那我可以尝试为它编写内核模式驱动程序。

我知道的一种技术是简单地将一个模块注入 T 并挂钩发送/接收函数,然后在本地连接到 U 并发送数据包。但这似乎太骇人听闻了。有什么 API 可以用来做这件事吗?

【问题讨论】:

    标签: c networking


    【解决方案1】:

    在 Linux 上,您可以使用 iptables 做到这一点。比如命令

    iptables -t nat -A OUTPUT -p tcp -d remote --dport 44444 -j DNAT --to-destination localhost:1234
    

    会拦截到主机remote 上端口44444 的传出tcp 连接,并将它们重定向到本地机器上的端口1234。 iptables 是一个复杂而强大的工具,可以做很多事情,在 herehere 等地方有很多文档

    【讨论】:

    • 哦,谢谢,这似乎很有用。你知道 Iptables 是如何做到这一点的吗?
    • 这是否意味着我需要使用内核设备来挂钩该特定端口?
    猜你喜欢
    • 2022-07-09
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多