
우리는 직장에서 일부 제품을 Windows에서 Linux로 포팅하는 작업을 포함하는 임무를 받았습니다. 해당 제품 기능 중 일부는 네트워크 버퍼를 통해서만 전달되는 NDIS6 미니포트 네트워크 어댑터입니다. 식별자와 MAC 주소가 있습니다. 별도의 서비스 응용 프로그램은 해당 네트워크 드라이버를 활성화하고 이 어댑터를 통해 네트워크 트래픽을 전달하는 IP 서비스를 시작합니다.
내 질문은 Linux에서 이러한 '더미' 네트워크 드라이버를 기능적으로 대체하는 것이 무엇입니까?
답변1
Linux에서 Windows 미니포트 네트워크 어댑터 교체란 무엇입니까?
"미니포트 네트워크 어댑터"는 별로 설명하지 않습니다 –미니포트 드라이버Windows 드라이버 모델에만 해당되는 내용으로, 드라이버 작성 방법을 설명하지만 드라이버가 수행하는 작업은 설명하지 않습니다.
이더넷 패킷의 통과 역할을 하고 프로그래밍 방식으로 활성화 및 비활성화할 수 있으며 이를 통해 IP 네트워킹을 설정하는 데 프로그래밍 방식으로 사용할 수 있는 일부 엔터티(모듈?)
목표가 소프트웨어에 의해 제어되는 네트워크 인터페이스를 만드는 것이라면(즉, 인터페이스를 통해 전송된 패킷은 파일 핸들을 통해 프로그램에 의해 수신되고 그 반대의 경우도 마찬가지) 다음을 사용해야 합니다.tap
또는tun
상호 작용. (전자는 레이어 2 이더넷 헤더가 있는 패킷을 전달하고 후자는 헤더가 없지만 그 외에는 동일합니다.)
공식 문서:
https://www.kernel.org/doc/Documentation/networking/tuntap.txt
(이 문서는 꽤 오래되었습니다. 모든 최신 Linux 배포판에서는 장치 노드를 직접 만들거나 커널 모듈을 수동으로 로드할 필요가 없습니다. 그러나 섹션 3 "프로그램 인터페이스"와 ioctl 기반 API는 여전히 정확합니다.)
TUN/TAP 인터페이스는 Linux의 대부분의 VPN 및 VM 소프트웨어에서 사용됩니다. 실제로 Windows에서 사용할 수 있는 "TAP-Windows" 및 "Wintun" NDIS 드라이버는 이를 모방하기 위해 작성되었습니다.
동일한 기능을 수행하는 자신만의 네트워크 인터페이스 드라이버를 작성하는 것도 가능합니다(예: VirtualBox에서 사용되는 'vboxnetadp' 및 SheepShaver Mac 에뮬레이터에서 사용되는 'sheep_net'). 그러나 대부분의 시스템 관리자는 그렇게 하지 않고 대신 표준 튜닝/탭을 사용하세요.