如何在 macOS High Sierra 中更改 TTL?

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 中,这不会发生。

Spi*_*iff 8

你给予的方式仍然受到尊重。

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

我通过运行tcpdump并查看传出 ICMP 回显请求上的 TTL 来验证这一点。一定要加至少一个-vtcpdump看到的TTL。

sudo tcpdump -vi en0 icmp
Run Code Online (Sandbox Code Playgroud)


Geo*_*kov 7

在 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 因电池膨胀和按键卡住而再次接受维修。:(