알아보고 있습니다암호가상 장치 드라이버. 이 dummy_xmit()
함수는 패킷을 파괴합니다. 가상 장치의 진짜 목적이 무엇인지, 아니면 지금은 쓸모가 없고 레거시 장치 유형인지 묻고 싶습니다.
다음 테스트에 가상 장치 유형을 사용하는 경우:
$ sudo ip link add dummy1 type dummy
$ sudo ip addr add 2.2.2.2/24 dev dummy1
$ sudo ip link set dummy1 up
ping을 하면 2.2.2.2
루프백 인터페이스로 이동합니다. ping을 하면 2.2.2.10
함수로 이동 dummy_xmit()
하지만 이로 인해 패킷이 손상됩니다. 패킷이 손상되지 않은 유일한 시간이 루프백을 사용할 때뿐이라면 왜 루프백을 사용하지 않습니까?
답변1
가상 인터페이스는 확실히 약간 화려하지만 그럼에도 불구하고 유용합니다. 주요 장점은 IP 네트워크 연결이 전화 접속 링크뿐인 독립 실행형 호스트 및 컴퓨터에 적합하다는 것입니다. 실제로 후자는 대부분의 경우 독립형 호스트이기도 합니다.
독립형 호스트의 딜레마는 일반적으로 주소 127.0.0.1이 할당되는 루프백 장치라는 활성 네트워크 장치가 하나만 있다는 것입니다. 그러나 어떤 경우에는 로컬 호스트의 "공식" IP 주소로 데이터를 보내야 합니다. 예를 들어, 이 예에서는 네트워크에서 연결이 끊어진 노트북 vlite를 생각해 보세요.
vlite의 애플리케이션은 이제 동일한 호스트의 다른 애플리케이션으로 일부 데이터를 전송하려고 할 수 있습니다. /etc/hosts에서 vlite를 찾으면 IP 주소 191.72.1.65가 나오므로 애플리케이션은 해당 주소로 전송을 시도합니다. 루프백 인터페이스는 현재 시스템에 있는 유일한 활성 인터페이스이므로 커널은 이 주소가 실제로 자신을 참조하는지 전혀 모릅니다. 결과적으로 커널은 데이터그램을 삭제하고 응용 프로그램에 오류를 반환합니다.
가상 어플라이언스가 개입하는 곳입니다. 단순히 루프백 인터페이스의 분신 역할을 함으로써 이 딜레마를 해결합니다. vlite의 경우 주소 191.72.1.65를 지정하고 이를 가리키는 호스트 경로를 추가하면 됩니다. 그러면 191.72.1.65에 대한 모든 데이터그램이 로컬로 전달됩니다. 올바른 호출은 다음과 같습니다.
# ifconfig dummy vlite
# route add vlite