有没有办法在系统级别设置多播数据包的默认 TTL?

有没有办法在系统级别设置多播数据包的默认 TTL?

从我的 Centos 7 到多播地址的 pcap 捕获显示 TTL 25。防火墙将其视为 DDOS 并丢弃数据包。

我知道应用程序代码可以通过调用带有 IP_MULTICAST_TTL 标志的 setsockopt() 来设置多播 TTL,进一步说明默认值为 1。我想知道是否有办法在系统级别设置该值。

我发现的唯一可调参数是 net.ipv4.ip_default_ttl,但更改它会更改整个 IP 堆栈的 ttl,并且不仅仅特定于多播数据包。

对此有什么建议吗?谢谢


编辑评论中询问的附加信息 --> 应用程序无法正常工作。根据网络人员的说法,他们的防火墙会考虑这种 DDOS 攻击并丢弃数据包。为了解决这个问题,他们建议将多播 TTL 从当前的 25 减少到 10 或更低。根据应用程序人员的说法,他们没有在他们的应用程序中强制执行此操作,并希望我从系统/操作系统级别强制执行。但我在操作系统级别找不到任何可以执行此操作的可调参数。

答案1

编辑(以 root 身份)/etc/sysctl.conf,或者在某些发行版上您可以创建一个新的 sysctl 文件。假设您想要 ttl 为 99,请添加一行包含以下内容的...“net.ipv4.ip_default_ttl=99”例如...

echo net.ipv4.ip_default_ttl=99 | sudo tee /etc//etc/sysctl.d/42-myttl.conf

您可以使用 syctl 命令读取/写入当前系统默认 ttl,如下所示

$ sysctl net.ipv4.ip_default_ttl
net.ipv4.ip_default_ttl = 64
$ sudo sysctl net.ipv4.ip_default_ttl=99
net.ipv4.ip_default_ttl = 99
$ sysctl net.ipv4.ip_default_ttl
net.ipv4.ip_default_ttl = 99

相关内容