라우팅 테이블은 Linux 커널 내부에 어디에 저장되어 있습니까?


12

내가 실행할 때 정보가 route -n정확히 어디서 (어디에서 structs) 검색됩니까?

나는 실행을 시도 strace route -n했지만 올바른 장소를 찾는 데 도움이되지 않았습니다.



메모리에 저장됩니다. 현재 메모리 주소를 찾고 있습니까?
Bandrami

@Bandrami struct정보를 보유한 책임이 무엇인지 알고 싶습니다 .
syntagma

디스크에서 파일을 찾는 사람이라면 누구나 DHCP 서버가 제공하는 것 또는 /etc/sysconfig/network-scripts/ifcfg-${DEV}간단한 경우에서 찾을 수있는 것 및 / 또는 /etc/sysconfig/network-scripts/route-${DEV}보다 복잡한 경우에서 찾을 수있는 것 (Red Hat / CentOS의 경우)에서 빌드됩니다. 7). 후자의 파일은의 출력을 포함합니다 ip -r. CentOS에 고정 경로 추가를 참조 하십시오 .
David Tonhofer

답변:


17

route또는 ip유틸리티라는 가상 파일 시스템에서 자신의 정보를 얻을 procfs. 일반적으로 아래에 장착됩니다 /proc. /proc/net/route커널의 IP 라우팅 테이블을 볼 수 있는 파일 이 있습니다. cat대신 라우팅 테이블을 인쇄 할 수 있지만 IP 주소는 16 진수로 저장되므로 route 유틸리티는 사람이 읽을 수있는 출력 형식을 지정합니다.

그 파일은 단순한 파일이 아닙니다. proc 파일 시스템의 모든 파일과 같이 읽기를 시도하여 열 때 항상 정확하게 생성됩니다.

나는 그 파일이 어떻게 쓰여지는지 알아 보았고 커널 소스를 봐야한다.이 함수 는 라우팅 테이블을 출력한다. 당신은에서 볼 라인 2510 , 라우팅 테이블의 헤더가 인쇄됩니다. 라우팅 테이블 fib_info은 헤더 파일 ip_fib.h, 라인 98에 정의 된 구조체에 있는 것으로 보입니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.