Descobri que a chave para trabalhar com endereços MAC é a tabela ARP , uma tabela que vincula endereços IP vizinhos (endereços IP na rede local) a endereços MAC.
Tudo o que você precisa fazer é usar ip neigh add
para vincular o endereço MAC do seu roteador a um endereço IP e rotear por esse endereço IP como de costume:
#!/bin/sh
DEV="eth0"
ROUTER="192.168.0.1"
MAC="${1:-01:23:45:67:89:ab}"
IP="192.168.0.5/24"
ip link set "$DEV" up
ip addr add "$IP" dev "$DEV"
ip neigh add "$ROUTER" lladdr "$MAC" dev "$DEV"
ip route add default via "$ROUTER"
Veja o script completo que estou usando no GitHub Gist.
O script acima configura uma conexão IP estática a um roteador por seu endereço MAC (que você pode especificar na linha de comando ou especifica um endereço MAC padrão no código).
Se você estiver usando IP estático em vez de DCHP, talvez seja necessário configurar servidores de nomes ( resolv.conf
).