Estou tentando criar um programa em C que crie uma interface de dispositivo tun para minha interface física do pc. A ideia toda é que quando eu escrevo qualquer pacote bruto no meu dispositivo de túnel, ele coloca isso na minha interface física real. Minha pergunta é como mapear o dispositivo tun com a interface física real?
Por exemplo, minha eth1 tem endereço IP - 10.16.1.152. Como posso criar um dispositivo tun para que eu possa ler / escrever na interface eth1? Preciso dar o mesmo endereço IP ou um endereço IP diferente? É rota única maneira que eu vou escrever pacotes no dispositivo tun e irá criar uma rota que terá um gateway padrão do dispositivo tun como um dispositivo phy.
Estou seguindo este exemplo , mas estou claro sobre o conceito ainda.
Eu criei um dispositivo de encapsulamento com os seguintes comandos.
Meu PC tem uma interface ethernet real. Este endereço IP da interface ethernet 10.16.1.152 é conectado a um grupo de PCs e depois ao servidor de gateway para acessar a Internet.
Estou tentando criar um programa em C que grava pacotes de saudação do OSPF na interface.
Para fazer isso, estou criando um dispositivo de encapsulamento para que eu possa gravar pacotes de saudação do OSPF nele. Mas antes de fazer isso, estou verificando o dispositivo de túnel. Aqui meu dispositivo de túnel é 11.11.11.2/24 e estou configurando a rota para obter 10.16.1.152. O meu entendimento é que todos os pacotes recebidos ou enviados na interface real, ou seja, 10.16.1.152, serão recebidos por esta interface de dispositivo de túnel, cujo endereço IP é 11.11.11.2. Mas, quando eu fiz um ping para 10.16.1.152, os pacotes RX / Tx recebidos ainda são zero. Então, acho que meu túnel não está recebendo nenhum pacote.
ip tuntap add mode tun dev tun0
ip addr add 11.11.11.2/24 dev tun0
ip link set dev tun0 up
ip route get 10.16.1.152
Estou perdendo algum conceito aqui? Como posso fazer isso? Ainda estou lutando para esclarecer meus conceitos de dispositivo de túnel.