DHCP через Ubuntu для встроенной системы

У меня есть встроенная система Linux, на которой работает Ubuntu, подключенная через Ethernet к моему ноутбуку, на котором также установлена ​​Ubuntu. Мой ноутбук подключен к моей домашней сети через Wi-Fi. Я хотел бы создать локальную сеть между моим ноутбуком и платой (Altera DE1-SoC) по Ethernet, с этой сетью, подключенной к моей домашней сети через Wi-Fi NIC на моем ноутбуке. В идеале я хотел бы позволить встроенной системе выполнять обнаружение DCHP в моей домашней сети, чтобы получить собственный IP-адрес. Какие основные конфигурации / шаги мне нужно предпринять, чтобы сделать это? Интерфейсы на моем ноутбуке:

enp1s0    Link encap:Ethernet  HWaddr ec:f4:bb:9c:2f:35  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:736 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5148 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:251712 (251.7 KB)  TX bytes:943851 (943.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1303331 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1303331 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:504332328 (504.3 MB)  TX bytes:504332328 (504.3 MB)

wlp2s0    Link encap:Ethernet  HWaddr a0:88:69:70:16:d8  
          inet addr:192.168.1.148  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2601:4b:500:1d01:c03a:e05e:9c30:b44e/64 Scope:Global
          inet6 addr: fe80::1095:5763:9405:b652/64 Scope:Link
          inet6 addr: 2601:4b:500:1d01:774f:fccd:5479:e9bc/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6588443 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2426855 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6843503929 (6.8 GB)  TX bytes:502932524 (502.9 MB)

Я полагаю, что enp1s0 соответствует сетевой карте Ethernet, а wlp2s0 соответствует беспроводной сетевой карте.

На плате у меня есть

jfrye@DE1-SoC:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr da:e9:a5:9c:c8:58
          inet6 addr: fe80::d8e9:a5ff:fe9c:c858/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:577 errors:0 dropped:0 overruns:0 frame:0
          TX packets:546 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:197334 (197.3 KB)  TX bytes:175844 (175.8 KB)
          Interrupt:31 Base address:0x4000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:72 errors:0 dropped:0 overruns:0 frame:0
          TX packets:72 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:6016 (6.0 KB)  TX bytes:6016 (6.0 KB)

/ etc / network / interfaces на ноутбуке

# interfaces(5) file used by ifup(8) and ifdown(8)

auto lo wlp2s0
iface lo inet loopback

auto lo enp1s0
iface enps1s0 inet dhcp 

/ etc / network / interfaces на плате

#interfaces (5) file used by ifup(8) and ifdown(8)

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Когда я делаю на доске ifdown и ifup eth0, я получаю

Listening on LPF/eth0/da:e9:a5:9c:c8:58
Sending on   LPF/eth0/da:e9:a5:9c:c8:58
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 15 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 17 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 13 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 11 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 21 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 19 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 12 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 8 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 10 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 14 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 15 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 9 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 16 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 13 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 16 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 20 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 10 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7 (xid=0xb785c867)
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 (xid=0xb785c867)
No DHCPOFFERS received.
1
задан 18 June 2019 в 22:39

1 ответ

Запрашиваемая вами функция очень сложна для реализации, так как требует 4-хадресных заголовков Wi-Fi. Каждый пакет Wi-Fi может содержать 4 MAC-адреса - начальный и конечный Ethernet-адрес, а также начальный и конечный Wi-Fi-адрес. Однако в большинстве домашних приложений конечный адрес Ethernet не требуется, поскольку конечный адрес Wi-Fi обычно относится к одному и тому же устройству (например, вашему телефону или ноутбуку). Таким образом, многие домашние Wi-Fi-маршрутизаторы блокируют любой трафик, используя заголовки из 4 адресов, предположительно из соображений безопасности.

Я попытался выполнить аналогичную задачу - у нас был сервер только для Ethernet, который мы хотели подключить к нашей сети Wi-Fi. У нас не было ключа или карты Wi-Fi под рукой, но у нас было много Raspberry Pis, поэтому мы решили просто использовать Pi в качестве нашего адаптера. Однако мы столкнулись с этой самой проблемой.

В дальнейшем у вас есть несколько вариантов (о которых я знаю):

  • Посмотрите, поддерживает ли ваш маршрутизатор пакеты с 4 адресами, и в этом случае вам нужно будет только соединить сети на вашем ноутбуке - каждый маршрутизатор отличается, и ваш может поддерживать 4-х адресную маршрутизацию.

  • Создайте подсеть на своем компьютере, чтобы вы могли общаться со встроенным устройством при подключении к Wi-Fi - это можно сделать с помощью DHCP-сервера, работающего через интерфейс Ethernet. Вы также можете внедрить NAT, чтобы разрешить встроенному устройству доступ к вашей сети Wi-Fi и Интернету. Однако вам потребуется выполнить переадресацию портов, если вы хотите, чтобы встроенное устройство было доступно из сети Wi-Fi.

  • Прямая передача пакетов между интерфейсами на ноутбуке, эффективно удаляя его из сети. Это маршрут, который мы выбрали с Пис. Мы использовали wlan_kabel . Я даже написал быстрый скрипт установки для Pi, который, вероятно, будет работать в Ubuntu (если вы отключите netplan). По этой схеме во встроенном устройстве сеть видит MAC-адрес Wi-Fi ноутбука. У нас были проблемы с использованием DHCP (вероятно, из-за того, что проводной компьютер игнорировал DHCPOFFERS с неверным адресом), поэтому я бы рекомендовал использовать статический IP-адрес с этим маршрутом.

Извините, я не смог предложить оптимальное решение - AFAIK, аппаратное обеспечение не поддерживает его. Дайте мне знать, если вы придумали лучший вариант, чтобы я мог реализовать это и с нашим Pis.

1
ответ дан 18 June 2019 в 22:39

Другие вопросы по тегам:

Похожие вопросы: