Bre*_*ett 10 networking macos-sierra macos macos-highsierra
如何在 macOS High Sierra 中更改 TTL?
在以前的 macOS 版本中,这可以按如下方式完成...
暂时地:
sudo sysctl -w net.inet.ip.ttl=65
Run Code Online (Sandbox Code Playgroud)
或者通过创建或编辑 /etc/sysctl.conf 来永久添加:
net.inet.ip.ttl=65
Run Code Online (Sandbox Code Playgroud)
编辑:更正测试 TTL
因此,如果 TTL 之前设置为 64,而我将其更改为 65,我应该会看到 ping TTL 增加 1,但是,在 10.13.5 中,这不会发生。
你给予的方式仍然受到尊重。
可能让你失望的是ping报告收到的 ICMP 回声回复的 TTL ,这是由目标主机控制的;也就是说,响应您的 ping的机器。我不认为 ICMP 回显 (ping) 协议提供了一种影响目标主机使用的 TTL 的方法。
我通过运行tcpdump并查看传出 ICMP 回显请求上的 TTL 来验证这一点。一定要加至少一个-v来tcpdump看到的TTL。
sudo tcpdump -vi en0 icmp
Run Code Online (Sandbox Code Playgroud)
在 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
Run Code Online (Sandbox Code Playgroud)
使用启动守护程序在重新启动后保留设置: /Library/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>
Run Code Online (Sandbox Code Playgroud)
注意:我希望我正确地获得了 sysctl 的路径!请运行which sysctl以获取实际路径。我目前无法检查,因为我的 MacBook Pro 2018 因电池膨胀和按键卡住而再次接受维修。:(
| 归档时间: |
|
| 查看次数: |
25677 次 |
| 最近记录: |