我如何代理 ICMP 请求?

我如何代理 ICMP 请求?

我有一台 ubuntu 服务器,它从网络中的其他服务器接收许多 ping 请求。我希望能够代理这些请求。使用 iptable 规则,我可以看到如何丢弃或接受请求,但有没有办法重定向它们?更具体地说,我正在寻找一种有条件地响应它们的方法。也许一点 psudo 代码可以帮助解释...

 if [ "$SourceIP" ==  "192.168.1.5" ]; then
    #send response
 elif [ "$SourceIP" == "192.168.1.6" ]; then
    #drop
 elif [ "$SourceIP == "192.168.1.7" ]; then
    sleep 20
    #send response
 fi

我知道我可以使用 iptable 规则来丢弃和接受特定 IP 地址(前两种情况)。但我需要更多的控制。我需要能够将逻辑融入何时以及是否给出响应中。

这可能吗?

感谢您提供的任何想法!

答案1

正如您已经意识到的,iptables 可以根据特定条件(IP/端口/协议/等)执行特定操作(丢弃/拒绝/接受)。您可以按照您在 shell 脚本示例中描述的方式组织 iptables 文件。

我认为您可以对 iptables/netfilter 扩展/模块进行操作,以定义给定场景的操作(在某些 IP 上拒绝,在其他 IP 上接受等),并按特定顺序编写它们(就像在您的 shell 脚本中一样)。我不确定您想要执行哪些具体操作以及在什么条件下执行,但您可以尝试在此处检查扩展: Netfilter 扩展指南XTables 插件

tc如果您也需要这些,还会讨论如何使用 severfault 引入额外的延迟。

相关内容