보고서에 따르면 루프백 네트워크 인터페이스는 "완전히 소프트웨어로 구현된 가상 네트워크 장치"입니다.Unix.SE에 대한 또 다른 질문.
그런데 이 구현이 실제로 어떻게 이루어지고, 어떻게 운영하나요?
내가 아는 한, IP는 로컬 라우팅 테이블에 로컬로 표시되어 있습니다.
ip route show table local
로컬로 표시된 IP로 전송하면 루프백 장치가 트리거됩니다.그러나 이 감지는 순전히 라우팅 테이블을 통해 수행됩니까, 아니면 다른 커널 작업을 통해 수행됩니까??
나의 궁극적인 목표는 루프 장치 구성을 조작하여 랩톱의 두 WLAN 어댑터 간에 데이터그램을 보낼 때 네트워크에 실제 트래픽/데이터그램이 발생하도록 하는 것입니다.아니요로컬 루프에서. 그건:
Interface 1 -> WLAN -> Interface 2
아니다:
Interface 1 -> LOOP -> Interface 2
답변1
매우 기본적인 수준에서는 순수하게 소프트웨어로 구현된 장치입니다. 가상 머신이 완전히 소프트웨어인 것과 유사하게 루프백도 마찬가지입니다(완전히 다른 메커니즘을 사용하지만).
일반적으로 인터페이스가 패킷을 보내면 결국 유선으로 전송되어 플러시됩니다. 반면 루프백은 나가는 패킷을 유선으로 연결하는 대신 해당 인터페이스의 들어오는 대기열로 이동한 다음 들어오는 패킷처럼 처리합니다.
패킷을 평가할 때 netfilter
라우팅 결정이 두 번 내려집니다. 들어오는 패킷에 대해 한 번(예: 이 패킷이 올바른 인터페이스에서 수신되었습니까?), 나가는 패킷에 대해 한 번(예: 이 패킷을 어떤 인터페이스에서 전송해야 합니까?) 이 라우팅 결정은 커널이 로컬 라우팅 테이블에 대해 패킷을 검사할 때 이루어집니다.
답변2
라우팅 테이블 → 장치 → 장치 드라이버(루프백)
UPD. (2012-10-20): 최근에 sysctl 문서를 발견했습니다: «...
accept_local - BOOLEAN
Accept packets with local source addresses. In combination
with suitable routing, this can be used to direct packets
between two local interfaces over the wire and have them
accepted properly.
rp_filter must be set to a non-zero value in order for
accept_local to have an effect.
...», 따라서 귀하의 질문의 두 번째 부분에 대한 답변이 되기를 바랍니다.