У меня есть компьютер и маршрутизатор, подключенные в разных местах к коммутируемой сети Ethernet. Я хочу подключить их, как будто я подключил свой компьютер непосредственно к маршрутизатору.

Насколько я понимаю, сети Ethernet отправляют данные в кадрах, используя MAC-адреса и от них, поэтому любые два подключенных устройства должны иметь возможность напрямую общаться, не получая сначала IP-адрес от основного маршрутизатора, верно?

1 ответ1

0

Я обнаружил, что ключом к работе с 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).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .