Оглавление:

Маршрутизатор Nintendo Wifi: 17 шагов (с изображениями)
Маршрутизатор Nintendo Wifi: 17 шагов (с изображениями)

Видео: Маршрутизатор Nintendo Wifi: 17 шагов (с изображениями)

Видео: Маршрутизатор Nintendo Wifi: 17 шагов (с изображениями)
Видео: Когда тренер - твой друг😏 2024, Ноябрь
Anonim
Wi-Fi роутер Nintendo
Wi-Fi роутер Nintendo

Используя корпус системы Old Nintendo Entertainment, создайте высокофункциональный домашний маршрутизатор с помощью RaspberryPI 3!

Шаг 1. Установите необходимое программное обеспечение RaspberryPi

Прошивка жесткого диска RaspberriPi / установка необходимого программного обеспечения (с использованием Ubuntu Linux)

Скачать "РАСПБИАН ДЖЕССИ ЛАЙТ"

Создайте новый жесткий диск для DashboardPI

Вставьте microSD в свой компьютер через USB-адаптер и создайте образ диска с помощью команды dd

Найдите вставленную карту microSD с помощью команды df -h, отключите ее и создайте образ диска с помощью команды disk copy dd.

$ df -h / dev / sdb1 7,4 ГБ 32 КБ 7,4 ГБ 1% / media / XXX / 1234-5678

$ umount / dev / sdb1

Внимание: убедитесь, что команда полностью точна, вы можете повредить другие диски с помощью этой команды

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

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

Вставьте новую карту microSD в raspberrypi и включите его с помощью монитора, подключенного к порту HDMI.

Авторизоваться

пользователь: pi pass: raspberry Измените пароль своей учетной записи в целях безопасности

sudo passwd pi Включить дополнительные параметры RaspberriPi

sudo raspi-config Выберите: 1 Развернуть файловую систему

9 Дополнительные параметры

Имя хоста A2 измените его на "NESRouter"

A4 SSH Включить SSH-сервер

A7 I2C Включить интерфейс i2c Включить английскую / американскую клавиатуру

sudo nano / etc / default / keyboard Измените следующую строку: XKBLAYOUT = "us" Установите простую команду каталога l [необязательно]

vi ~ /.bashrc

добавьте следующую строку:

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

source ~ /.bashrc Исправить подсветку синтаксиса VIM по умолчанию [необязательно]

Судо vi / и т. д. / vim / vimrc

раскомментируйте следующую строку:

синтаксис при перезагрузке PI, чтобы получить последние изменения

reboot - обновить настройки местного часового пояса

sudo dpkg-reconfigure tzdata выберите свой часовой пояс с помощью интерфейса

Шаг 2: Создание точки доступа WiFi

Обратите внимание, прежде чем он станет маршрутизатором, мы подключаем RaspberryPi к существующей сети через его порт Ethernet, чтобы установить следующие пакеты.

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

Добавьте следующую строку:

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 static address 10.0.20.1 netmask 255.255.255.0 network 10.0.20.0 broadcast 10.0.20.255 Перезагрузите DHCP-сервер и откажитесь от конфигурации для подключений eth0 и wlan0

sudo service dhcpcd перезапуск

sudo ifdown eth0; sudo ifup wlan0

Настройте HOSTAPD (измените ssid и wpa_passphrase на значения по вашему выбору)

sudo vi /etc/hostapd/hostapd.conf

# Это имя интерфейса WiFi, который мы настроили выше interface = wlan0

# Используйте драйвер nl80211 с драйвером brcmfmac driver = nl80211

# Это имя сети ssid = NintendoWiFi

# Использовать диапазон 2,4 ГГц hw_mode = g

# Использовать канал 6 channel = 6

# Включить 802.11n ieee80211n = 1

# Включить WMM wmm_enabled = 1

# Включить каналы 40 МГц с защитным интервалом 20 нс 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

Судо vi / и т. д. / по умолчанию / 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, необходимый # Не пересылать короткие имена bogus-priv # Никогда не пересылать адреса в non -маршрутизируемые адресные пространства.

# Назначение IP-адресов с бесконечным сроком аренды (для статистики использования устройства) dhcp-range = wlan0, 10.0.10.100, 10.0.10.200, 255.255.255.0, 10.0.10.255, infinite dhcp-range = 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 FORWARD -i eth0 -o eth1 -m state --state RELATED, ESTABLISHED -j ACCEPT

sudo iptables -A ВПЕРЕД -i eth1 -o eth0 -j ПРИНЯТЬ

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

sudo iptables -A ВПЕРЕД -i wlan0 -o eth0 -j ПРИНЯТЬ

Сохраните настройки iptables для следующей перезагрузки

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

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

Судо vi / lib / dhcpcd / dhcpcd-крючки / 70-ipv4-нат

iptables-restore </etc/iptables.ipv4.nat Перезапустить службы

sudo service hostapd start sudo service dnsmasq start

перезагрузка sudo

Назначение статических IP-адресов [необязательно]

Если вы хотите, чтобы хосты в вашей сети имели статические IP-адреса, используйте следующие

Получите узлы, подключенные в настоящее время через DHCP vi /var/lib/misc/dnsmasq.leases

Добавьте MAC-адрес (из вывода выше) и IP-адрес, который вы хотите назначить для sudo vi /etc/dnsmasq.conf

# main desktop 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 allow 22

Разрешить все порты в моей локальной сети

sudo ufw allow с 10.0.10.0/24 sudo ufw allow с 10.0.20.0/24

Разрешить веб-порты всем

sudo ufw разрешить 80

Разрешить безопасные веб-порты всем

sudo ufw разрешить 443

Включите UFW и проверьте статус

sudo ufw --force enable

sudo ufw статус

Исправить ОШИБКУ, при которой UFW не запускается при запуске

sudo su crontab -e

Добавьте следующую строку: @reboot / bin / sleep 60; ufw --force enable

Шаг 3: Необходимые припасы: старая сломанная Nintendo

Необходимые припасы: старая сломанная Nintendo
Необходимые припасы: старая сломанная Nintendo

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

Шаг 4: Необходимые расходные материалы: Raspberry Pi 3 Model B

Необходимые расходные материалы: Raspberry Pi 3 Model B
Необходимые расходные материалы: Raspberry Pi 3 Model B

Шаг 5: Необходимые расходные материалы: 1,44 "Последовательный порт: UART / I2C / SPI TFT LCD 128x128 Дисплейный модуль

Необходимые припасы: 1,44
Необходимые припасы: 1,44
Необходимые припасы: 1,44
Необходимые припасы: 1,44

Шаг 6: Необходимые расходные материалы: 5V 0.1A Mini Fan Raspberry Pi

Необходимые расходные материалы: 5V 0.1A Mini Fan Raspberry Pi
Необходимые расходные материалы: 5V 0.1A Mini Fan Raspberry Pi

Шаг 7: Необходимые расходные материалы: Ugreen USB 2.0 - 10/100 Fast Ethernet Lan проводной сетевой адаптер

Необходимые расходные материалы: Проводной сетевой адаптер Ugreen USB 2.0 - 10/100 Fast Ethernet Lan
Необходимые расходные материалы: Проводной сетевой адаптер Ugreen USB 2.0 - 10/100 Fast Ethernet Lan

Шаг 8: Строительство

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

Установить внутри NES

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

Шаг 9: Продолжение строительства

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

Отвинтите верхнюю правую черную панель от NES и аккуратно вырежьте достаточно большое квадратное отверстие, чтобы установить ваш диголь-дисплей. Приклейте дисплей горячим способом с помощью 3D-печатной рамки «NESPanel» поверх него.

Шаг 10: Продолжение строительства

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

Установите 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;

изменить роль pi суперпользователя;

du

(вы должны увидеть своего пользователя PI с предоставленными разрешениями) create database network_stats;

q

выход

psql -d network_stats

Выполните следующие запросы:

СОЗДАТЬ ТАБЛИЦУ traffic_per_minute (серийный идентификатор, временная метка без часового пояса NOT NULL, eth0_down real, eth0_up real, eth1_down real, eth1_up real, wan0_down real, wan0_up real);

СОЗДАТЬ УНИКАЛЬНЫЙ ИНДЕКС 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 * * * * питон /home/pi/logging/trafficSummary.py

Шаг 14: Установите экран панели управления

Скопируйте "отображаемую" папку кода из этого проекта в домашний каталог вашего 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 install apache2

sudo service 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

Добавить внутри тега

Параметры + ExecCGI AddHandler cgi-script.py sudo service apache2 restart

Теперь вы можете посетить локальный HTTP-сайт [https://10.0.10.1]

Настроить расширенный мониторинг сети (через IPFM)

sudo apt-get update

sudo apt-get install ipfm

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

sudo vi /etc/ipfm.conf

Создайте со следующим содержимым:

# Глобальные переменные

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

# GLOBAL LOGGING CONFIGURATION LOG

ИМЯ ФАЙЛА "/ var / log / ipfm /% Y_% d_% m /% H_% M"

# журнал каждую минуту DUMP КАЖДУЮ 1 минуту

# очищать статистику каждый день ОЧИЩАТЬ КАЖДЫЕ 24 часа СОРТИРОВАТЬ В РАЗРЕШЕНИИ sudo service ipfm start

ДОПОЛНИТЕЛЬНО: создание собственных изображений Nintendo для отображения на дисплее

Загрузите свой собственный файл 128x128 по следующему URL-адресу:

www.digole.com/tools/PicturetoC_Hex_convert…

Выберите файл изображения для загрузки, добавьте размер, который вы хотите, чтобы он был на экране (ширина / высота)

В раскрывающемся списке «Используется для» выберите «256 цветов для цветных OLED / ЖК-дисплеев (1 байт / пиксель)».

Получите шестнадцатеричный вывод.

Добавьте шестнадцатеричный вывод в файл отображения / сборки / заголовка (.h), а остальные используйте в качестве руководств по синтаксису.

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

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

} else if (strcmp (digoleCommand, "myimage") == 0) {drawBitmap256 (10, 10, 128, 128, & myimageVariableHere, 0); // myimageVariableHere определена в вашем (.h) файле}

Теперь перестройте (игнорируйте ошибки) ниже, чтобы ваше новое изображение визуализировалось с помощью следующей команды.

$./digole myimage Re-Building [Включено] Драйвер дисплея Digole для дополнительных изменений

$ cd display / build $ gcc digole.c $ mv a.out../../digole $ chmod + x../../digole

Рекомендуемые: