Sommario:

Router Wi-Fi Nintendo: 17 passaggi (con immagini)
Router Wi-Fi Nintendo: 17 passaggi (con immagini)

Video: Router Wi-Fi Nintendo: 17 passaggi (con immagini)

Video: Router Wi-Fi Nintendo: 17 passaggi (con immagini)
Video: ROUTER WIFI con SIM PORTATILE: Recensione TP-Link M7000/M7200 2024, Dicembre
Anonim
Router Wi-Fi Nintendo
Router Wi-Fi Nintendo

Utilizzando una custodia del sistema Old Nintendo Entertainment, produci un router domestico altamente funzionale utilizzando un RaspberryPI 3!

Passaggio 1: installa il software RaspberryPi richiesto

Disco rigido RaspberriPi lampeggiante / Installazione del software richiesto (utilizzando Ubuntu Linux)

Scarica "RASPBIAN JESSIE LITE"

Crea il tuo nuovo disco rigido per DashboardPI

Inserisci la microSD sul tuo computer tramite l'adattatore USB e crea l'immagine del disco usando il comando dd

Individua la scheda microSD inserita tramite il comando df -h, smontala e crea l'immagine del disco con il comando disk copy dd

$ df -h /dev/sdb1 7.4G 32K 7.4G 1% /media/XXX/1234-5678

$ umount /dev/sdb1

Attenzione: assicurati che il comando sia completamente preciso, puoi danneggiare altri dischi con questo comando

if=posizione del file immagine RASPBIAN JESSIE LITE of=posizione della tua scheda microSD

$ sudo dd bs=4M if=/path/to/raspbian-jessie-lite.img of=/dev/sdb (nota: in questo caso, è /dev/sdb, /dev/sdb1 era una partizione di fabbrica esistente sul microSD) Configurazione di RaspberriPi

Inserisci la tua nuova scheda microSD nel raspberrypi e accendilo con un monitor collegato alla porta HDMI

Login

utente: pi pass: raspberry Cambia la password del tuo account per sicurezza

sudo passwd pi Abilita le opzioni avanzate di RaspberriPi

sudo raspi-config Scegli: 1 Espandi file system

9 Opzioni avanzate

A2 Hostname cambialo in "NESRouter"

A4 SSH Abilita server SSH

A7 I2C Abilita interfaccia i2c Abilita la tastiera inglese/americana

sudo nano /etc/default/keyboard Modifica la seguente riga: XKBLAYOUT="us" Imposta la directory semplice comando l [opzionale]

vi ~/.bashrc

aggiungi la seguente riga:

alias l='ls -lh'

source ~/.bashrc Correzione dell'evidenziazione della sintassi predefinita di VIM [opzionale]

sudo vi /etc/vim/vimrc

decommenta la seguente riga:

sintassi su Riavvia il tuo PI per ottenere le ultime modifiche

rebootAggiorna le impostazioni del fuso orario locale

sudo dpkg-reconfigure tzdata seleziona il tuo fuso orario usando l'interfaccia

Passaggio 2: Creazione del punto di accesso WiFi

Si prega di notare, prima che questo diventi un router, stiamo collegando il RaspberryPi a una rete esistente tramite la sua porta ethernet per installare i seguenti pacchetti

sudo apt-get update && sudo apt-get -y upgrade

sudo apt-get install dnsmasq hostapd vim

sudo apt-get install vim git python-smbus i2c-tools python-imaging python-smbus build-essential python-dev rpi.gpio python3 python3-pip libi2c-dev

sudo vi /etc/dhcpcd.conf

Aggiungi la seguente riga:

negareinterfaces wlan0 sudo vi /etc/network/interfaces

Modifica la sezione wlan0 in modo che assomigli a questa:

auto lo iface lo inet loopback

iface eth0 inet manuale

auto wlan0 iface wlan0 inet indirizzo statico 10.0.10.1 netmask 255.255.255.0 rete 10.0.10.0 broadcast 10.0.10.255

auto eth1 iface eth1 inet indirizzo statico 10.0.20.1 netmask 255.255.255.0 rete 10.0.20.0 broadcast 10.0.20.255 Ricarica il server DHCP e rimbalza la configurazione per le connessioni eth0 e wlan0

sudo service dhcpcd riavvio

sudo ifdown eth0; sudo ifup wlan0

Configura HOSTAPD (cambia ssid e wpa_passphrase con i valori di tua scelta)

sudo vi /etc/hostapd/hostapd.conf

# Questo è il nome dell'interfaccia WiFi che abbiamo configurato sopra interface=wlan0

# Usa il driver nl80211 con il driver brcmfmac driver=nl80211

# Questo è il nome della rete ssid=NintendoWiFi

# Usa la banda a 2,4 GHz hw_mode=g

# Usa canale 6 canale=6

# Abilita 802.11n ieee80211n=1

# Abilita WMM wmm_enabled=1

# Abilita i canali a 40MHz con intervallo di guardia di 20ns ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

# Accetta tutti gli indirizzi MAC macaddr_acl=0

# Usa autenticazione WPA auth_algs=1

# Richiede ai client di conoscere il nome della rete ignore_broadcast_ssid=0

# Usa WPA2 wpa=2

# Usa una chiave pre-condivisa wpa_key_mgmt=WPA-PSK

# La passphrase di rete wpa_passphrase=password

# Usa AES, invece di TKIP rsn_pairwise=CCMP Possiamo verificare se funziona in questa fase eseguendo (ma non ha ancora la connettività Internet completa):

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

sudo vi /etc/default/hostapd

Trova la linea

#DAEMON_CONF="" e sostituiscilo con

DAEMON_CONF="/etc/hostapd/hostapd.conf" Configura DNSMASQ

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

sudo vi /etc/dnsmasq.conf

bind-interfaces # Associa all'interfaccia per assicurarci che non stiamo inviando cose altrove server=8.8.8.8 # Inoltra richieste DNS a Google DNS domain-necessario # Non inoltrare nomi brevi bogus-priv # Non inoltrare mai indirizzi nel non -spazi di indirizzi instradati.

# Assegna indirizzi IP con tempo di locazione infinito (per le statistiche sull'utilizzo del dispositivo) dhcp-range=wlan0, 10.0.10.100, 10.0.10.200, 255.255.255.0, 10.0.10.255, infinito dhcp-range=eth1, 10.0.20.100, 10.0. 20.200, 255.255.255.0, 10.0.20.255, infinito SET UP IPV4 FORWARDING

sudo vi /etc/sysctl.conf

[rimuovi il commento] net.ipv4.ip_forward=1

Attivalo immediatamente con sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED, ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED, ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Salva le impostazioni di iptables per il prossimo riavvio

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Crea file regole ipv4 (con nuovi contenuti)

sudo vi /lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat

iptables-restore < /etc/iptables.ipv4.nat Riavvia i servizi

sudo service hostapd start sudo service dnsmasq start

sudo reboot

Assegnazione di IP statici [Facoltativo]

Se desideri che gli host sulla tua rete abbiano IP statici, utilizza quanto segue

Acquisire gli host attualmente connessi tramite DHCP vi /var/lib/misc/dnsmasq.leases

Aggiungi l'indirizzo MAC (dall'output sopra) e l'indirizzo IP che desideri assegnare a sudo vi /etc/dnsmasq.conf

# desktop principale dhcp-host=12:34:56:78:9a:bc, 10.0.20.20 Nota: questo assegnerà l'interfaccia di rete con l'indirizzo MAC: 12:34:56:78:9a:bc all'indirizzo IP 10.0.20.20. L'indirizzo IP elencato NON deve essere nell'intervallo DHCP fornito, solo sulla stessa sottorete. Il mio desktop principale sopra è sulla sottorete eth1:10.0.20.0, quindi gli ho dato l'indirizzo IP 10.0.20.20.

Aggiunta di firewall UFW

sudo apt-get install ufw

Consenti la porta 22 per l'uso pubblico (per l'accesso alla rete remota)

sudo ufw consenti 22

Consenti tutte le porte sulla mia rete locale

sudo ufw consentire da 10.0.10.0/24 sudo ufw consentire da 10.0.20.0/24

Consenti le porte web a tutti

sudo ufw consenti 80

Consenti porte web sicure a tutti

sudo ufw consenti 443

Abilita UFW e controlla lo stato

sudo ufw --force enable

sudo ufw status

Risolto BUG con UFW che non si avviava all'avvio

sudo su crontab -e

Aggiungi la seguente riga: @reboot /bin/sleep 60; ufw --force enable

Passaggio 3: forniture necessarie: vecchio Nintendo rotto

Materiali di consumo necessari: vecchio Nintendo rotto
Materiali di consumo necessari: vecchio Nintendo rotto

Vecchia custodia Nintendo da un NES rotto (rimuovi tutti i vecchi contenuti all'interno della custodia, lasciando solo la cornice esterna, i pulsanti di accensione / ripristino e le connessioni del controller)

Passaggio 4: materiali di consumo necessari: Raspberry Pi 3 Modello B

Materiali di consumo necessari: Raspberry Pi 3 Modello B
Materiali di consumo necessari: Raspberry Pi 3 Modello B

Passaggio 5: materiali di consumo necessari: modulo display LCD 128x128 seriale da 1,44 pollici: UART/I2C/SPI TFT LCD

Materiali di consumo necessari: 1,44
Materiali di consumo necessari: 1,44
Forniture necessarie: 1,44
Forniture necessarie: 1,44

Passaggio 6: materiali di consumo necessari: mini ventola da 5 V 0,1 A Raspberry Pi

Materiali di consumo necessari: Mini ventola 5V 0.1A Raspberry Pi
Materiali di consumo necessari: Mini ventola 5V 0.1A Raspberry Pi

Passaggio 7: materiali di consumo necessari: adattatore di rete cablata LAN Ugreen USB 2.0 a 10/100 Fast Ethernet

Materiali di consumo necessari: Adattatore di rete cablata LAN Ugreen USB 2.0 a 10/100 Fast Ethernet
Materiali di consumo necessari: Adattatore di rete cablata LAN Ugreen USB 2.0 a 10/100 Fast Ethernet

Passaggio 8: costruzione

Costruzione
Costruzione

Installa all'interno del NES

Utilizzando una stampante 3D, stampare la cornice del display Digole "NESPanel" nella cartella /construction/display-frame/. [se non si dispone di una stampante 3D è possibile praticare delicatamente un foro quadrato per il display Digole con uno strumento Dremel] Tagliare i seguenti fori aperti nella parte posteriore e laterale della custodia per consentire il fissaggio della piccola ventola sul lato e i cavi di alimentazione/ethernet e USB ethernet per entrare attraverso la parte posteriore.

Fase 9: Costruzione Cont

Costruzione Cont
Costruzione Cont

Svita il pannello nero in alto a destra dal NES e taglia in modo netto un foro quadrato abbastanza grande per montare il tuo display digole. Incolla a caldo il display in posizione con il telaio stampato in 3D "NESPanel" sopra di esso.

Fase 10: Costruzione Cont

Costruzione Cont
Costruzione Cont

Monta il RaspberryPi al centro della parte inferiore del case vuoto del NES, fissalo con la colla o una piccola vite attraverso il fondo. Usando un resistore da 270 ohm, collega il "LED di accensione" del NES ai pin 5V e GND nel Raspberry Pi (il cavo LED corto è la massa). Collega anche la piccola ventola ai pin 5V e GND per farla funzionare all'avvio dell'unità, incolla la ventola contro il foro sul lato.

Passaggio 11: collegamento del display Digole

Collega i seguenti pin ai pin del RaspberryPi

VCC è collegato a 3v GND è a terra DATA è SDA CLOCK è SCL Ora dovresti vedere il dispositivo nel tuo comando i2cdetect

i2cdetect -y 1 dovrebbe apparire nella griglia di testo come 27

Passaggio 12: installazione degli strumenti di monitoraggio della rete e registrazione del database

sudo apt-get install ifstat memcached python-memcache postgresql postgresql-contrib python-psycopg2

sudo vi /etc/postgresql/9.4/main/pg_hba.conf

Aggiungi la seguente riga alla fine del file: local all pi password sudo -i -u postgres

psql

crea ruolo pi password 'password qui';

modificare il ruolo pi login;

alterare il ruolo pi superutente;

du

(dovresti vedere il tuo utente PI con i permessi concessi) create database network_stats;

Q

Uscita

psql -d network_stats

Eseguire le seguenti query:

CREATE TABLE traffic_per_minute (id seriale, timestamp senza fuso orario NOT NULL, eth0_down real, eth0_up real, eth1_down real, eth1_up real, wan0_down real, wan0_up real);

CREA INDICE UNICO time_idx ON traffic_per_minute (time); Copia la cartella "logging" del codice da questo progetto nella home directory del tuo RPi

crontab -e

Aggiungi questa riga

@reboot /bin/sleep 60; nohup python /home/pi/logging/networkUsage.py >/dev/null 2>&1

Passaggio 13: installa il report di riepilogo del traffico (viene eseguito ogni 5 minuti da Cronjob)

crontab -e

aggiungi la seguente riga

*/5 * * * * python /home/pi/logging/trafficSummary.py

Passaggio 14: Installa lo schermo del dashboard

Copia la cartella "display" del codice da questo progetto nella home directory del tuo RPi

Eseguilo come segue

$ python /home/pi/display/NESRouter.py Imposta lo script di visualizzazione da eseguire all'avvio

crontab -e

Aggiungi questa riga

@reboot nohup python /home/pi/display/NESRouter.py >/dev/null 2>&1

Verificare che il display inizi a funzionare al riavvio

sudo reboot

Passaggio 15: installare il sito Web di utilizzo/statistiche locale [https://10.0.10.1]

Installa il sito Web di utilizzo/statistiche locale [https://10.0.10.1]

sudo apt-get update && sudo apt-get upgrade -y

sudo apt-get install apache2

sudo service apache2 riavvio

Rimuovi le pagine predefinite

cd /var/www

sudo rm -rf html

Copia la cartella 'webportal' da questo progetto nella tua cartella home sul tuo RPi e crea il collegamento simbolico per Apache da usare

cd /var/www

sudo ln -s /home/pi/webportal html

cd /var/www/html

chmod +x *.py

sudo a2enmod cgi

sudo vi /etc/apache2/sites-enabled/000-default.conf

Abilita script Python CGI

Aggiungi all'interno del tag

Opzioni +ExecCGI AddHandler cgi-script.py sudo service apache2 restart

Ora puoi visitare il sito HTTP locale [https://10.0.10.1]

Configurazione del monitoraggio di rete avanzato (tramite IPFM)

sudo apt-get update

sudo apt-get install ipfm

sudo mv /etc/ipfm.conf /etc/ipfm.conf-bak

sudo vi /etc/ipfm.conf

Crea con i seguenti contenuti:

# Variabili globali

# IPFM può monitorare un solo dispositivo. DISPOSITIVO eth0

# REGISTRO GLOBALE CONFIGURAZIONE LOG

FILENAME "/var/log/ipfm/%Y_%d_%m/%H_%M"

# log ogni minuto SCARICA OGNI 1 minuto

# cancella statistiche ogni giorno CANCELLA OGNI 24 ore ORDINA IN RISOLUZIONE sudo service ipfm start

FACOLTATIVO: creare le tue immagini Nintendo da visualizzare sul display

Carica il tuo file 128x128 al seguente URL:

www.digole.com/tools/PicturetoC_Hex_convert…

Scegli il tuo file immagine da caricare, aggiungi la dimensione che vuoi che sia sullo schermo (larghezza/altezza)

Seleziona "256 colori per OLED/LCD a colori (1 byte/pixel)" nel menu a discesa "Utilizzato per"

Ottieni l'output esadecimale.

Aggiungi l'output esadecimale a un file display/build/header (.h), usa gli altri come guide per la sintassi.

Includere il nuovo file nel file digole.c #include myimage.h

Includere un nuovo hook della riga di comando al file immagine nel file. Nota: il comando seguente dice di disegnare la tua immagine in posizione 10 pixel su 10 pixel in basso. Puoi cambiarlo in diverse coordinate X, Y, puoi anche cambiare i valori 128, 128 a qualsiasi dimensione sia effettivamente la tua nuova immagine.

} else if (strcmp(digoleCommand, "myimage") == 0) { drawBitmap256(10, 10, 128, 128, &myimageVariableHere, 0); // myimageVariableHere è definito nel tuo file (.h) }

Ora ricostruisci (ignora gli errori) di seguito per visualizzare la tua nuova immagine con il seguente comando.

$./digole myimage Re-Building [Incluso] Digole Display Driver per le tue modifiche facoltative

$ cd visualizza/costruisci $ gcc digole.c $ mv a.out../../digole $ chmod +x../../digole

Consigliato: