用于在 ip 规则/ip 路由中测试 fwmark 的命令行实用程序?

用于在 ip 规则/ip 路由中测试 fwmark 的命令行实用程序?

我正在尝试寻找一种工具,使我能够找到进入设备的具有特定目标地址的数据包所采用的路由。

ip route get可以满足我大部分的期望。

问题是,我想测试在相当复杂的路由环境中当数据包具有 fwmark 时它们是否能找到正确的路由。

理想的工具将允许使用 fwmark(或其他属性)欺骗通用数据包,并可以将其发送到整个 IpTables 链和 ip 路由/ip 规则集,或者仅找到将返回的路由。

我希望能够运行一个命令来验证特定的一组路线是否按预期工作。

最低要求类似,ip route get但支持 fwmark。

不过,在这一点上,任何有关测试路由实用程序的建议都会受到极大的赞赏!随着路线的堆积,它很快就会变得复杂起来。

答案1

您可以在“ip route get”命令中使用 mark 选项。您还可以在此命令中指定源地址和输入和输出接口。

例子:

ip route get 8.8.8.8 mark 0x20- 检查标记数据包到 8.8.8.8 地址的路由。

ip route get 8.8.8.8 from 192.168.0.200 iif eth1- 检查通过 eth1 接口接收的来自 192.168.0.200 主机的转发数据包的路由。在这种情况下,如果“发件人”地址不在此主机上(不是本地),则应指定 iif。

ip route get 8.8.8.8 from 192.168.0.100 iif eth1 mark 0x30- 与前面的例子类似,但带有标记指定。

要通过 netfilter 规则集测试数据包的路径,您可以使用 TRACE 目标和 scapy 来构建所需的数据包。

答案2

您正在寻找的工具的技术名称是“数据包制作者”

具体的产品推荐与 ServerFault 无关,但有一个包含他们自己的 nping 替代工具的列表,由nmap 项目可以在http://SecTools.org/tag/packet-crafters/另一个维基百科

答案3

除了ip route get尝试https://github.com/zhangyoufu/fwmark

此 Python3 脚本创建了一个新的 cgroup 并附加 eBPF 程序以在创建套接字后立即强制执行 fwmark (SO_MARK)。灵感来自ip vrf exec

这对于诊断多宿主网络/策略路由应该很有用。

相关内容