
A←–→B←–→C 머신으로 물리적 네트워크를 설정했습니다. IP 및 이더넷 구성은 아래에 요약되어 있습니다.
A(eth0: 10.10.10.2) ←—→ (eth0: 10.10.10.3)B(eth1: 192.168.0.3) ←—→ (eth1: 192.168.0.2)C
A에서 C로 UDP 패킷을 보내고 싶습니다. tcpdump
패킷 A는 다음과 같습니다 10.10.10.2:10000-->192.168.0.2:10001
(10000 또는 10001은 포트 번호입니다). 물론, 패킷은 B를 통과하고 eth0
B에서 들어가서 전달되어야 합니다 eth1
.
B의 라우팅 테이블은 서브넷 192.168.0.0/24 ~ 로 구성되었습니다 eth1
. 그리고 /proc/sys/net/ipv4/ip_forward
1입니다.
tcpdump
B는 UDP 패킷을 수신할 수 있음을 확인합니다 eth0
. 그러나 eth1
아무 일도 일어나지 않습니다(C도 마찬가지). 이는 패킷이 올바르게 전달되지 않았음을 의미합니다. ( iptables
Bilibili에는 드롭 정책이 없습니다.)
가상 머신에서 토폴로지를 다시 생성했는데 작동합니다. 하지만 실제 물리적 머신에서는 작동하지 않습니다. 또한 netfilter
대상 포트가 10001인 수신 UDP 패킷(이전 예와 같이)이 감지될 때마다 이를 수행하는 간단한 커널 모듈을 작성하려고 시도했지만 printk("some messages")
Linux 커널은 여전히 아무것도 인쇄하지 않습니다.
추신. B의 운영체제는 Debian 6.0.10(squeeze)이다.
누구든지 이 문제에 대해 밝힐 수 있다면 매우 감사하겠습니다.