Как я могу подключиться к маршрутизатору через коммутируемую сеть Ethernet?

0

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

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

Zaz
источник
да, это правда, но бесполезно отправлять трафик L2 на маршрутизатор, если кадры не содержат пакеты протокола L3. Подавляющее большинство протоколов, используемых для фактической работы над производительностью в наши дни, - это L3, а большинство протоколов L2 предназначены просто для Carrier (Ethernet, Wi-Fi и т. д.), сетевого управления и логистики (ARP, STP и т. д.)
Фрэнк Томас,
@Frank Но я не могу установить IP-соединение с маршрутизатором, используя его MAC-адрес?
Заз
и да и нет. Вы описываете, как работает DHCP. система без IP отправляет широковещательный кадр, адресованный mac addr FFFFFFFFFFFF. все хосты на локальной сети получают этот кадр и декодируют пакет уровня 3 (IP) внутри него и сегмент уровня 4 в пакете, который адресован TCP \ 68 (службы DHCP). Все это говорит о том, что только TCP-сервисы имеют «соединения». Большинство протоколов Layer2 и все службы UDP являются "без установления соединения". они не содержат информации о порядке отправки кадров и не замечают, пропустил ли он кадр или 3.
Фрэнк Томас,
Вы можете посмотреть на инкапсуляцию: firewall.cx/networking-topics/the-osi-model/…
Фрэнк Томас,

Ответы:

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).

Zaz
источник