Linux 라우터에서 TTL 확인

Linux를 라우터로 만들고 IP 패킷 TTL이 작동하는지 확인



IP 패킷의 TTL(Time to Live)은 무한 전송을 막기 위한 것. 서브넷 (라우터)을 통과하면 감소 (값이 1 감소)됩니다. 여기서는 리눅스에 라우터 설정을 하고 TTL의 동작을 확인한다.

네트워크 구성





예를 들어 VirtualBox를 사용하여 이러한 구성을 만듭니다. VirtualBox의 설정 예는 여기을 참조.

Linux 라우터 설정



상기 구성이라면 Static Route의 설정은 불필요. 단순히 Forwarding(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

실험



그 1



단말 2(192.168.102.2)에서 단말 1(192.168.101.2)로 ping한다. 이때 TTL을 10(-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

통상 ttl의 디폴트는 64로 되어 있는 모습. 응답 패킷의 "ttl = 63"에서도 TTL의 감소를 확인할 수 있지만, 여기서는 송신시의 "TTL = 10"의 상태를 패킷 캡처 데이터로 확인한다. 송신측(단말 2)의 캡쳐 데이터는 이쪽.

수신측(단말 1)의 캡쳐 데이터는 이쪽.

예상대로 "TTL = 9"로 감소합니다.

그 2



”TTL=1”로 설정한다.
~# 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

라우터에서 TTL이 감소되어 '0'이 되어 패킷 도달 불능이 되었다.

끝에



리눅스에서도 라우터가 되는 것을 확인했다. 당연한가?

좋은 웹페이지 즐겨찾기