У меня Raspberry Pi 3 работает под управлением версии Raspbian 7 (wheezy). Эти устройства имеют порт Ethernet RJ45 (eth0) и беспроводной модуль WiFi (wlan0). Я хотел бы настроить их как на этом изображении:

мой-rpi3-network.png

В принципе:

  • Я подключаю Rpi3 через проводной eth0 к коммутатору и подключаюсь к нему через Интернет с другого ПК с Ubuntu, у которого на eth0 Интернет "Общий для других компьютеров", что делает ПК с Ubuntu сервером DHCP с адресом 10.42.0.1 обращается к клиентам в 10.42.0.Диапазон X Вот почему я хотел бы оставить порт eth0 на Rpi3 в качестве клиента DHCP.
  • Я хочу сделать wlan0 на Rpi3 точкой доступа - это означает, что к ней могут подключаться другие машины; Я предполагаю, что это означает, что Rpi3 должен быть DHCP-сервером на этом интерфейсе (иначе он не сможет выделить локальный IP-адрес клиентскому компьютеру, который подключился к нему через WiFi).

Итак, я нашел эту ссылку: https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/ - и я пытался перейти по ней; сначала у моего Raspbian не было dhcpcd , поэтому я установил:

sudo apt-get install dhcpcd5

(именно dhcpcd5 имеет /etc/dhcpcd.conf - в противном случае пакет dhcpcd самом деле является dhcpcd3 и вместо него имеет /etc/dhcpcd.sh )

В середине урока я попытался сделать это в соответствии с инструкциями:

$ sudo service dhcpcd restart
[FAIL] Not running dhcpcd because /etc/network/interfaces ... failed!
[FAIL] defines some interfaces that will use a DHCP client ... failed!

Мой текущий /etc/network/interfaces такой:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet static
    address 172.24.1.1
    netmask 255.255.255.0
    network 172.24.1.0
    broadcast 172.24.1.255
#    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Другие ресурсы, такие как https://raspberrypi.stackexchange.com/questions/34914/wifi-not-working-on-startup, упоминают, что, очевидно, проблема в том, что /etc/network/interfaces определяет eth0 как клиента DHCP:

Если вы видите это, то для исправления откройте терминал:

$ sudo nano /etc/network/interfaces

и замените dhcp на ручной. Две строки из ваших интерфейсов:

iface eth0 inet manual
iface default inet manual

Однако я не хочу этого делать - потому что, если eth0 на Rpi3 не является DHCP-клиентом, я не могу заставить работать Internet Sharing с ПК с Ubuntu!

Итак, я понял, что невозможно запустить DHCP-сервер на машине, у которой один из сетевых интерфейсов определен как DHCP-клиент ?! Это правда? Или сформулировать это как вопрос:

  • Можно ли использовать один сетевой интерфейс (eth0) в качестве DHCP-клиента, а другой (wlan0) - в качестве DHCP-сервера на одном компьютере - и если да, то как?

2 ответа2

1

Если бы я был вами, вместо создания другого DHCP-сервера и подсети, я бы просто создал мост в вашем RPi, который соединит беспроводные и проводные сети в одной сети.

Таким образом, беспроводные клиенты получают IP-адреса непосредственно с вашего сервера Ubuntu.

Вы можете сделать это с помощью следующей конфигурации в /etc/network/interfaces:

auto br0
iface br0 inet dhcp
bridge_ports wlan0 eth0

auto wlan0
iface wlan0 inet manual

auto eth0
iface eth0 inet manual

br0 будет адресом интерфейса моста, который соединяет интерфейсы eth0 и wlan0 вместе. Затем мы настраиваем интерфейс для получения IP-адреса для RPi через DHCP.

Использование моста вместо другого уровня NAT предотвращает некоторые проблемы, вызванные двойным NAT.

0

OP здесь - ну сначала я подумал , что manual обозначение означает то же самое , как static но это , кажется , не будет так; Я нашел:

https://wiki.debian.org/NetworkConfiguration

Чтобы создать сетевой интерфейс без IP-адреса вообще, используйте ручной метод и используйте команды pre-up и post-down для перемещения интерфейса вверх и вниз.

iface eth0 inet manual
   pre-up ifconfig $IFACE up
   post-down ifconfig $IFACE down 

... и поэтому я скопировал эти точные строки в /etc/network/interfaces (заменив iface eth0 inet dhcp) - и оказалось, что это работает:

$ sudo service dhcpcd restart
dhcpcd[3253]: dhcpcd not running
dhcpcd[3254]: version 6.7.1 starting
dhcpcd[3254]: all: IPv6 kernel autoconf disabled
dhcpcd[3254]: eth0: adding address feXX::...
dhcpcd[3254]: if_addaddress6: Operation not supported
dhcpcd[3254]: DUID 00:XX:XX:...
dhcpcd[3254]: eth0: IAID eb:XX:....
dhcpcd[3254]: eth0: soliciting a DHCP lease
dhcpcd[3254]: eth0: offered 10.42.0.96 from 10.42.0.1
dhcpcd[3254]: eth0: leased 10.42.0.96 for 3600 seconds
dhcpcd[3254]: eth0: adding route to 10.42.0.0/24
dhcpcd[3254]: eth0: adding default route via 10.42.0.1
dhcpcd[3254]: forked to background, child pid 3307

Итак, поскольку все работает как ожидалось (и они сделали это даже после перезагрузки RPi3), я думаю, что это так, то ...

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