สารบัญ:

Nintendo Wifi Router: 17 ขั้นตอน (พร้อมรูปภาพ)
Nintendo Wifi Router: 17 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Nintendo Wifi Router: 17 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Nintendo Wifi Router: 17 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ทำไมเเม่ไม่บอกกันเลย😂 #แป้งวิงค์ไวท์ 2024, พฤศจิกายน
Anonim
เราเตอร์ Nintendo Wifi
เราเตอร์ Nintendo Wifi

ใช้เคสระบบ Old Nintendo Entertainment สร้างเราเตอร์ที่บ้านที่มีประสิทธิภาพสูงโดยใช้ RaspberryPI 3!

ขั้นตอนที่ 1: ติดตั้งซอฟต์แวร์ RaspberryPi ที่จำเป็น

แฟลช RaspberriPi Hard Disk / ติดตั้งซอฟต์แวร์ที่จำเป็น (โดยใช้ Ubuntu Linux)

ดาวน์โหลด "RASPBIAN JESSIE LITE"

สร้างฮาร์ดดิสก์ใหม่ของคุณสำหรับ DashboardPI

ใส่ microSD เข้ากับคอมพิวเตอร์ของคุณผ่านอะแดปเตอร์ USB และสร้างภาพดิสก์โดยใช้คำสั่ง dd

ค้นหาการ์ด microSD ที่ใส่ของคุณโดยใช้คำสั่ง df -h ยกเลิกการต่อเชื่อมและสร้างภาพดิสก์ด้วยคำสั่งคัดลอกดิสก์ dd

$ 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 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" Setup the simple directory l command [ตัวเลือก]

vi ~/.bashrc

เพิ่มบรรทัดต่อไปนี้:

นามแฝง l='ls -lh'

source ~/.bashrc แก้ไขการเน้นไวยากรณ์เริ่มต้นของ VIM [ตัวเลือก]

sudo vi /etc/vim/vimrc

uncomment บรรทัดต่อไปนี้:

ไวยากรณ์ในการรีบูต PI ของคุณเพื่อรับการเปลี่ยนแปลงล่าสุด

รีบูตอัปเดตการตั้งค่าเขตเวลาท้องถิ่น

sudo dpkg-reconfigure tzdata เลือกเขตเวลาของคุณโดยใช้อินเทอร์เฟซ

ขั้นตอนที่ 2: การสร้างจุดเชื่อมต่อ WiFi

โปรดทราบ ก่อนที่สิ่งนี้จะกลายเป็นเราเตอร์ เรากำลังเสียบ RaspberryPi เข้ากับเครือข่ายที่มีอยู่ผ่านพอร์ตอีเธอร์เน็ตเพื่อติดตั้งแพ็คเกจต่อไปนี้

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

sudo apt-get ติดตั้ง dnsmasq hostapd vim

sudo apt-get ติดตั้งเป็นกลุ่ม 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

เพิ่มบรรทัดต่อไปนี้:

ปฏิเสธอินเทอร์เฟซ wlan0 sudo vi /etc/network/interfaces

แก้ไขส่วน wlan0 เพื่อให้มีลักษณะดังนี้:

อัตโนมัติ lo iface lo inet ลูปแบ็ค

คู่มือ iface eth0 inet

อัตโนมัติ wlan0 iface wlan0 inet ที่อยู่คงที่ 10.0.10.1 netmask 255.255.255.0 เครือข่าย 10.0.10.0 ออกอากาศ 10.0.10.255

auto eth1 iface eth1 inet สแตติกแอดเดรส 10.0.20.1 netmask 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

# ต้องการให้ลูกค้าทราบชื่อเครือข่ายที่ไม่สนใจ_broadcast_ssid=0

# ใช้ WPA2 wpa=2

# ใช้คีย์ที่แชร์ล่วงหน้า wpa_key_mgmt=WPA-PSK

# ข้อความรหัสผ่านเครือข่าย wpa_passphrase=password

# ใช้ 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

ผูกอินเทอร์เฟซ # ผูกกับอินเทอร์เฟซเพื่อให้แน่ใจว่าเราไม่ได้ส่งสิ่งต่าง ๆ ที่เซิร์ฟเวอร์อื่น = 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, 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 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

บันทึกการตั้งค่า 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 service hostapd start บริการ sudo dnsmasq start

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 ติดตั้ง 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 --บังคับเปิดใช้งาน

sudo ufw สถานะ

แก้ไขข้อผิดพลาดโดยที่ UFW ไม่เริ่มทำงานเมื่อเริ่มต้น

sudo su crontab -e

เพิ่มบรรทัดต่อไปนี้: @reboot /bin/sleep 60; ufw --force เปิดใช้งาน

ขั้นตอนที่ 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" Serial:UART/I2C/SPI TFT LCD 128x128 Display Module

วัสดุที่จำเป็น: 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 Wired Network Adapter

อุปกรณ์ที่จำเป็น: Ugreen USB 2.0 ถึง 10/100 Fast Ethernet Lan Wired Network Adapter
อุปกรณ์ที่จำเป็น: Ugreen USB 2.0 ถึง 10/100 Fast Ethernet Lan Wired Network Adapter

ขั้นตอนที่ 8: การก่อสร้าง

การก่อสร้าง
การก่อสร้าง

ติดตั้งภายใน NES

การใช้เครื่องพิมพ์ 3D พิมพ์ Digole Display frame "NESPanel" ในโฟลเดอร์ /construction/display-frame/ [หากคุณไม่มีเครื่องพิมพ์ 3D คุณสามารถตัดรูสี่เหลี่ยมสำหรับ Digole Display ด้วยเครื่องมือ Dremel อย่างประณีต] ตัดรูต่อไปนี้ที่เปิดอยู่ด้านหลังและด้านข้างของเคสเพื่อให้พัดลมขนาดเล็กติดบน ด้านข้างและสายไฟ/อีเทอร์เน็ตและสายอีเทอร์เน็ต USB เพื่อเข้าทางด้านหลัง

ขั้นตอนที่ 9: การก่อสร้างต่อ

ก่อสร้างต่อ
ก่อสร้างต่อ

คลายเกลียวแผงสีดำด้านบนขวาออกจาก NES แล้วตัดเป็นรูสี่เหลี่ยมขนาดใหญ่พอที่จะติดตั้งจอแสดงผล digole ของคุณ กาวหน้าจอให้ร้อนเข้าที่ด้วยกรอบพิมพ์ 3 มิติ "NESPanel" ที่ด้านบนสุด

ขั้นตอนที่ 10: การก่อสร้างต่อ

ก่อสร้างต่อ
ก่อสร้างต่อ

ติดตั้ง RaspberryPi ตรงกลางด้านล่างของเคส NES ที่ว่างเปล่า ยึดด้วยกาวหรือสกรูขนาดเล็กที่ด้านล่าง ใช้ตัวต้านทาน 270 โอห์ม เชื่อมต่อ "ไฟ LED เปิด" ของ NES กับพิน 5V และ GND ใน Raspberry Pi (ตะกั่ว LED สั้นคือกราวด์) เชื่อมต่อพัดลมขนาดเล็กเข้ากับพิน 5V และ GND ด้วยเพื่อให้ทำงานเมื่อเครื่องเริ่มทำงาน ติดพัดลมเข้ากับรูที่ด้านข้างของพัดลม

ขั้นตอนที่ 11: เชื่อมต่อจอแสดงผล Digole

เชื่อมต่อพินต่อไปนี้กับพินบน RaspberryPi

VCC เชื่อมต่อกับ 3v GND คือข้อมูลกราวด์คือ SDA CLOCK คือ SCL ตอนนี้คุณควรเห็นอุปกรณ์ในคำสั่ง i2cdetect ของคุณ

i2cdetect -y 1 ควรแสดงในตารางข้อความเป็น27

ขั้นตอนที่ 12: ติดตั้งเครื่องมือตรวจสอบเครือข่าย & การบันทึกฐานข้อมูล

sudo apt-get ติดตั้ง 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 superuser;

du

(คุณควรเห็นผู้ใช้ PI ของคุณด้วยสิทธิ์ที่ได้รับ) สร้างฐานข้อมูล network_stats;

NS

ทางออก

psql -d network_stats

เรียกใช้แบบสอบถามต่อไปนี้:

สร้างตาราง traffic_per_minute (id serial, การประทับเวลาโดยไม่มีเขตเวลา NOT NULL, eth0_down จริง, eth0_up จริง, eth1_down จริง, eth1_up จริง, wan0_down จริง, wan0_up จริง);

สร้าง UNIQUE INDEX time_idx ON traffic_per_minute (เวลา); คัดลอกโฟลเดอร์ "เข้าสู่ระบบ" ของโค้ดจากโปรเจ็กต์นี้ไปยังโฮมไดเร็กทอรีของ 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 service apache2 รีสตาร์ท

ลบหน้าเริ่มต้น

cd /var/www

sudo rm -rf html

คัดลอกโฟลเดอร์ 'webportal' จากโปรเจ็กต์นี้ไปยังโฟลเดอร์หลักของคุณบน RPi และสร้าง symlink สำหรับ 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

เปิดใช้งานการเขียนสคริปต์ CGI ของ Python

เพิ่มในแท็ก

ตัวเลือก +ExecCGI AddHandler cgi-script.py sudo service apache2 restart

ตอนนี้คุณสามารถเยี่ยมชมไซต์ 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 สามารถตรวจสอบอุปกรณ์ได้เพียงเครื่องเดียวเท่านั้น DEVICE eth0

# บันทึกการกำหนดค่าการบันทึกทั่วโลก

FILENAME "/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/LCD สี (1 ไบต์/พิกเซล)" ในเมนูแบบเลื่อนลง "ใช้สำหรับ"

รับเอาต์พุตฐานสิบหก

เพิ่มเอาต์พุตฐานสิบหกลงในไฟล์ display/build/ header (.h) ใช้ไฟล์อื่นเป็นแนวทางสำหรับไวยากรณ์

รวมไฟล์ใหม่ในไฟล์ digole.c #include myimage.h

รวมเบ็ดบรรทัดคำสั่งใหม่ให้กับไฟล์รูปภาพของคุณในไฟล์. หมายเหตุ: คำสั่งด้านล่างบอกว่าวาดภาพของคุณที่ตำแหน่ง 10 พิกเซลมากกว่า 10 พิกเซลลง คุณสามารถเปลี่ยนเป็นพิกัด X, Y อื่นได้ คุณยังสามารถเปลี่ยนค่า 128, 128 เป็นขนาดใดก็ได้ของรูปภาพใหม่ของคุณ

} อื่น if (strcmp (digoleCommand, "myimage") == 0) { drawBitmap256 (10, 10, 128, 128, &myimageVariableHere, 0); // myimageVariableHere ถูกกำหนดไว้ในไฟล์ (.h) ของคุณ }

ตอนนี้สร้างใหม่ (ละเว้นข้อผิดพลาด) ด้านล่างเพื่อให้ภาพใหม่ของคุณแสดงผลด้วยคำสั่งต่อไปนี้

$./digole myimage การสร้างใหม่ [รวม] Digole Display Driver สำหรับการเปลี่ยนแปลงทางเลือกของคุณ

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

ขั้นตอนที่ 16: เสร็จแล้ว

แนะนำ: