12 votes

Comment modifier le TTL dans macOS High Sierra ?

Comment modifier le TTL dans macOS High Sierra ?

Dans les versions précédentes de macOS, cela pouvait être fait comme suit...

Temporairement :

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

Ou de façon permanente en créant ou en éditant /etc/sysctl.conf pour ajouter :

net.inet.ip.ttl=65

EDIT : Correction sur le test du TTL

Ainsi, si le TTL était précédemment défini à 64 et que je le modifie à 65, je devrais voir un ping TTL augmenter de 1. Cependant, dans la version 10.13.5, cela ne se produit pas.

9voto

Spiff Points 95683

La façon dont vous avez donné est toujours honorée.

Ce qui a pu vous déconcerter, c'est que ping indique le TTL de la réponse ICMP echo. reçu qui est contrôlé par l'hôte cible, c'est-à-dire, la machine qui est répondant à à votre ping. Je ne pense pas que le protocole d'écho ICMP (ping) permette d'influencer le TTL utilisé par l'hôte cible.

J'ai vérifié cela en exécutant tcpdump et regarder quel TTL était sur mes requêtes d'écho ICMP sortantes. Assurez-vous d'ajouter au moins un -v a tcpdump pour voir les TTLs.

sudo tcpdump -vi en0 icmp

4voto

George Valkov Points 201

Fonctionne pour moi sur 10.15.2 (19C57) Catalina. -w est déprécié, et devrait être omis.

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

Utilisation d'un démon de lancement pour maintenir le paramètre après le redémarrage : /Bibliothèque/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>

Note : J'espère que le chemin vers sysctl est correct ! Veuillez exécuter which sysctl pour obtenir le chemin réel. Je ne peux pas vérifier actuellement, car mon MacBook Pro 2018 est de nouveau en révision pour batterie gonflante et touches bloquées. :(

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X