Специальная сеть Raspberry Pi

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

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

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

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


pi1@raspberrypi ~ $ 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
pi2@raspberrypi ~ $ 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 на каждом пи:


pi1@raspberrypi ~ $ 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)
pi2@raspberrypi ~ $ 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 на каждом пи:


pi1@raspberrypi ~ $ 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 pi2@raspberrypi ~ $ 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

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


pi1@raspberrypi ~ $ 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 сканирование на каждом пи:


pi1@raspberrypi ~ $ 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
pi2@raspberrypi ~ $ 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

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

sudo iwconfig wlan0 ap (some address)

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

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

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


person Andy    schedule 15.03.2013    source источник
comment
Вы когда-нибудь понимали это?   -  person devin    schedule 01.04.2013
comment
Стоит добавить это в качестве ответа?   -  person Fixee    schedule 11.04.2013
comment
Я удалил этот комментарий и сделал его ответом, как вы предложили Fixee.   -  person Andy    schedule 19.05.2013


Ответы (3)


После некоторых поисков я обнаружил, что USB-адаптер Belkin, который я использовал, по-видимому, не имел поддержки специального режима с драйверами Linux. Я купил несколько других беспроводных USB-адаптеров, которые отлично работали «Edimax EW-7811Un 150 Мбит / с Wireless 11n Nano Size USB Adapter». Они дешевле, меньше по размеру и работали в специальном режиме, даже не беспокоя водителей. Сведения, которые я привожу для устранения неполадок, можно использовать в качестве руководства, если вы также хотите выполнять специальные проекты Raspberry PI.

person Andy    schedule 19.05.2013
comment
Я выбрал адаптер EW-7811Un, потому что поискал в Google и увидел, как несколько человек используют его в специальном режиме. Я следовал инструкциям в wiki batman-adv, чтобы настроить его, который использует iwconfig в командной строке. При этом клетки никогда не становились одинаковыми, и коробки не могли видеть друг друга. Использование метода andys в / etc / network / interfaces отлично работало. Спасибо. - person bill davis; 13.09.2013
comment
Могли бы вы опубликовать файл / etc / network / interfaces, который в конечном итоге работал с EW-7811Un? - person MattG; 28.09.2015
comment
Кроме того, вы говорите, что вам не нужно было беспокоиться о драйвере, но какой драйвер dmesg сообщает, что EW-7911Un использует? У меня есть один, и он dmesg сообщает, что используется rtl8192cu, и я не могу проверить связь с другим пи. - person MattG; 28.09.2015

У меня это работает в / 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

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

person HDTV4free.info    schedule 03.11.2013
comment
Указывает ли dmesg, что в качестве драйвера используется rtl8192cu? - person MattG; 28.09.2015

У меня не получилось ни с одним адаптером, использующим набор микросхем 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 вики и это обсуждение на форуме Raspberry Pi.

person MattG    schedule 06.10.2015