Подтвердить что ты не робот

Малиновая сеть Pi ad-hoc

Я хочу попробовать некоторые сетевые проекты с Raspberry Pis, и мне нужно просто отправить пакеты между парой pis. Я был бы счастлив, как первый шаг, просто имея возможность пинговать между малиной Pis в режиме ad-hoc. Я не успел это сделать, несмотря на то, что смотрел несколько учебных руководств и примеров в Интернете.

У меня есть 2x Raspberry Pis с установленной Debian Wheezy OS. Я использую следующий USB-адаптер, на котором я установил прошивку для обоих pis и протестировал их работу, подключив их в управляемом режиме к маршрутизатору: Bus 001 Устройство 004: ID 050d: 945a Компоненты Belkin F7D1101 v1 Базовый беспроводной адаптер [Realtek RTL8188SU]

Вот несколько распечаток о сетевой информации:

/etc/network/interfaces на каждом pi:


[email protected] ~ $ cat /etc/network/interfaces 
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet manual
    address 192.168.2.1
    netmask 255.255.255.0
    wireless-channel 4
    wireless-essid pi-ad-hoc
    wireless-mode ad-hoc
[email protected] ~ $ cat /etc/network/interfaces 
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet manual
    address 192.168.2.2
    netmask 255.255.255.0
    wireless-channel 4
    wireless-essid pi-ad-hoc
    wireless-mode ad-hoc

ifconfig на каждом pi:


[email protected] ~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr ec:1a:59:46:8e:5a  
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:26 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
[email protected] ~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr ec:1a:59:46:59:0a  
          inet addr:192.168.2.2  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:6 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

iwconfig в каждом pi:


[email protected] ~ $ iwconfig wlan0
wlan0     IEEE 802.11bg  ESSID:"pi-ad-hoc"  Nickname:"rtl_wifi"
          Mode:Ad-Hoc  Cell: 02:11:87:FA:4A:02   Bit Rate:54 Mb/s
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 [email protected] ~ $ iwconfig wlan0 wlan0 IEEE 802.11bg ESSID:"pi-ad-hoc" Nickname:"rtl_wifi" Mode:Ad-Hoc Cell: 02:11:87:C4:F2:01 Bit Rate:54 Mb/s
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

маршрут на один пи (идентичный на другом pi):


[email protected] ~ $ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 wlan0

Проверка iwlist на каждом pi:


[email protected] ~ $ sudo iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 02:11:87:FA:4A:02
                    ESSID:"pi-ad-hoc"
                    Protocol:IEEE 802.11bg
                    Mode:Ad-Hoc
                    Frequency:2.427 GHz (Channel 4)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality:0  Signal level:0  Noise level:0
          Cell 04 - Address: 02:11:87:C4:F2:01
                    ESSID:"pi-ad-hoc"
                    Protocol:IEEE 802.11bg
                    Mode:Ad-Hoc
                    Frequency:2.427 GHz (Channel 4)
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Signal level=100/100
[email protected] ~ $ sudo iwlist wlan0 scan wlan0 Scan completed : Cell 01 - Address: 02:11:87:C4:F2:01 ESSID:"pi-ad-hoc" Protocol:IEEE 802.11bg Mode:Ad-Hoc Frequency:2.427 GHz (Channel 4) Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s 48 Mb/s; 54 Mb/s Quality:0 Signal level:0 Noise level:0 Cell 02 - Address: 02:11:87:FA:4A:02 ESSID:"pi-ad-hoc" Protocol:IEEE 802.11bg Mode:Ad-Hoc Frequency:2.427 GHz (Channel 4) Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s 48 Mb/s; 54 Mb/s Signal level=100/100

Ping не работает, и между ними не работает сеть. Из iwconfig вы можете видеть, что каждый из них имеет другой "сотовый" адрес (не тот же Cell, что и в сканировании iwlist), который является псевдо-базовым идентификатором станции, который используется для определения сети ad-hoc (мое лучшее понимание из что я читал). Кроме того, из iwlist каждый pi может видеть свою собственную, а также другую сеть ad-hoc. Я предполагаю, что им нужно выбрать один и тот же идентификатор ячейки для связи, и я не уверен, как заставить их делать это автоматически. Я попытался статически заставить их быть одинаковыми со следующей командой на каждом pi, который не менял идентификатор ячейки и, следовательно, не работал:

sudo iwconfig wlan0 ap (some address)

Я также попробовал решение, которое использует ap_scan = 2 в конфигурации wpa_supplicant, которая, похоже, не помогла.

Кто-нибудь знает, что я сделал неправильно?

Спасибо, Энди.

4b9b3361

Ответ 1

После некоторых поисков я обнаружил, что адаптер USB Belkin, который я использовал, по-видимому, не поддерживал ad-hoc-режим с драйверами linux. Я купил некоторые другие адаптеры USB для USB, которые отлично поработали с USB-адаптером Nano Size с интерфейсом NI размером 1000 Мбит/с для Edimax EW-7811Un. Они дешевле, меньше, и они работали в режиме ad-hoc, даже не беспокоясь о драйверах. Детали, которые я поставил для устранения неполадок, могут быть использованы в качестве руководства, если вы также хотите делать специальные проекты PI малины.

Ответ 2

Это работает для меня в /etc/network/interfaces:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
wireless-essid "MYPINET"
wireless-channel 3
wireless-mode ad-hoc
wireless-ap 11:5F:02:38:5C:45
address 192.168.10.1
netmask 255.255.255.0

Эстик, канал и ап могут быть любым допустимым значением (одинаковым для всех ваших Pi). Не забудьте назначить разные адреса в той же подсети для вашего другого Pi, и все должно быть в порядке. Ap определяет идентификатор ячейки, который был указан выше. FWIW Я использую TP-link WN725N. Он имеет набор микросхем RTL8188CUS и отлично работает из коробки, хотя dmesg указывает, что Pi рассматривает его как RTL8192.

Ответ 3

Я был неудачен с любым адаптером, используя чипсет RTL8188CUS. К счастью, у меня было несколько ключей Ralink RT5370 (от этот комплект), которые поддерживают интерфейс nl80211 и режим ad-hoc.

Мое решение включает в себя использование wpa_supplicant и настроено на 2 файла. Убедитесь, что установлен драйвер nl80211:

sudo apt-get install libnl1

Затем создайте следующий wpa_supplicant файл конфигурации /etc/wpa_supplicant-adhoc.conf на каждом Pi:

ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=2

network={
  ssid="pihoc_wpa"
  mode=1
  frequency=2462
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="password"
} 

где вы можете выбрать ssid, frequency (посмотрите здесь для допустимых значений) и psk. Убедитесь, что вы являетесь частью группы пользователей net-dev, используя команду

getent group netdev

а если нет, вы можете добавить себя, используя

sudo usermod -a -G netdev userName

Затем добавьте следующий блок в файл /etc/network/interfaces на каждом Pi:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
   address 10.10.2.1
   netmask 255.255.255.0
pre-up wpa_supplicant -B -D nl80211 -i wlan0 -c /etc/wpa_supplicant-adhoc.conf

где каждое Pi имеет другое поле address, начинающееся с 10.10.2.. Кроме того, если ваш адаптер RT5370 использует интерфейс, отличный от wlan0 (например, wlan1, wlan2 и т.д.), Обязательно используйте это имя интерфейса.

В этот момент Pis должен автоматически присоединиться к сети после перезагрузки. Проверьте соединение с помощью ping или с помощью ssh, например, выполните следующие действия с агентом с IP-адресом 10.10.2.1:

ssh 10.10.2.2

для доступа к агенту с IP-адресом 10.10.2.2.

Шаги, перечисленные здесь, адаптированы из этой статьи в вики Arch Linux и это обсуждение форума малины Pi.