如何在 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 来验证这一点。请务必添加至少一个-v
以tcpdump
查看 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 正在再次接受维修,以解决电池膨胀和按键卡住的问题。:(