Я обнаружил, что ключом к работе с MAC-адресами является таблица ARP, таблица, которая связывает соседние IP-адреса (IP-адреса в локальной сети) с MAC-адресами.
Все, что вам нужно сделать, это использовать ip neigh add
чтобы связать MAC-адрес вашего маршрутизатора с IP-адресом, а затем направить через этот IP-адрес, как обычно:
#!/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"
Посмотреть полный скрипт, который я использую на GitHub Gist.
Приведенный выше сценарий устанавливает статическое IP-соединение с маршрутизатором по его MAC-адресу (который можно указать в командной строке или указать MAC-адрес по умолчанию в коде).
Если вы используете статический IP вместо DCHP, вам может потребоваться настроить серверы имен (resolv.conf
).