Het is een standaardgebruikscenario: u wilt een openbaar wifi-netwerk uitzenden dat door iedereen kan worden gebruikt, maar u hebt strikte vereisten om alleen kattenafbeeldingen toe te staan. Goed nieuws: je Raspberry Pi is een perfecte transmoggificatiemachine . Geïntrigeerd? Lees verder.
Wat je nodig hebt
- Raspberry Pi model B (nieuw voor Raspberry Pi? Hier is alles wat een beginner nodig zou moeten hebben Gewoon een Raspberry Pi kopen? 11 Dingen die je moet weten Net een Raspberry Pi gekocht? 11 Dingen die je moet weten In deze video leggen we alles uit wat je moet weten moet je misschien weten of je net een Raspberry Pi hebt gekocht, of overweegt er een te kopen. Lees meer in videovorm)
- SD-kaart van 4 GB of groter
- ethernetkabel
- Compatibele WiFi-adapter
- MicroUSB-voedingskabel en adapter
De theorie
Dit project begint identiek aan de Onion Router Build Your Own: Safeplug (Tor Proxy Box) Build Your Own: Safeplug (Tor Proxy Box) Waarom betaal je $ 50 voor een Tor-proxy-box als je er zelf een kunt maken met een Raspberry Pi en USB WiFi dongle? Meer lezen hebben we een paar weken geleden gebouwd. We zullen eerst de Raspberry Pi in een standaard WiFi-netwerk veranderen en vervolgens een proxy in het midden plaatsen. De proxy filtert berichten via een Perl-script, dat de afbeeldingen op elk HTTP-verzoek zal vervangen door katten-GIF's van TheCatAPI.com. Kijk hoe verwarde gebruikers zowel intens gefrustreerd zijn als toch vreemd gekalmeerd. Hier is de BBC, aanpassingen na de kat.
Een WiFi-netwerk maken
Aangezien dit deel van de tutorial precies hetzelfde is als de DIY Onion Router Build Your Own: Safeplug (Tor Proxy Box) Bouw je eigen: Safeplug (Tor Proxy Box) Waarom betaal je $ 50 voor een Tor proxy-box als je er zelf een kunt maken met een Raspberry Pi en USB WiFi-dongle? Lees meer, volg de instructies daar tot op het punt van Installeren Tor .
De enige kleine verandering die we moeten maken, is om een open WiFi-netwerk uit te zenden in plaats van een beveiligd met WPA. Zodra je de setup daar hebt gevolgd, verander je /etc/hostapd/hostapd.conf, plaats in plaats daarvan in de volgende configuraties. Start opnieuw om de wijzigingen toe te passen.
interface=wlan0 driver=nl80211 ssid=Kittens hw_mode=g channel=6 auth_algs=1 wmm_enabled=0
U zou nu een draadloos netwerk moeten hebben dat op uw Raspberry Pi wordt uitgezonden en dat publiek toegankelijk is. De rest van deze gids zal zich concentreren op het krijgen van interessante dingen.
Als dingen niet werken, typt u:
ifconfig -a
en zoek naar een IP-adres op wlan0. Als een niet wordt toegewezen tijdens het opnieuw opstarten, probeert u het volgende:
sudo nano /etc/default/ifplugd
Wijzig de volgende regels van:
INTERFACES="auto" HOTPLUG_INTERFACES="all"
naar:
INTERFACES="eth0" HOTPLUG_INTERFACES="eth0"
Start opnieuw op en controleer of u verbinding kunt maken met het wifi-netwerk en toegang hebt tot internet.
Squid Proxy en IPTables
Begin met het installeren van de vereisten en maak vervolgens een nieuwe routeringstabel. We zullen later afbeeldingen van de Raspberry Pi serveren, dus we hebben ook Apache-webserver nodig.
sudo apt-get install squid3 bridge-utils apache perl nano iptables.sh
Plak het volgende:
iptables -t nat -A POSTROUTING -j MASQUERADE iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.42.1:3128 iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
Opslaan en vervolgens afsluiten.
chmod +x iptables.sh sudo cp iptables.sh /etc/init.d/ sudo update-rc.d iptables.sh start 99
Negeer de waarschuwingen, het betekent alleen dat we niet aan bepaalde Debian-regels hebben voldaan (maar niets breken). Ten slotte hebben we nog steeds de oude iptables- regels bij het opstarten, dus verwijder de volgende regel uit / etc / network / interfaces
up iptables-restore< /etc/iptables.ipv4.nat
(Verwijder of becommentarieer het)
Start dan opnieuw op. Volgende We zullen de standaard Squid proxy config verwijderen en een nieuwe maken.
sudo rm /etc/squid3/squid.conf sudo nano /etc/squid3/squid.conf
Plak het volgende in het lege bestand:
cache_mgr pi cachemgr_passwd pi all redirect_program /home/pi/cats.pl acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl localnet src 192.168.42.0/24 # RFC1918 possible internal network acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all http_port 3128 transparent umask 022 cache_mem 128 MB cache_dir ufs /var/spool/squid3 1500 16 256 coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Opslaan en afsluiten. Initialiseer de cachemaps met de volgende opdracht en bewerk vervolgens het script dat we gebruiken om alle afbeeldingen te catificeren :
sudo squid3 -z nano /home/pi/cats.pl
Plak in:
#!/usr/bin/perl $|=1; $count = 0; $pid = $$; open (DEBUG, '>>/tmp/cats.log'); autoflush DEBUG 1; print DEBUG "########################################################################\n"; while () { chomp $_; if (m/nosquid/) { print DEBUG "Input NOSQUID: $url\n"; print "$_\n"; print DEBUG "Output NOSQUID: $_\n"; } elsif ($_ =~ /(.*\.jpg")/i) { $url = $1; print DEBUG "Input: $url\n"; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "http://thecatapi.com/api/images/get?format=src&type=gif&nosquid"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } elsif ($_ =~ /(.*\.gif)/i) { $url = $1; print DEBUG "Input: $url\n"; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "http://thecatapi.com/api/images/get?format=src&type=gif&nosquid"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } elsif ($_ =~ /(.*\.png")/i) { $url = $1; print DEBUG "Input: $url\n"; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "http://thecatapi.com/api/images/get?format=src&type=gif&nosquid"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } elsif ($_ =~ /(.*\.jpeg)/i) { $url = $1; print DEBUG "Input: $url\n"; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "http://thecatapi.com/api/images/get?format=src&type=gif&nosquid"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } else { print "$_\n"; } $count++; }
Maak het script uitvoerbaar, en we willen ook een aantal directory's maken om ermee te werken.
sudo chmod +x cats.pl sudo mkdir /var/www/images sudo chmod 777 /var/www/images sudo usermod -a -G www-data proxy sudo chown www-data:www-data /var/www sudo chown www-data:www-data /var/www/images touch /tmp/cats.log chmod 777 /tmp/cats.log
U kunt het log op elk gewenst moment afstellen met:
tail -f /tmp/cats.log
Probeer in te loggen op Pinterest, en opeens al die stomme DIY potplantenprojecten en herenmode-picks en zal veel aantrekkelijker zijn.
Als u liever afbeeldingen ondersteboven weergeeft (creditering van het originele script naar Ex-Parrot, heb ik alleen wijzigingen aangebracht om met sommige machtigingsfouten om te gaan), maak upsidedown.pl en plak het volgende in.
#!/usr/bin/perl $|=1; $count = 0; $pid = $$; while () { chomp $_; if ($_ =~ /(.*\.jpg")/i) { $url = $1; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.jpg"", "$url"); system("/usr/bin/mogrify", "-flip", "/var/www/images/$pid-$count.jpg""); chmod 0777, "/var/www/images/$pid-$count.jpg""; print "http://127.0.0.1/images/$pid-$count.jpg"\n"; } elsif ($_ =~ /(.*\.gif)/i) { $url = $1; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.gif", "$url"); system("/usr/bin/mogrify", "-flip", "/var/www/images/$pid-$count.gif"); chmod 0777, "/var/www/images/$pid-$count.gif"; print "http://127.0.0.1/images/$pid-$count.gif\n"; } elsif ($_ =~ /(.*\.png")/i) { $url = $1; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.png"", "$url"); system("/usr/bin/mogrify", "-flip", "/var/www/images/$pid-$count.png""); chmod 0777, "/var/www/images/$pid-$count.png""; print "http://127.0.0.1/images/$pid-$count.png"\n"; } elsif ($_ =~ /(.*\.jpeg)/i) { $url = $1; system("/usr/bin/wget", "-q", "-O", "/var/www/images/$pid-$count.jpeg", "$url"); system("/usr/bin/mogrify", "-flip", "/var/www/images/$pid-$count.jpeg"); chmod 0777, "/var/www/images/$pid-$count.jpeg"; print "http://127.0.0.1/images/$pid-$count.jpeg\n"; } else { print "$_\n";; } $count++; }
Volg de andere bovenstaande stappen, wijzig de bestandsnaam, maak het script uitvoerbaar en wijzig de Squid-configuratie in een punt op upsidedown.pl in plaats van cats.pl. Ten slotte moet je Squid opnieuw opstarten met:
sudo service squid3 restart
De resultaten zijn in beide gevallen best goed. Als u wijzigingen aanbrengt in deze scripts of deze wilt verbeteren met extra functies, kunt u me in de opmerkingen plaatsen en een Pastebin-koppeling naar uw script plaatsen.
Iets ingewikkelder nodig? Je zou kunnen proberen dit project te combineren met een Raspberry Pi NAS Zet je Raspberry Pi in een NAS-doos Zet je Raspberry Pi in een NAS-doos Heb je een paar externe harde schijven liggen rond en een Raspberry Pi? Maak er een goedkoop, laagvermogen netwerkgebonden aangesloten opslagapparaat van. Hoewel het eindresultaat zeker niet zo zal zijn ... Lees meer of een altijd-on torrent downloader Hoe je je Raspberry Pi in een always-on kunt zetten Megalith downloaden Hoe je je Raspberry Pi in een always-on kunt veranderen Megalith downloaden Doe je onderdeel voor het wereldwijde "Linux-distributienetwerk" door een speciale, veilige, torrent-downloadende megaliet te bouwen die amper 10 W stroom verbruikt. Het zal natuurlijk gebaseerd zijn op een Raspberry Pi. Lees verder !