Съдържание:

Nintendo Wifi рутер: 17 стъпки (със снимки)
Nintendo Wifi рутер: 17 стъпки (със снимки)

Видео: Nintendo Wifi рутер: 17 стъпки (със снимки)

Видео: Nintendo Wifi рутер: 17 стъпки (със снимки)
Видео: 3G WiFi роутер ZTE R203 - один из самых информативных и лучших видео обзоров от HappyNet 2024, Ноември
Anonim
Nintendo Wifi рутер
Nintendo Wifi рутер

Използвайки калъф от стара система Nintendo Entertainment, създайте високо функционален домашен рутер, използвайки RaspberryPI 3!

Стъпка 1: Инсталирайте необходимия софтуер RaspberryPi

Мигащ твърд диск RaspberriPi / Инсталиране на необходимия софтуер (Използване на Ubuntu Linux)

Изтеглете „RASPBIAN JESSIE LITE“https://www.raspberrypi.org/downloads/raspbian/

Създайте своя нов твърд диск за DashboardPI

Поставете microSD в компютъра си чрез USB адаптер и създайте образа на диска, като използвате командата dd

Намерете поставената си microSD карта чрез командата df -h, демонтирайте я и създайте образа на диска с командата dd copy copy

$ df -h/dev/sdb1 7.4G 32K 7.4G 1%/медия/XXX/1234-5678

$ umount /dev /sdb1

Внимание: уверете се, че командата е напълно точна, можете да повредите други дискове с тази команда

if = местоположението на файла с изображение на RASPBIAN JESSIE LITE на = местоположението на вашата microSD карта

$ sudo dd bs = 4M if =/path/to/raspbian-jessie-lite.img на =/dev/sdb (забележка: в този случай това е/dev/sdb,/dev/sdb1 е съществуващ фабричен дял на microSD) Настройване на вашия RaspberriPi

Поставете новата си microSD карта в raspberrypi и я включете с монитор, свързан към HDMI порта

Влизам

user: pi pass: raspberry Променете паролата на акаунта си за сигурност

sudo passwd pi Активирайте разширените опции на RaspberriPi

sudo raspi-config Изберете: 1 Разгънете файлова система

9 Разширени опции

A2 Hostname го променете на "NESRouter"

A4 SSH Активиране на SSH сървър

A7 I2C Активиране на i2c интерфейс Активиране на английската/американската клавиатура

sudo nano/etc/default/keyboard Променете следния ред: XKBLAYOUT = "us" Настройка на простата директория l команда [по избор]

vi ~/.bashrc

добавете следния ред:

псевдоним l = 'ls -lh'

източник ~/.bashrc Поправете подчертаването на синтаксиса по подразбиране на VIM [по избор]

sudo vi/etc/vim/vimrc

разкомментирайте следния ред:

синтаксис на Рестартирайте вашия PI, за да получите най -новите промени

рестартирайте Актуализирайте настройките за местна часова зона

sudo dpkg-reconfigure tzdata изберете вашата часова зона с помощта на интерфейса

Стъпка 2: Създаване на WiFi точка за достъп

Моля, обърнете внимание, преди това да стане рутер, ние включваме RaspberryPi към съществуваща мрежа чрез неговия Ethernet порт, за да инсталираме следните пакети

sudo apt-get update && sudo apt-get -y ъпгрейд

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

Добавете следния ред:

denyinterfaces wlan0 sudo vi/etc/network/interfaces

Редактирайте секцията wlan0, така че да изглежда така:

auto lo iface lo inet loopback

iface eth0 inet ръководство

auto wlan0 iface wlan0 inet статичен адрес 10.0.10.1 маска на мрежата 255.255.255.0 мрежа 10.0.10.0 излъчване 10.0.10.255

auto eth1 iface eth1 inet статичен адрес 10.0.20.1 маска на мрежата 255.255.255.0 мрежа 10.0.20.0 излъчване 10.0.20.255 Презаредете DHCP сървъра и отхвърлете конфигурацията за връзки eth0 и wlan0

рестартиране на услугата sudo dhcpcd

sudo ifdown eth0; sudo ifup wlan0

Конфигурирайте HOSTAPD (Променете ssid и wpa_passphrase на стойностите по ваш избор)

sudo vi /etc/hostapd/hostapd.conf

# Това е името на WiFi интерфейса, който конфигурирахме по -горе interface = wlan0

# Използвайте драйвера nl80211 с драйвера на brcmfmac драйвер = nl80211

# Това е името на мрежата ssid = NintendoWiFi

# Използвайте 2.4GHz обхват hw_mode = g

# Използвайте канал 6 канал = 6

# Активиране на 802.11n ieee80211n = 1

# Активиране на WMM wmm_enabled = 1

# Активиране на 40MHz канали с 20ns защитен интервал ht_capab = [HT40] [SHORT-GI-20] [DSSS_CCK-40]

# Приемете всички MAC адреси macaddr_acl = 0

# Използвайте удостоверяване на WPA auth_algs = 1

# Изисквайте клиентите да знаят името на мрежата ignore_broadcast_ssid = 0

# Използвайте WPA2 wpa = 2

# Използвайте предварително споделен ключ wpa_key_mgmt = WPA-PSK

# Мрежовата парола wpa_passphrase = парола

# Използвайте AES, вместо TKIP rsn_pairwise = CCMP Можем да проверим дали работи на този етап, като стартираме (но все още няма пълна интернет връзка):

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

sudo vi/etc/default/hostapd

Намерете линията

#DAEMON_CONF = "" и го заменете с

DAEMON_CONF = "/etc/hostapd/hostapd.conf" Конфигуриране на DNSMASQ

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

sudo vi /etc/dnsmasq.conf

bind-interfaces # Свържете се с интерфейса, за да сте сигурни, че не изпращаме неща на друго място server = 8.8.8.8 # Препращайте DNS заявки към Google DNS домейн, необходим # Не препращайте кратки имена фалшиви-priv # Никога не препращайте адреси в не -пренасочени адресни пространства.

# Присвояване на IP адреси с безкрайно време на лизинг (за статистика на използване на устройството) dhcp-range = wlan0, 10.0.10.100, 10.0.10.200, 255.255.255.0, 10.0.10.255, безкраен dhcp-диапазон = eth1, 10.0.20.100, 10.0. 20.200, 255.255.255.0, 10.0.20.255, безкрайно НАСТРОЙВАНЕ IPV4 ФОРВИДИНГ

sudo vi /etc/sysctl.conf

[разкоментирайте] net.ipv4.ip_forward = 1

Активирайте го незабавно с sudo sh -c "echo 1>/proc/sys/net/ipv4/ip_forward"

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

sudo iptables -A НАПРЕД -i eth0 -o eth1 -m състояние -състояние СВЪРЗАНО, УСТАНОВЕНО -j ПРИЕМАМ

sudo iptables -A НАПРЕД НА -i eth1 -o eth0 -j ПРИЕМАМ

sudo iptables -A НАПРЕД -i eth0 -o wlan0 -m състояние -състояние СВЪРЗАНО, УСТАНОВЕНО -j ПРИЕМАМ

sudo iptables -A НАПРЕД -i wi0 -o eth0 -j ПРИЕМАМ

Запазете настройките на iptables за следващо рестартиране

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

Създайте файл с правила за ipv4 (с ново съдържание)

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

iptables-restore </etc/iptables.ipv4.nat Услуги за рестартиране

sudo услуга hostapd старт sudo услуга dnsmasq старт

sudo рестартиране

Присвояване на статични IP адреси [По избор]

Ако искате хостовете във вашата мрежа да имат статични ips, използвайте следното

Придобийте хостовете, свързани в момента чрез DHCP vi /var/lib/misc/dnsmasq.leases

Добавете MAC адреса (от изхода по -горе) и IP адреса, който искате да им присвоите на sudo vi /etc/dnsmasq.conf

# основен работен плот dhcp-host = 12: 34: 56: 78: 9a: bc, 10.0.20.20 Забележка: Това ще присвои мрежовия интерфейс с MAC адреса: 12: 34: 56: 78: 9a: bc към IP адрес 10.0.20.20. Изброеният IP адрес НЕ трябва да е в дадения DHCP диапазон, само в същата подмрежа. Моят основен работен плот по -горе е в подмрежа eth1: 10.0.20.0, затова му дадох IP адрес 10.0.20.20.

Добавяне на UFW защитна стена

sudo apt-get install ufw

Разрешаване на порт 22 за обществено ползване (за отдалечен достъп до мрежата)

sudo ufw позволяват 22

Разрешаване на всички портове в локалната ми мрежа

sudo ufw позволяват от 10.0.10.0/24 sudo ufw позволяват от 10.0.20.0/24

Разрешаване на уеб портове за всички

sudo ufw позволяват 80

Позволете на всички защитени уеб портове

sudo ufw позволяват 443

Активирайте UFW и проверете състоянието

sudo ufw -force enable

sudo ufw статус

Поправете BUG с UFW, който не стартира при стартиране

sudo su crontab -e

Добавете следния ред: @reboot /bin /sleep 60; ufw -принудително активиране

Стъпка 3: Необходими консумативи: Old Broken Nintendo

Необходими консумативи: Old Broken Nintendo
Необходими консумативи: Old Broken Nintendo

Стар калъф Nintendo от счупен NES (премахнете цялото старо съдържание в кутията, оставяйки само външната рамка, бутоните за захранване / нулиране и връзките на контролера)

Стъпка 4: Необходими консумативи: Raspberry Pi 3 Модел B

Необходими консумативи: Raspberry Pi 3 Модел B
Необходими консумативи: Raspberry Pi 3 Модел B

Стъпка 5: Необходими консумативи: 1.44 "Сериен: UART/I2C/SPI TFT LCD 128x128 Модул на дисплея

Необходими консумативи: 1.44
Необходими консумативи: 1.44
Необходими консумативи: 1.44
Необходими консумативи: 1.44

Стъпка 6: Необходими консумативи: 5V 0.1A Мини вентилатор Raspberry Pi

Необходими консумативи: 5V 0.1A Мини вентилатор Raspberry Pi
Необходими консумативи: 5V 0.1A Мини вентилатор Raspberry Pi

Стъпка 7: Необходими консумативи: Ugreen USB 2.0 до 10/100 Fast Ethernet Lan Кабелен мрежов адаптер Lan

Необходими консумативи: Ugreen USB 2.0 до 10/100 Fast Ethernet Lan Кабелен мрежов адаптер Lan
Необходими консумативи: Ugreen USB 2.0 до 10/100 Fast Ethernet Lan Кабелен мрежов адаптер Lan

Стъпка 8: Строителство

Строителство
Строителство

Инсталирайте вътре в NES

С помощта на 3D принтер отпечатайте рамката на Digole Display "NESPanel" в/construction/display-frame/папката. [ако нямате 3D принтер, можете деликатно да изрежете квадратна дупка за дисплея Digole с инструмент Dremel] Изрежете следните отвори, отворени в задната и страничната част на кутията, за да можете да закрепите малкия вентилатор върху отстрани и кабелите за захранване/ethernet и USB ethernet, за да влезете през гърба.

Стъпка 9: Строителство Продължи

Строителство Продължи
Строителство Продължи

Развийте горния десен черен панел от NES и чисто изрежете достатъчно голям квадратен отвор, за да монтирате дисплея на дигола. Горещо залепете дисплея на място с "NESPanel" 3D отпечатана рамка върху върха му.

Стъпка 10: Строителство Продължи

Строителство Продължи
Строителство Продължи

Монтирайте RaspberryPi в средата на дъното на празната кутия NES, закрепете с лепило или малък винт през дъното. Използвайки резистор от 270 ома, свържете "включения светодиод" на NES към 5V и GND щифтовете в Raspberry Pi (къс светодиоден проводник е земята). Свържете малкия вентилатор към щифтовете 5V и GND, за да работи, когато устройството се стартира, залепете вентилатора към отвора отстрани за него.

Стъпка 11: Свързване на дисплея Digole

Свържете следните щифтове към щифтовете на RaspberryPi

VCC е свързан към 3v GND е заземен DATA е SDA CLOCK е SCL Сега трябва да видите устройството във вашата i2cdetect команда

i2cdetect -y 1 трябва да се показва в мрежата с текст като 27

Стъпка 12: Инсталирайте инструменти за мониторинг на мрежата и регистриране на БД

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

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

Добавете следния ред в края на файла: local all pi password sudo -i -u postgres

psql

създайте парола за роля pi „парола тук“;

промяна на ролята на вход pi;

промяна на ролята на суперпотребител;

du

(трябва да видите вашия PI потребител с предоставените разрешения) създаване на база данни network_stats;

q

изход

psql -d network_stats

Изпълнете следните заявки:

СЪЗДАЙТЕ ТАБЛИЦА traffic_per_minute (id сериал, времева отметка без часова зона NOT NULL, eth0_down реален, eth0_up реален, eth1_down реален, eth1_up реален, wan0_down реален, wan0_up реален);

CREATE UNIQUE INDEX time_idx ON traffic_per_minute (време); Копирайте папката "logging" с код от този проект в домашната директория на вашия RPi

crontab -e

Добавете този ред

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

Стъпка 13: Инсталирайте обобщен отчет за трафика (изпълнява се на всеки 5 минути от Cronjob)

crontab -e

добавете следния ред

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

Стъпка 14: Инсталирайте екрана на таблото

Копирайте папката „display“с код от този проект в домашната директория на вашия RPi

Изпълнете го по следния начин

$ python /home/pi/display/NESRouter.py Настройка на скрипта за показване при стартиране

crontab -e

Добавете този ред

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

Проверете дали дисплеят започва да работи при рестартиране

sudo рестартиране

Стъпка 15: Инсталирайте уебсайта за локална употреба/статистика [https://10.0.10.1]

Инсталирайте уебсайта за локална употреба/статистика [https://10.0.10.1]

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

sudo apt-get инсталирайте apache2

рестартиране на услугата sudo apache2

Премахване на страници по подразбиране

cd /var /www

sudo rm -rf html

Копирайте папката „webportal“от този проект в домашната папка на вашия RPi и създайте символната връзка, която apache да използва

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

Активирайте Python CGI Scripting

Добавете вътре в маркера

Опции +ExecCGI AddHandler cgi-script.py sudo услуга apache2 рестартиране

Вече можете да посетите местния HTTP сайт [https://10.0.10.1]

Настройте разширено наблюдение на мрежата (чрез IPFM)

sudo apt-get update

sudo apt-get инсталирайте ipfm

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

sudo vi /etc/ipfm.conf

Създайте със следното съдържание:

# Глобални променливи

# IPFM може да наблюдава само едно устройство. УСТРОЙСТВО eth0

# ГЛОБАЛНО ЛОГИРАНЕ НА КОНФИГУРАЦИЯ

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

# дневник всяка минута ДУМП ВСЕКА 1 минута

# ясна статистика всеки ден ПРИЧИСТВАЙТЕ ВСЕКИ 24 -часово СОРТИРАНЕ В РЕШЕНИЕ sudo услуга ipfm старт

ОПЦИЯ: Създаване на ваши собствени Nintendo изображения за изобразяване на дисплея

Качете свой собствен 128x128 файл на следния URL адрес:

www.digole.com/tools/PicturetoC_Hex_convert…

Изберете вашия файл с изображение за качване, добавете какъв размер искате да бъде на екрана (Ширина/Височина)

Изберете „256 цвята за цветен OLED/LCD (1 байт/пиксел)“в падащото меню „Използва се за“

Вземете шестнадесетичния изход.

Добавете шестнадесетичния изход към файл display/ build/ header (.h), използвайте другите като ръководства за синтаксис.

Включете новия файл във файла digole.c #include myimage.h

Включете нова кука за командния ред към вашия файл с изображение в. Забележка: командата по -долу казва да нарисувате изображението си на позиция 10 пиксела над 10 пиксела надолу. Можете да го промените на различни координати X, Y, можете също да промените стойностите 128, 128 на какъвто и да е размерът на новото ви изображение всъщност.

} иначе ако (strcmp (digoleCommand, "myimage") == 0) {drawBitmap256 (10, 10, 128, 128, & myimageVariableHere, 0); // myimageVariableHere е дефиниран във вашия (.h) файл}

Сега възстановете (игнорирайте грешките) по -долу, за да изобразявате новото си изображение със следната команда.

$./digole myimage Повторно изграждане [Включено] Digole Display Driver за вашите незадължителни промени

$ cd дисплей/изграждане $ gcc digole.c $ mv a.out../../digole $ chmod +x../../digole

Препоръчано: