Raspberry pi 3 + internal WI-FI + USB WI_FI

Тема в разделе "Raspberry Pi", создана пользователем Igor68, 27 окт 2016.

  1. Igor68

    Igor68 Гуру

    Может кому интересно.....
    Собственно сначала был USB свисток WI-FI + Raspberre Pi 2. Всё настроил и работало, пока последний не спалил по недоумию своему. Но купить RPi 2 вновь не удалось, а приехал вместо него RPi 3(Хоть таковой у меня уже был). После установки USB WI-FI и настройки его (много информации по этому в Yandex и Google имеется - почему ссылаюсь на поисковики?... да потому что для каждого USB WI-FI устройства правила установки свои. Например "TP-LINK TL-WN725N" ) получил:
    Код (Bash):
    root@raspberrypi:/home/tmp# iwconfig
    wlan0     IEEE 802.11bgn  ESSID:"bot_gray"  Nickname:"<WIFI@REALTEK>"
              Mode:Master  Frequency:2.442 GHz  Access Point: 14:CC:20:16:12:9B
              Bit Rate:72.2 Mb/s   Sensitivity:0/0
              Retry:off   RTS thr:off   Fragment thr:off
              Encryption key:off
              Power Management:off
              Link Quality=61/100  Signal level=63/100  Noise level=0/100
              Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
              Tx excessive retries:0  Invalid misc:0   Missed beacon:0

    lo        no wireless extensions.

    eth0      no wireless extensions.

    wlan1     IEEE 802.11bgn  ESSID:"dark_gray"
              Mode:Managed  Frequency:2.422 GHz  Access Point: CC:B2:55:9A:22:1C
              Bit Rate=48 Mb/s   Tx-Power=1496 dBm
              Retry short limit:7   RTS thr:off   Fragment thr:off
              Encryption key:off
              Power Management:on
              Link Quality=36/70  Signal level=-74 dBm
              Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
              Tx excessive retries:0  Invalid misc:0   Missed beacon:0
    Далее поднял встроенный wlan0 как хост, с раздачей IP адресов (DHCP) - одним словом сеть "bot_gray" для работы со зверьком (arduino + multiservo + .....).
    Внешний wlan1 соединил с роутером (интернет и т.п.).
    В /etc/network/interfaces у меня получилось:
    Код (Bash):
    allow-hotplug wlan1
    auto wlan1
    iface wlan1 inet dhcp
    #iface wlan1 inet static
    #       address         192.168.0.128
    #       netmask         255.255.255.0
    wpa-ssid "dark_gray"
    wpa-psk "13022005"



    #allow-hotplug wlan0
    auto wlan0
    iface wlan0 inet static
            address         192.168.7.1
            netmask         255.255.255.0
            network         192.168.7.0
            broadcast       192.168.7.255

    #       gateway         192.168.7.1
    post-up service udhcpd restart
    #wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


    up iptables-restore < /etc/iptables.ipv4.nat
     
    /etc/iptables.ipv4.nat - тут шлюз (может и не надо) - в моём случае wlan0 <---> Ethetnet. Но можно добавить и wlan1. В этом случае будете с ноутбука через RPi3 и роутер выходить в интернет.

    Код (Bash):
    # Generated by iptables-save v1.4.14 on Tue Dec 22 20:40:21 2015
    *nat
    :PREROUTING ACCEPT [131:8936]
    :INPUT ACCEPT [131:8936]
    :OUTPUT ACCEPT [4:268]
    :POSTROUTING ACCEPT [0:0]
    -A POSTROUTING -o eth0 -j MASQUERADE
    -A POSTROUTING -o eth0 -j MASQUERADE
    COMMIT
    # Completed on Tue Dec 22 20:40:21 2015
    # Generated by iptables-save v1.4.14 on Tue Dec 22 20:40:21 2015
    *filter
    :INPUT ACCEPT [102:6433]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [49:4911]
    -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i wlan0 -o eth0 -j ACCEPT
    COMMIT
    # Completed on Tue Dec 22 20:40:21 2015
    /etc/default/isc-dhcp-server - для dhcp на wlan0

    Код (Bash):
    # Defaults for isc-dhcp-server initscript
    # sourced by /etc/init.d/isc-dhcp-server
    # installed at /etc/default/isc-dhcp-server by the maintainer scripts

    #
    # This is a POSIX shell fragment
    #

    # Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
    DHCPD_CONF=/etc/dhcp/dhcpd.conf

    # Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
    DHCPD_PID=/var/run/dhcpd.pid

    # Additional options to start dhcpd with.
    #       Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
    #OPTIONS=""

    # On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
    #       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
    INTERFACES="wlan0"
     
    мой /etc/udhcpd.conf как пример
    Код (Bash):
    # Sample udhcpd configuration file (/etc/udhcpd.conf)

    # The start and end of the IP lease block

    start           192.168.7.20    #default: 192.168.0.20
    end             192.168.7.100   #default: 192.168.0.254


    # The interface that udhcpd will use

    interface       wlan0           #default: eth0


    # The maximim number of leases (includes addressesd reserved
    # by OFFER's, DECLINE's, and ARP conficts

    #max_leases     254             #default: 254


    # If remaining is true (default), udhcpd will store the time
    # remaining for each lease in the udhcpd leases file. This is
    # for embedded systems that cannot keep time between reboots.
    # If you set remaining to no, the absolute time that the lease
    # expires at will be stored in the dhcpd.leases file.

    remaining       yes             #default: yes


    # The time period at which udhcpd will write out a dhcpd.leases
    # file. If this is 0, udhcpd will never automatically write a
    # lease file. (specified in seconds)

    #auto_time      7200            #default: 7200 (2 hours)


    # The amount of time that an IP will be reserved (leased) for if a
    # DHCP decline message is received (seconds).

    #decline_time   3600            #default: 3600 (1 hour)


    # The amount of time that an IP will be reserved (leased) for if an
    # DHCP decline message is received (seconds).

    #decline_time   3600            #default: 3600 (1 hour)


    # The amount of time that an IP will be reserved (leased) for if an
    # ARP conflct occurs. (seconds

    #conflict_time  3600            #default: 3600 (1 hour)


    # How long an offered address is reserved (leased) in seconds

    #offer_time     60              #default: 60 (1 minute)

    # If a lease to be given is below this value, the full lease time is
    # instead used (seconds).

    #min_lease      60              #defult: 60


    # The location of the leases file

    #lease_file     /var/lib/misc/udhcpd.leases     #defualt: /var/lib/misc/udhcpd.leases

    # The location of the pid file
    #pidfile        /var/run/udhcpd.pid     #default: /var/run/udhcpd.pid
    # Everytime udhcpd writes a leases file, the below script will be called.
    # Useful for writing the lease file to flash every few hours.

    #notify_file                            #default: (no script)

    #notify_file    dumpleases      # <--- useful for debugging

    # The following are bootp specific options, setable by udhcpd.

    #siaddr         192.168.0.22            #default: 0.0.0.0

    #sname          zorak                   #default: (none)

    #boot_file      /var/nfs_root           #default: (none)

    # The remainer of options are DHCP options and can be specifed with the
    # keyword 'opt' or 'option'. If an option can take multiple items, such
    # as the dns option, they can be listed on the same line, or multiple
    # lines. The only option with a default is 'lease'.

    #Examles
    opt     dns     8.8.8.8 4.4.4.4
    option  subnet  255.255.255.0
    opt     router  192.168.7.1
    #opt    wins    192.168.10.10
    #option dns     129.219.13.81   # appened to above DNS servers for a total of 3
    #option domain  local
    option  lease   864000          # 10 days of seconds


    # Currently supported options, for more info, see options.c
    #opt subnet
    #opt timezone
    #opt router
    #opt timesrv
    #opt namesrv
    #opt dns
    #opt logsrv
    #opt cookiesrv
    #opt lprsrv
    #opt bootsize
    #opt domain
    #opt swapsrv
    #opt rootpath
    #opt ipttl
    #opt mtu
    #opt broadcast
    #opt wins
    #opt lease
    #opt ntpsrv
    #opt tftp
    #opt bootfile
    #opt wpad

    # Static leases map
    #static_lease 00:60:08:11:CE:4E 192.168.0.54
    #static_lease 00:60:08:11:CE:3E 192.168.0.44
     
    в результате сейчас пишу с ноутбука это сообщение зайдя на RPI 3 по сети wlan0 на установленном на нём ICEWEASEL:
    Код (Bash):
    igor@debian-i:~$ ssh -X igor@192.168.7.1
    igor@192.168.7.1's password:
    Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Thu Oct 27 08:16:46 2016 from debian-i.local
    igor@raspberrypi ~ $ iceweasel
    Довольно удобно если по одному соединению SSH ковыряешся в самом RPi, а по другому в интернете. Можно и через роутер тоже, но для тестирования кода с применением OpenCV удобнее прямое соединение.
    Может и что-то забыл указать.
    Простите!
     
    Последнее редактирование: 14 ноя 2016
    arkadyf и ИгорьК нравится это.
  2. Igor68

    Igor68 Гуру

    Но это не всех интересует....
    Многим потребуется и доступ к дискам (FLASH, HDD и т.п.), которые подключены к Raspberry.

    Вначале ставим самбу (справами ROOT):
    root@raspberrypi:/home/igor#aptitude install samba

    после чего проверяем:
    root@raspberrypi:/home/igor# netstat -nltpa
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1466/mysqld
    tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1602/smbd
    tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 859/dnsmasq
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 976/sshd
    tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 1602/smbd
    tcp 0 248 192.168.0.129:22 192.168.0.66:56744 ESTABLISHED 1735/sshd: igor [pr
    tcp6 0 0 :::139 :::* LISTEN 1602/smbd
    tcp6 0 0 :::53 :::* LISTEN 859/dnsmasq
    tcp6 0 0 :::22 :::* LISTEN 976/sshd
    tcp6 0 0 :::445 :::* LISTEN 1602/smbd

    видим:
    tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 1602/smbd
    tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 1602/smbd

    наш сервер поднят!

    Затем редактируем конфиг /etc/samba/smb.conf:
    Я воспользовался примером из интернета - предоставлю свой (по его образу)
    Код (Bash):
    [global]                                                        
       workgroup = WLAN_HOME
       netbios name = ftp-server                                    
       server string = %h server                                    
       wins support = no                                                                                    
       dns proxy = no                                              
       name resolve order = host wins bcast                        
       log file = /var/log/samba/log.%m                            
       max log size = 1000                                          
       syslog = 0                                                  
       panic action = /usr/share/samba/panic-action %d              
       security = user                                              
       encrypt passwords = true
       passdb backend = tdbsam                                      
       null passwords = true                                        
       obey pam restrictions = yes                                  
       username map /etc/samba/smbusers                            
       unix password sync = yes                                    
       passwd program = /usr/bin/passwd %u                          
       passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
       pam password change = yes                                                                                      
       printing = cups                                                                                                
       printcap name = cups                                                                                                                                                      
       socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192                            

    [homes]                                                                                                          
       comment = Home Directories                                                                                    
    #если надо шарить хомяки пользователей, ставим тут yes
       browseable = no                                                                                                
       read only = no                                                                                                
       create mask = 0700                                                                                            
       directory mask = 0700                                                                                          

    [printers]                                                                                                        
       comment = All Printers                                                                                        
       browseable = no                                                                                                
       path = /var/spool/samba                                                                                        
       printable = yes                                                                                                
       guest ok = no                                                                                                  
       read only = yes                                                                                                
       create mask = 0700                                                                                            

    [print$]                                                                                                          
       comment = Printer Drivers                                                                                      
       path = /var/lib/samba/printers                                                                                
       browseable = yes
       read only = yes
       guest ok = no

    #это объявление шары, доступной всем
    [share_users]
    path = /home/share_users #(тут укажите свой путь)
    browseable = yes
    read only = no
    #тут ставим yes чтобы все могли видеть эту шару
    guest ok = yes
    create mask = 0660
    #в моем случае эта директива играла ключевую роль, т. к. все файлы имеют хозяином пользователя vsftpd и права 660 или 770.
    #force user = vsftpd
    directory mask = 0770

    #шара, доступная только пользователю user
    [httpd]
    path = /home/httpd
    browseable = yes
    read only = no
    guest ok = no
    create mask = 0660
    directory mask = 0770
    #здесть через пробел указываем, какому/каким конкретно юзерам будет доступна шара
    valid users = www-data
    #force user = vsftpd[global]
    #printing = bsd
    #printcap name = /etc/printcap
    #load printers = yes
    #guest account = pcguest
    log file = /usr/local/samba/log.%m

    #шара, доступная только пользователю user
    [ext_projects]
    path = /home/ext_projects
    browseable = yes
    read only = no
    guest ok = no
    create mask = 0777
    directory mask = 0777
    #здесть через пробел указываем, какому/каким конкретно юзерам будет доступна шара
    valid users = igor
    #force user = vsftpd[global]
    #printing = bsd
    #printcap name = /etc/printcap
    #load printers = yes
    #guest account = pcguest
    log file = /usr/local/samba/log.%m


    [tmp]
      comment = Temporary file space
      path = /home/tmp
      read only = yes
      public = yes
    Ну вот вроде всё основное готово! Остаётся сделать рестарт SAMBA:
    root@raspberrypi:/home/igor# /etc/init.d/samba restart

    Теперь вы можете смотреть фильмы, слушать музыку, кидать на Raspberry свои проекты и т.д. из рабочего стола. Иметь доступ с планшета и смартфона.

    Несколько о монтировании диска.....
    из под ROOT:
    root@raspberrypi:/home/igor# fdisk -l
    находим наш диск:
    root@raspberrypi:/home/igor#
    .....
    Disk /dev/sdd: 16 GB, 16078864384 bytes
    64 heads, 32 sectors/track, 15334 cylinders
    Units = cylinders of 2048 * 512 = 1048576 bytes

    Device Boot Start End Blocks Id System
    /dev/sdd1 * 1 15335 15703024 b FAT32
    Warning: Partition 1 does not end on cylinder boundary

    Далее монтируем:
    mount /dev/sdd1 <наш путь - что указали в конфигурации samba>

    Совсем забыл! Пароль для указанного пользователя в smb.conf
    команда из под root:
    smbpasswd -a <user>
    где <user> - указанное имя пользователя.
     
    Последнее редактирование: 2 ноя 2016
    arkadyf нравится это.
  3. Jeid

    Jeid Нерд

    Правильно ли я понял, что вы с ноутбука подключились к сети bot_gray которую раздавала малинка, и при этом у вас был интернет через dark_gray? А малина выступила что-то вроде маршрутизатора?
     
    Igor68 нравится это.
  4. Igor68

    Igor68 Гуру

    да - малина раздавала(раздаёт) IP и предоставляет доступ к файлам (кстати - удобно). Но в моём случае нет шлюза wlan0<-->wlan1 для интернет (вообще-то специально). В интернет можно только с самой малины через её браузер!
    Хотя по wlan0<--->ETHERNRT есть доступ к интернет (наверное уберу - осталось от прошлого)
     
    Последнее редактирование: 31 окт 2016
  5. Igor68

    Igor68 Гуру

    Полезно так же установить VNC сервер и т.д. (например тут):
    http://www.armlinux.ru/настраиваем-vnc/
    VNC клиент для PC - этим пользуются многие... в поисковике точно есть..
    Удобно для тех кто предпочитает GUI....

    Но рабочий стол GUI.... должен быть установлен! Ну или установите... ну допустим xface или другое. Как правило большинство образов Raspbian уже содержат всё это.
     
    Последнее редактирование: 2 ноя 2016
    arkadyf нравится это.
  6. Igor68

    Igor68 Гуру

    Для тех кому всё же надо интернет через малину и не перестраивая маршрутизацию... а через прокси. Вот прокси:
    3proxy-3proxy-0.8.7.tar.gz.zip
    Это маленький прокси, но вполне нормальный... документация там же. Скопируйте архив в малину... распакуйте... компилируйте.
    Я не стал его ставить себе... а только откомпилировал... причём по тупому и чисто для пробы.

    Файл Makefile.Linux переименовал в Makefile... и будучи в командной строке откомпилировал командой Make. Понятно что надо по нормальному (там есть описание)... все готовые бинарники у меня получились в директории src. Я перешёл в неё и запустил ./proxy -p8080 и далее в браузере (не на малине, а на ПК) настроил доступ через прокси. Сейчас напрямую по WI-FI подключён к малине, а малина по другому WI-FI подключена к роутеру. Одним словом этот пост сделан через прокси, который запущен на малине. Кому надо можете настроить... поставить в автозапуск... и/или инсталировать - всё в документации.
     

    Вложения:

    arkadyf нравится это.
  7. alp69

    alp69 Форумчанин

    Улыбнуло... :)
     
  8. Igor68

    Igor68 Гуру

    Прикол! Вот блин - сам не заметил!
     
  9. alp69

    alp69 Форумчанин

    Бывает :)
     
  10. Igor68

    Igor68 Гуру

    Кстати... ещё один костылик... для тех кто поднял Apache + PHP. Удобный файловый менеджер прямо на WEB странице:
    webadmin.php.zip
    Можно загрузить файл не уходя из страницы, редактировать, и т.д. Очень простой... хотя и есть и круче!
     

    Вложения:

    arkadyf нравится это.
  11. Jeid

    Jeid Нерд

    Не работает в пхп 7 версии из-за наличия устаревших функций в коде
    Предлагаю в таком случае использовать другой скрипт, который даёт больше возможностей
    P.S. на него могут ругаться антивирусы.
     

    Вложения:

    • wso4.zip
      Размер файла:
      21,4 КБ
      Просмотров:
      403
    Igor68 нравится это.
  12. Igor68

    Igor68 Гуру

    Г
    Где-то подобный встречал....
    а зачем этот кусок кода:
    PHP:
    function hardLogin() {
            if(!empty($_SERVER['HTTP_USER_AGENT'])) {
              $userAgents = array("Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler");
              if(preg_match('/' . implode('|', $userAgents) . '/i', $_SERVER['HTTP_USER_AGENT'])) {
              header('HTTP/1.0 404 Not Found');
              exit;
              }
            }
        die("<pre align=center><form method=post>Password<br><input type=password name=pass style='background-color:whitesmoke;border:1px solid #FFF;outline:none;' required><input type=submit name='watching' value='submit' style='border:none;background-color:#56AD15;color:#fff;cursor:pointer;'></form></pre>");
    }
    вообще-то тот что я предлагал работает в локальной сети (на Raspberry) и ему по барабану эти:
    "Google", "Slurp", "MSNBot", "ia_archiver", "Yandex", "Rambler"
    Можно так же "вырвать" из хостингер... там удобный менеджер.
    Будет время покопаюсь в этом. Кстати откуда он берёт значение пароля?
     
    Последнее редактирование: 2 дек 2016
  13. Jeid

    Jeid Нерд

    Ну это типа web shell, такие штуки любят злоумышленники на сайт заливать и управлять им потом, для того и защита от ботов такая вот стоит.
    Пароль это 7 строка в коде в виде md5 хеша, там сейчас забит пароль "admin"
     
    Igor68 нравится это.
  14. Igor68

    Igor68 Гуру

    Спорить нет смысла! Выглядит прикольно! Редактор есть! Для себя если время будет переделаю чтобы брал пароль для сравнения брал либо из локальной Mysql либо Sqlite. А вообще я обычно делал отдельный вход, после которого вход в менеджер.
     
  15. ToxaRU

    ToxaRU Гик



    Извените немного запутался...... У меня на Raspberry PI2 стоит MediaServer, он тянет интернет от роутера по LAN, также на малинке поднята AP которая раздает через свою сетку интернет и обеспечивает доступ к медиасерверу (удобно, так как ненужно переключаться между сетями и обеспечивается доступ к медиа серверу без доступа к роутеру, могу отключить LAN и отнести его в машину и там через ту же сетку будет медиаконтент).... Все бы хорошо, но хочется прикрутить еще один свисток, который соединялся бы с роутером вместо LAN кабеля... Как я понял Вы как раз это реализовали... Я немного бамбук в линуксе, и все по статьям настраиваю... не могли бы Вы мне подсказать? Мне прокси нужен или нет ? И как всетаки сделать чтобы инет был в сети за raspberry и на Raspberry(для Media Servera) а в нет это добро через wi-fi подключалось?
     
    Igor68 нравится это.
  16. Igor68

    Igor68 Гуру

    Да верно у меня Wlan0(встроенный в Raspberry Pi 3) а Wlan1(свисток включенный в USB) В моём случае TPLINK TL-WN725N, который покупал ещё для Raspberry Pi 2 (который умер). Соответственно и SD карту с образом переставил в RPi3 от RPi2. Скажу сразу методику придётся искать для каждой модели свистка индивидуально для установленного образа (драйверы). Работа кропотливая если честно сказать.
     
  17. ToxaRU

    ToxaRU Гик


    Спасибо буду пробовать по Вашим записям сегодня настроить... у меня один свисток тоже TL-WN725N , а второй на том же чипе.. драйвера работают .. точка тоже работает на одном из них... второй тоже подключается.. вот только интернет пока в сети на выходе не настроен...
     
  18. Igor68

    Igor68 Гуру

    Самое простое без геммороя это прокси. Если шлюзовать то потребуется настраивать по iptables.
    И ещё... надо контролировать связь. В моём случае роутер далеко от малины и с ним связь прерывается (очень низкий уровень). После этого не восстанавливается. Необходимо сделать скрипт... ну что-то подобное NetworkManager по функционалу.
     
  19. ToxaRU

    ToxaRU Гик

    спасибо для начала хоть как то настроить потом будем усложнять))
     
  20. Igor68

    Igor68 Гуру

    Для начала пропингуйте ну допустим ping www.yandex.ru ну или что-то подобное из самой малины... тем убедитесь в возможности связи с интернет самой малины! Думаю всё будет нормально! Для двух свистков если малина 2... главное, чтобы не перепутались в /etc/networking/interfaces
     
    ToxaRU нравится это.