I2PI (Posted 2014-03-27 08:47:32 by corey_reichle) I'm working on a build script for I2Pi, which is a similar service to TOR, but solves a different problem domain. TOR solves the issue of anonymous access to the internet, whereas I2P solves the problem domain of an anonymous internetworking layer, offering all the services the internet does, but in a completely anonymized and end-to-end encrypted fashion. This is an un-tested version of the script: #!/bin/bash ################################################################# # # I2Pi build script # vr 0.1pre # # Written by Corey Reichle # 03/23/2014 # Copyright (c) 2014 by Corey Reichle. Released under GPL 3 or later. # # Based on: # https://web.archive.org/web/20131109030345/http://learn.adafruit.com/onion-pi/overview # https://web.archive.org/web/20130904194049/http://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point # ################################################################# cat << '_EOF' This is the I2Pi build script. It's designed to completely automate turning your Raspberry Pi into a Wifi access point (SSID Pi_AP, Passphrase Raspberry), that tunnels all traffic over the I2P network. Special thanks goes to Ladyada for her tutorials on adafruit.com, and SirLagz for his package list of non-required packages. For this script to run correctly, it must be executed as root, or with sudo. It cannot be ran as a non-privileged user. It also presumes you have wlan0 as your wifi card, and eth0 as the onboard NIC. You also require a proper wifi card that can handle being an AP (Presuming the Edimax cards here). _EOF read -p "Press [Enter] key to start install, or CTRL-C to exit..." echo "Setting up environment:" cd /home/pi echo "Getting files:" echo "Creating new repo files..." cat > /etc/apt/sources.list.d/i2p.list <<'_EOF' deb http://deb.i2p2.no/ stable main deb-src http://deb.i2p2.no/ stable main _EOF echo "Installing required programs via apt..." apt-get -yinstall i2p-keyring &>/dev/null apt-get -y update &>/dev/null apt-get -y install wget hostapd isc-dhcp-server i2p &>/dev/null echo "Downloading hostapd binary..." wget http://www.adafruit.com/downloads/adafruit_hostapd.zip # And, for security, and science... You monster. echo "Removing un-needed programs..." apt-get -y purge alsa-base alsa-utils aptitude aspell-en blt console-setup console-setup-linux consolekit cups-bsd dbus dbus-x11 \ debian-reference-common debian-reference-en desktop-base desktop-file-utils dictionaries-common dillo dpkg-dev fakeroot fontconfig \ fontconfig-config fonts-droid fuse galculator gconf2 gconf2-common gdb gksu gnome-accessibility-themes gsfonts gsfonts-x11 idle idle-python2.7 \ lesstif2:armhf libarchive12:armhf libasound2:armhf libaspell15 libasyncns0:armhf libatasmart4:armhf libatk1.0-0:armhf libaudit0 libavahi-client3:armhf \ libavahi-common3:armhf libavahi-glib1:armhf libbluetooth3:armhf libbluray1:armhf libboost-iostreams1.46.1 libboost-iostreams1.48.0 \ libboost-iostreams1.49.0 libboost-iostreams1.50.0 libcaca0:armhf libcairo-gobject2:armhf libcairo2:armhf libcdio-cdda1 libcdio-paranoia1 \ libcdio13 libck-connector0:armhf libcolord1:armhf libcroco3:armhf libcups2:armhf libcupsimage2:armhf libcwidget3 libdaemon0 libdatrie1:armhf \ libdbus-glib-1-2:armhf libdconf0:armhf libdevmapper-event1.02.1:armhf libdirectfb-1.2-9:armhf libdrm2:armhf libept1.4.12 libexif12:armhf \ libffi5:armhf libflac8:armhf libfltk1.3:armhf libfm-data libfm-gtk-bin libfm-gtk1 libfm1 libfontconfig1:armhf libfontenc1:armhf libfreetype6:armhf \ libfuse2:armhf libgail-3-0:armhf libgail18:armhf libgconf-2-4:armhf libgd2-xpm:armhf libgdk-pixbuf2.0-0:armhf libgdu0 libgeoclue0 libgfortran3:armhf \ libgif4 libgksu2-0 libgl1-mesa-glx:armhf libglade2-0 libglapi-mesa:armhf libglib2.0-0:armhf libgnome-keyring0:armhf libgphoto2-2:armhf \ libgphoto2-port0:armhf libgs9 libgstreamer-plugins-base0.10-0:armhf libgstreamer0.10-0:armhf libgtk-3-0:armhf libgtk-3-bin libgtk-3-common \ libgtk2.0-0:armhf libgtk2.0-common libgtop2-7 libgudev-1.0-0:armhf libhunspell-1.3-0:armhf libice6:armhf libicu48:armhf libid3tag0 libident \ libijs-0.35 libimlib2 libimobiledevice2 libjasper1:armhf libjavascriptcoregtk-1.0-0 libjavascriptcoregtk-3.0-0 libjbig0:armhf libjbig2dec0 \ libjson0:armhf liblapack3 liblcms1:armhf liblcms2-2:armhf liblightdm-gobject-1-0 libltdl7:armhf liblvm2app2.2:armhf libmad0 libmagic1:armhf \ libmenu-cache1 libmikmod2:armhf libmng1:armhf libmtdev1:armhf libnettle4:armhf libnih-dbus1 libnih1 libnotify4:armhf libobrender27 libobt0 \ libogg0:armhf libopenjpeg2:armhf liborc-0.4-0:armhf libpango1.0-0:armhf libpaper1:armhf libpci3:armhf libpciaccess0:armhf libpixman-1-0:armhf \ libplist1 libpng12-0:armhf libpolkit-agent-1-0:armhf libpolkit-backend-1-0:armhf libpolkit-gobject-1-0:armhf libpoppler19:armhf libportmidi0 \ libproxy0:armhf libpulse0:armhf libpython2.7 libqt4-network:armhf libqt4-svg:armhf libqt4-xml:armhf libqtcore4:armhf libqtdbus4:armhf \ libqtgui4:armhf libqtwebkit4:armhf libraspberrypi0 librsvg2-2:armhf libsamplerate0:armhf libsdl-image1.2:armhf libsdl-mixer1.2:armhf \ libsdl-ttf2.0-0:armhf libsdl1.2debian:armhf libsgutils2-2 libsm6:armhf libsmbclient:armhf libsmpeg0:armhf libsndfile1:armhf libsoup-gnome2.4-1:armhf \ libsoup2.4-1:armhf libsqlite3-0:armhf libstartup-notification0 libsystemd-login0:armhf libthai0:armhf libtiff4:armhf libts-0.0-0:armhf libunique-1.0-0 \ libusbmuxd1 libvorbis0a:armhf libvorbisenc2:armhf libvorbisfile3:armhf libvte9 libwayland0:armhf libwebkitgtk-1.0-0 libwebkitgtk-3.0-0 libwebp2:armhf \ libwnck22 libx11-6:armhf libx11-xcb1:armhf libxapian22 libxau6:armhf libxaw7:armhf libxcb-glx0:armhf libxcb-render0:armhf libxcb-shape0:armhf \ libxcb-shm0:armhf libxcb-util0:armhf libxcb-xfixes0:armhf libxcb1:armhf libxcomposite1:armhf libxcursor1:armhf libxdamage1:armhf libxdmcp6:armhf \ libxext6:armhf libxfixes3:armhf libxfont1 libxft2:armhf libxi6:armhf libxinerama1:armhf libxkbcommon0:armhf libxkbfile1:armhf libxklavier16 \ libxml2:armhf libxmu6:armhf libxmuu1:armhf libxp6:armhf libxpm4:armhf libxrandr2:armhf libxrender1:armhf libxres1:armhf libxslt1.1:armhf \ libxss1:armhf libxt6:armhf libxtst6:armhf libxv1:armhf libxxf86dga1:armhf libxxf86vm1:armhf lightdm lightdm-gtk-greeter lxappearance lxde-common \ lxde-icon-theme lxmenu-data lxpolkit lxrandr lxtask lxterminal menu menu-xdg midori mime-support mountall netsurf-gtk obconf omxplayer openbox \ pciutils pcmanfm plymouth policykit-1 poppler-data python python-support python2.7 python2.7-minimal python3 python3.2 python3.2-minimal scratch \ sgml-base shared-mime-info squeak-vm tasksel tcl8.5 tk8.5 tsconf udisks update-inetd weston wpagui x11-common x11-utils x11-xserver-utils xarchiver \ xfonts-utils xinit xml-core xpdf xserver-xorg xserver-xorg-core idle-python3.2 idle3 ifplugd info leafpad &>/dev/null echo "Updating your system..." apt-get -y upgrade &>/dev/null echo "Making system configuration changes:" echo "Modifying sysctl.conf..." cat > /etc/sysctl.conf <<'_EOF' kernel.printk = 3 4 1 3 net.ipv4.ip_forward=1 vm.swappiness=1 vm.min_free_kbytes = 8192 _EOF echo "Writing the hostapd config file..." cat > /etc/hostapd/hostapd.conf <<'_EOF' interface=wlan0 driver=rtl871xdrv ssid=i2pi hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=i2pi wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP _EOF cat > /etc/default/hostapd <<'_EOF' DAEMON_CONF="/etc/hostapd/hostapd.conf" _EOF echo "Writing new network interfaces file..." cat > /etc/network/interfaces <<'_EOF' auto lo auto eth0 iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0 up iptables-restore < /etc/iptables.ipv4.nat _EOF echo "writing new dhcp files..." cat > /etc/default/isc-dhcp-server <<'_EOF' INTERFACES="wlan0" _EOF cat > /etc/dhcp/dhcpd.conf <<'_EOF' ddns-update-style none; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.50; option broadcast-address 192.168.42.255; option routers 192.168.42.1; default-lease-time 600; max-lease-time 7200; option domain-name "local"; option domain-name-servers 8.8.8.8, 8.8.4.4; } _EOF echo "Making iptables rules, and saving them:" cat > /etc/iptables.ipv4.nat <<'_EOF' #iptables-save v1.4.14 on Tue Jan 01 00:00:50 2013 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -i wlan0 -p tcp -m tcp --dport 22 -j REDIRECT --to-ports 22 -A PREROUTING -i wlan0 -p udp -m udp --dport 53 -j REDIRECT --to-ports 53 -A PREROUTING -i wlan0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 4444 -A POSTROUTING -o eth0 -j MASQUERADE COMMIT # Completed on Tue Jan 01 00:00:50 2013 # Generated by iptables-save v1.4.14 on Tue Jan 01 00:00:50 2013 *filter :INPUT ACCEPT [1:40] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i wlan0 -o eth0 -j ACCEPT COMMIT # Completed on Tue Jan 01 00:00:50 2013 _EOF echo "Giving you a new hostapd binary:" echo "Unzippping..." unzip /home/pi/adafruit_hostapd.zip echo "Installing new binary..." mv /home/pi/hostapd /usr/sbin chmod 755 /usr/sbin/hostapd echo "Ensuring all required files are present and with proper permissions..." echo "Ensuring services start..." update-rc.d hostapd enable update-rc.d isc-dhcp-server enable update-rc.d i2p enable read -p "Hit [ENTER] to reboot your Pi, or CTRL-C to cancel reboot." reboot -------- There are no comments on this post. To submit a comment on this post, email corey.reichle@gmail.com or visit us on the web [ https://www.coreyreichle.com ].