
У меня есть встроенная система Linux, работающая под управлением Ubuntu, подключенная через Ethernet к моему ноутбуку, который также работает под управлением Ubuntu. Мой ноутбук подключен к моей домашней сети через Wi-Fi. Я хотел бы создать локальную сеть между моим ноутбуком и платой (Altera DE1-SoC) через Ethernet, и эта сеть была бы подключена к моей домашней сети через сетевой адаптер Wi-Fi в моем ноутбуке. В идеале я хотел бы разрешить встроенной системе выполнять обнаружение 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
Функциональность, о которой вы просите, очень сложно реализовать, так как она требует 4-адресных заголовков Wi-Fi. Каждый пакет Wi-Fi может содержать 4 MAC-адреса — начальный и конечный адрес Ethernet и начальный и конечный адрес Wi-Fi. Однако в большинстве домашних приложений конечный адрес Ethernet не нужен, так как конечный адрес Wi-Fi обычно относится к тому же устройству (например, к вашему телефону или ноутбуку). Поэтому многие домашние маршрутизаторы Wi-Fi блокируют любой трафик, использующий 4-адресные заголовки, предположительно из соображений безопасности.
Я попытался выполнить похожую задачу — у нас был сервер только с Ethernet, который мы хотели подключить к нашей сети Wi-Fi. У нас не было Wi-Fi-донгла или карты под рукой, но у нас было много Raspberry Pi, поэтому мы решили просто использовать Pi в качестве адаптера. Однако мы столкнулись с этой самой проблемой.
В дальнейшем у вас есть несколько вариантов (насколько мне известно):
Проверьте, поддерживает ли ваш маршрутизатор 4-адресные пакеты, в этом случае вам придется объединить сети только на вашем ноутбуке — все маршрутизаторы разные, и ваш может поддерживать 4-адресную маршрутизацию.
Создайте подсеть на вашем компьютере для связи со встроенным устройством, подключенным к вашему Wi-Fi — это можно сделать с помощью DHCP-сервера, работающего на интерфейсе Ethernet. Вы также можете реализовать NAT, чтобы разрешить встроенному устройству доступ к вашей сети Wi-Fi и Интернету. Однако вам придется выполнить переадресацию портов, если вы хотите, чтобы встроенное устройство было доступно из сети Wi-Fi.
Напрямую передавать пакеты между интерфейсами на ноутбуке, эффективно удаляя его из сети. Это маршрут, который мы выбрали с Pis. Мы использовалиwlan_kabel. Я даже написал быстренькоскрипт установкидля Pi, который, вероятно, будет работать на Ubuntu (если вы отключите netplan). При этой схеме сеть видит встроенное устройство как имеющее MAC-адрес Wi-Fi ноутбука. У нас были проблемы с использованием DHCP (вероятно, потому что проводной компьютер игнорировал DHCPOFFERS с неправильным адресом), поэтому я бы рекомендовал использовать статический IP с этим маршрутом.
Извините, я не смог предоставить оптимальное решение - насколько мне известно, оборудование его не поддерживает. Дайте мне знать, если вы придумаете лучшее, чтобы я мог реализовать его и с нашими Pi.