IP-Paket TTL (Time to Live) soll eine unendliche Übertragung verhindern. Dekrementieren (Wert wird um 1 dekrementiert) beim Durchlaufen des Subnetzes (Routers). Stellen Sie hier den Router unter Linux ein und überprüfen Sie die Funktion von TTL.
Wie üblich verwenden wir VirtualBox, um eine solche Konfiguration zu erstellen. Ein Beispiel für VirtualBox-Einstellungen finden Sie unter hier.
Mit der obigen Konfiguration muss die statische Route nicht festgelegt werden. Aktivieren Sie einfach die Weiterleitung (net.ipv4.ip_forward).
~# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
~# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
Pingen Sie von Terminal 2 (192.168.102.2) zu Terminal 1 (192.168.101.2). Stellen Sie zu diesem Zeitpunkt TTL auf 10 (Option -t).
~# ping -t 10 192.168.101.2
PING 192.168.101.2 (192.168.101.2) 56(84) bytes of data.
64 bytes from 192.168.101.2: icmp_seq=1 ttl=63 time=0.691 ms
Es scheint, dass der Standardwert von ttl normalerweise 64 ist. Das TTL-Dekrement kann auch mit dem Antwortpaket "ttl = 63" bestätigt werden, aber hier wird der Zustand von "TTL = 10" zum Zeitpunkt der Übertragung mit den Paketerfassungsdaten bestätigt. Klicken Sie hier für die erfassten Daten auf der Sendeseite (Terminal 2). Klicken Sie hier für die erfassten Daten auf der Empfangsseite (Terminal 1). Wie erwartet wird es als "TTL = 9" dekrementiert.
Auf "TTL = 1" setzen.
~# ping -t 1 192.168.101.2
PING 192.168.101.2 (192.168.101.2) 56(84) bytes of data.
From 192.168.102.1 icmp_seq=1 Time to live exceeded
Die TTL wurde vom Router dekrementiert und wurde zu '0', wodurch das Paket nicht mehr erreichbar war.
Ich habe bestätigt, dass es auch unter Linux ein Router sein kann. Ist es natürlich?
Recommended Posts