Creați două dispozitive TAP, fiecare dintre acestea va fi citit și scris de către stiva de protocol userland. În plus, cele două dispozitive TAP sunt conectate prin puntea Linux Bridge.
Scriptul pentru pregătirea mediului este următorul.
sudo ip tuntap add dev tap0 mode tap
sudo ip tuntap add dev tap1 mode tap
sudo ip addr add 10.0.0.1/24 dev tap0
sudo ip addr add 10.0.0.2/24 dev tap1
sudo ip link set up tap0
sudo ip link set up tap1
sudo brctl addbr br0
sudo brctl addif br0 tap1
sudo brctl addif br0 tap0
sudo ip link set br0 up
Stiva de protocol userland are capacitatea de a trimite și primi ARP. Procedura de generare a acestei probleme a fost următoarea.
- lansați o solicitare ARP de la tap0.
- Ajunge la tap1 prin br0 și trimite un răspuns ARP.
- br0 primește răspunsul ARP, dar nu ajunge la tap0.
Am capturat pachetele după cum urmează.
vagrant@impish64:~$ sudo tcpdump -i br0 -nv
tcpdump: ascultare pe br0, tip link EN10MB (Ethernet), lungime instantanee 262144 octeți
13:14:23.103549 ARP, Ethernet (len 6), IPv4 (len 4), Solicitare cine-are 10.0.0.2 spune 10.0.0.1, lungime 28
13:14:23.104203 ARP, Ethernet (len 6), IPv4 (len 4), Răspuns 10.0.0.2 este la 3a:2c:25:5b:e1:40, lungime 28
vagrant@impish64:~$ sudo tcpdump -i tap0 -nv
tcpdump: ascultare la tap0, tip link EN10MB (Ethernet), lungimea instantaneului 262144 octeți
13:13:40.868761 ARP, Ethernet (len 6), IPv4 (len 4), Solicitare cine-are 10.0.0.2 spune 10.0.0.1, lungime 28
vagrant@impish64:~$ sudo tcpdump -i tap1 -nv
tcpdump: ascultare la tap1, tip link EN10MB (Ethernet), lungime instantanee 262144 octeți
13:12:50.368294 ARP, Ethernet (len 6), IPv4 (len 4), Solicitare cine-are 10.0.0.2 spune 10.0.0.1, lungime 28
13:12:50.368699 ARP, Ethernet (len 6), IPv4 (len 4), Răspuns 10.0.0.2 este la 3a:2c:25:5b:e1:40, lungime 28
Diagrama acestei probleme este următoarea.
diagramă
De ce nu zboară ARP Reply către atinge 0
cu setarea asta?