Uma solução rápida e suja seria usar ip monitor
e um script que "ifupdowns" a interface.
O script seria:
#!/bin/sh
ip monitor link | while IFS=':' read num name status; do
read extraline # iproute2 outputs physical address on a separate line.
newstate=$(echo "$status"|awk -F' ' '{print $NF}')
if [ "$newstate" = "UP" ]; then
ifup "$name"
elif [ "$newstate" = "DOWN" ]; then
ifdown "$name"
fi
done
O script não verifica o status da interface de rede antes de tentar alterá-lo, mas isso não deve ser um problema.
Para usá-lo, basta colocá-lo em /opt/bin/linkmonitor.sh
, torná-lo executável com chmod +x /opt/bin/linkmonitor.sh
e adicioná-lo a /etc/rc.local
com um "e" comercial no final:
/opt/bin/linkmonitor.sh &
Se você precisar de uma solução mais robusta, talvez esteja interessado em uma solução de rota de failover .