如何在 macOS High Sierra 中更改 TTL?

如何在 macOS High Sierra 中更改 TTL?

如何在 macOS High Sierra 中更改 TTL?

在以前的 macOS 版本中,可以按如下方式完成...

暂时地:

sudo sysctl -w net.inet.ip.ttl=65

或者通过创建或编辑 /etc/sysctl.conf 来永久添加:

net.inet.ip.ttl=65

编辑:更正测试 TTL

因此,如果 TTL 之前设置为 64 而我将其更改为 65,我应该看到 ping TTL 增加 1,但是在 10.13.5 中,这种情况并没有发生。

答案1

您的奉献方式依然受到尊敬。

可能让你感到困惑的是,ping报告 ICMP 回显回复的 TTL已收到,由目标主机控制;也就是说,回应到您的 ping。我不认为 ICMP 回显 (ping) 协议提供了一种影响目标主机使用的 TTL 的方法。

我通过运行tcpdump并查看我发出的 ICMP 回显请求的 TTL 来验证这一点。请务必添加至少一个-vtcpdump查看 TTL。

sudo tcpdump -vi en0 icmp

答案2

适用于 10.15.2 (19C57) Catalina。-w 已被弃用,应予以省略。

sysctl net.inet.ip.ttl=65
net.inet.ip.ttl: 64 -> 65

ping localhost
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.040 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.065 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=65 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=65 time=0.091 ms

使用启动守护程序在重启后保留设置: /库/LaunchDaemons/com.gvalkov.ttl65.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.gvalkov.ttl65</string>
    <key>MachServices</key>
    <dict>
        <key>com.gvalkov.ttl65</key>
        <true/>
    </dict>
    <key>Program</key>
    <string>/usr/bin/sysctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/sysctl</string>
        <string>net.inet.ip.ttl=65</string>
    </array>
    <key>UserName</key>
    <string>root</string>
    <key>GroupName</key>
    <string>wheel</string>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

注意:我希望我正确获取了 sysctl 的路径!请运行which sysctl以获取实际路径。我目前无法检查,因为我的 MacBook Pro 2018 正在再次接受维修,以解决电池膨胀和按键卡住的问题。:(

相关内容