Primeiro: sua interface não tem um endereço IP configurado, então você não pode realmente enviar e receber pacotes IP sem ter um endereço. ( ping
usa o ICMP, um protocolo IP.)
Segundo: Não é assim que as interfaces de toque funcionam - elas não "refletirão" os pacotes ping
de volta à ponte; em vez disso, eles esperam estar conectados a um programa , por exemplo OpenVPN ou outro software VPN.
Portanto, sua abordagem funcionaria se você tentasse, por exemplo, configurar o OpenVPN com ponte para a rede host (compartilhando uma única sub-rede). Mas se você quiser apenas ver como as pontes Linux funcionam, você terá mais sorte com as interfaces veth
.
E se tudo que você quer é uma conexão L2 com a LAN externa, então você está criando a ponte no lugar errado - essas coisas geralmente são feitas no host , não em um container.
Pense em uma interface de rede como tendo duas extremidades: a extremidade 'host' é mostrada no sistema operacional e usada por todos os softwares; a outra extremidade está conectada à rede real (por exemplo, uma porta Ethernet física). Se os pacotes chegam através de uma extremidade, eles passam pelo final outro . (Pontes obviamente podem ter múltiplas portas, não apenas duas, mas o mesmo princípio geral se aplica.)
Quando você faz o bridge de uma interface, a bridge assume o lado host dessa interface, de modo que só vê os pacotes que vieram da rede. Mas se você usar ping -I eth0
ou ping -I tap0
, estará ignorando a ponte e enviando tudo para a rede real.
ping ──› [eth0 ──› NIC] ──› network
ping ──› [tap0 ──› VPN software] ──› ???
┌─› [eth0 ──› NIC] ──› network
ping ──› br0 ──┤
└─› [tap0 ──› VPN software] ──› ???
∧
ping -I tap0 ───┘
Assim, na sua situação, a interface de toque é inútil - todos os pacotes que você tentar enviar através dela serão descartados, já que não há nenhum programa anexado à outra extremidade. (Se você verificar ip link
, provavelmente verá com o NO-CARRIER
flag.)
Em vez disso, você poderia usar, por exemplo, uma interface veth
(o mesmo tipo que os contêineres costumam usar) - eles são sempre criados em pares conectados uns aos outros. Portanto, se você disser ping
para enviar pacotes através de veth0
, eles retornarão e passarão pelo host do veth1
, onde a ponte poderá recebê-los e encaminhará pela eth0, se necessário.
┌── [eth0 ──› NIC] ──› network
br0 ──┤
└── [veth1 ‹───› veth0] ‹── ping -I veth0