Estou usando um script sh (colado abaixo) para criar uma interface de tun IPv6 usando iproute com o modo tun.
#!/bin/sh
# Create a new TUN interface for WPAN interaction.
ip -6 tuntap add mode tun tun0
# Assign it a global IPv6 address.
ip -6 addr add FF41::2 dev tun0
# Add route to default address of Serial TUN embedded interface.
ip -6 route add FF41::1 dev tun0
# Add route to Unique Local /64 Prefix via tun0.
ip -6 route add FF41:0000:0000:3EAD::/64 dev tun0
# The interface is ready.
ip link set tun0 up
# Enable IPv6 routing on host.
sysctl -w net.ipv6.conf.all.forwarding=1
Eu gostaria de substituir este script (que é chamado durante a inicialização) por uma abordagem mais clara com /etc/network/interfaces
, no entanto, estou um pouco preso ao criar exatamente esse arquivo.
O comando para a adição da rota, eu sei que vou substituí-los com a sub-rotina de pré-up apropriada em /etc/network/interfaces
.
No entanto, não tenho certeza de como informar o ifup de que a interface a ser criada é a do tun.
Neste momento, meu /etc/network/interfaces
é assim:
# 802.15.4 Network
auto tun0
iface tun0 inet6 static
address FF41::2
netmask 64
pre-up ip -6 tuntap add mode tun tun0
pre-up ip -6 route add FF41::1 dev tun0
pre-up ip -6 route add FF41:0000:0000:3EAD::/64 dev tun0
post-up sysctl -w net.ipv6.conf.all.forwarding=1
Neste dispositivo, eu tenho um script python que usa pytun para vincular o tun0 a uma conexão serial com um dispositivo externo (que usa um rádio 802.15.4).
EDIT: Parece que encontrei uma solução de trabalho usando o arquivo interfaces
acima. No entanto, ainda estou aberto a informações sobre uma solução mais elegante (se houver uma!). Obrigado!