Linux 커널 버전 4.0 및 3.16에서 사용자 정의 네트워크 장치 드라이버를 구현하려고 합니다.
그리고 링크에서는 잘 작동합니다. 그러나 최근 장치에 전달과 관련된 몇 가지 문제가 있음을 발견했습니다.
(device 1) (gateway) (device 2)
[사용자 정의 네트워크 장치] - [사용자 정의 네트워크 장치' + eth0' ] - [ eth0 ]
핑 테스트를 해봤습니다. 아래는 결과입니다.
첫 번째 ping 테스트(장치 2에서 장치 1로)
핑 요청 메시지가 장치 1에 도착합니다. Ping 응답 메시지가 게이트웨이에 도달합니다.
그러나 응답 메시지는 장치 2에 도달하지 않습니다.
두 번째 ping 테스트(장치 1에서 장치 2로)
ping 요청 메시지가 게이트웨이에 도착합니다.
그러나 ping 요청 패킷이 장치 1에 도달하지 못했습니다.
장치 드라이버는 arp 테이블 없이 구현됩니다. 패킷이 eth0' 네트워크 장치에 의해 수신된 것으로 보입니다. eth0' 네트워크 장치의 RX 카운터는 증가하지만 TX 카운터는 증가하지 않습니다.
패킷이 게이트웨이에서 IP 계층으로 잘 전달되는 것을 볼 수 있습니다. 게이트웨이에 "sysctl -w net.ipv6.conf.all.forwarding=1" 명령을 사용했습니다. 그리고 상태 비저장 자동 구성을 위해 radvd 데몬을 활용하세요. 게이트웨이에서 방화벽을 비활성화하려면 "ufwdisable" 명령을 사용하십시오. 이 문제는 내 사용자 정의 네트워크 드라이버를 사용할 때만 발생하며, 이 증상은 eth1 네트워크 장치의 문제인 것 같지 않습니다. 도와주세요
답변1
이 문제는 해결되었습니다. 이런 모호한 질문을 해서 죄송합니다. 사용자 정의 드라이버는 Mac 브로드캐스트를 사용하여 IP 패킷을 보냅니다. 이 부분을 mac unicast로 변경했더니 드디어 문제가 해결되었습니다.