1

Я пытаюсь подключить плату ARM Debian AR25 Arietta к моей домашней сети с помощью DHCP (или мне не удается получить статический IP-адрес в правильной подсети). В настоящее время я использую плату через USB, которая отображается как некий виртуальный интерфейс Ethernet, настроенный с использованием статического IP 192.168.10.0/24 . Я могу получить доступ к нему (SSH) с компьютера, к которому он подключен, но я хочу иметь доступ к остальной части моей сети на 192.168.1.0/24 и к интернету с платы, а также получить доступ к плате из моей домашней сети ,

Домашняя сеть находится в подсети 192.168.1.0/24 .

В настоящее время у меня есть два файла /etc/network/interfaces :

Конфигурация хоста (хост-хост Linux)

allow-hotplug usb0
iface usb0 inet static
    address 192.168.10.20
    netmask 255.255.255.0

Конфигурация платы (плата Debian ARM через USB)

auto usb0
iface usb0 inet static
    address 192.168.10.10
    netmask 255.255.255.0
    gateway 192.168.10.20

Я попытался установить IP платы на 192.168.1.90 но это сделало его недоступным. Возможно, это связано со шлюзом? Я также пытался

iface usb0 inet dhcp

но безрезультатно.

Как я могу получить, чтобы моя плата ARM с интерфейсом USB-connect-virtual-ethernet-interface имела IP-адрес (DHCP или статический) в подсети 192.168.1.0/24 используемой остальной частью моей сети при подключении к коробке через USB? Я бы предпочел использовать DHCP. На маршрутизаторе 192.168.1.1 работает DHCP-сервер.

2 ответа2

1

Это возможно, используя NAT и iptables (спасибо Greg Bowser за вдохновение). Предполагая, что eth0 является сетевым интерфейсом, а usb0 является сетевым интерфейсом Arietta , это временно настроит маршрутизацию на хосте:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT

Пройдите тестирование (возможно, потребуется ifdown usb0 и ifup usb0 или перезагрузить Arietta). Если правила работают, вы сможете пропинговать внешний адрес (возможно, 192.168.1.1 или google.com ) из Arietta.

Если вышеуказанные правила iptables работают, вы можете сделать их постоянными , добавив net.ipv4.ip_forward = 1 в /etc/sysctl.conf и сохранив правила iptables. Я сделал это, установив iptables-persistent (apt-get install iptables-persistent) и сохранив правила во время установки.

1

Установка IP платы на 192.168.1.90 не будет работать, потому что маршрутизация не удастся. Если вы запустите ip route на хост-компьютере, он покажет, что 192.168.1.0/24 подключен через обычное сетевое соединение к остальной части локальной сети. Он пытается маршрутизировать пакеты через этот интерфейс, а не через usb0 как предполагалось.

Два варианта:

  1. Используйте хост Linux в качестве маршрутизатора. Это требует включения пересылки и настройки NAT (MASQUERADING) с помощью iptables (на самом деле это довольно просто)

  2. Создайте интерфейс моста на вашем хост-компьютере и добавьте оба физических интерфейса к этому мосту. Это в основном похоже на подключение их обоих к одному коммутатору, но сделано программно. Я предполагаю, что ваша сеть подключена к хост-машине на eth0:

    brctl addbr br0
    brctl addif br0 usb0
    brctl addif eth0
    

Это должно просто работать ©. Вам может понадобиться установить пакет bridge-utils . Поскольку вы используете дистрибутив на основе Debian, смотрите здесь .

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