Eu tenho um programa (escrito por mim) que cria um dispositivo tun0 e define
uma rota para que os pacotes destinados à sub-rede 172.16.1.0/24 possam
ser lido a partir deste dispositivo. Estou tentando ir na outra direção agora
e escrever pacotes para o dispositivo tun que pode ser recebido por
Meu primeiro esforço, apenas alterando o endereço de origem e destino e
as portas funcionaram bem. Eu posso executar o seguinte:
nc -u -s MY_IP -p 4001 172.16.1.3 4000
e minha entrada é exibida.
Meu segundo esforço, na verdade, gerar pacotes de saída a partir do zero, é
atualmente falhando.
Posso executar tcpdump -i tun0
e ver os pacotes que escrevi:
11:30:14.433489 IP (tos 0x0, ttl 32, id 0, offset 0, flags [none], proto UDP (17), length 56) 172.16.1.2.54167 > Ubuntu-dbacher.local.4011: [udp sum ok] UDP, length 28
Mas meu ouvinte ( nc -l -u -s MY_IP -p 4011
) não vê nada.
Eu suspeito que há algo errado que está impedindo o dispositivo tun0
de rotear seus pacotes, mas não sei como obter visibilidade
em onde os pacotes estão sendo descartados.
$ ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.16.1.1 P-t-P:172.16.1.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.1.0 172.16.1.1 255.255.255.0 UG 0 0 0 tun0
10.10.48.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 10.10.48.1 0.0.0.0 UG 0 0 0 eth0
$ cat /proc/sys/net/ipv4/ip_forward
1
Como faço para depurar onde os pacotes tun estão sendo descartados?
(BTW, todos os pacotes são UDP.)