Dieses Tutorial wird die praktische Anwendbarkeit von vpnencap zeigen, während Du Dir einen Wifi Crypt Router zusammenbaust.
Die Hardwarekosten sind im Ultra Low Budget Bereich angesiedelt und reichen von 5.- bis 50.- € abhängig davon welches Hardware Setup Du wählst. Für diejenigen die keine Zeit aufwenden können/wollen bieten wir in Zukunft an Crypt Router nach individuellem Wunsch zusammenzustellen. Diese Servicedienstleistung enthält erweiterte Konfigurationsmöglichkeiten wie Wifi-Repeater, NAS-Server, etc.
Um einen VPN-Zugang zu erhalten, kannst Du entweder einen kostenlosen VPN-Dienst wie vpngate verwenden oder einen kostenpflichtigen Zugang, den es schon zwischen 30.- und 120.- € pro Jahr gibt.
Im Endeffekt kannst Du so Deinen eigenen Wifi Crypt Router für nur 5.- € oder weniger erstellen, wenn Du Deinen Linux Rechner als AP/Router verwendest.
Anforderungen:
- Linux Rechner(X86/AMD64/ARM)
- Debian/Gentoo basierendes Linux Betriebssystem
- USB Wifi Dongle(b/g/n) - Nach längeren Testdurchläufen haben sich Dongles mit nl80211 und rtl871x basierenden Chipsätzen bewährt.
- Ethernet Router/Hub mit Internetanschluss
Wifi Router Setup:
Clients < - > Wifi AP < - > Ethernet Verbindungen < - > Router/Internet
|-> Vpnencap Tunnel < ----------------------- > Internet
Die Benutzer verbinden sich mit dem Wifi AP, der durch Hostapd oder Wpa_supplicant gehostet wird. Dhcp Anfragen werden durch isc-dhcp-server/dhcpd oder dnsmasq beantwortet. Wenn wir Vpn Tunnel mit Vpnencap erstellen, wird das Nat Routing aktiviert, so dass die Benutzer Zugang zum Internet haben. Falls kein Tunnel aktiv sein sollte, haben die Nutzer keinen Zugang zum Internet. Der Router wird durch Iptables geschützt. Wie man ein Pax Kernel und/oder SELinux hierfür korrekt konfiguriert, wird in Zukunft beschrieben werden. Du könntest ebenso im Gentoo Wiki(https://wiki.gentoo.org/wiki/Hardened_Gentoo, https://wiki.gentoo.org/wiki/SELinux) oder einem Tutorial, das ich für Raspbian+Selinux auf einem Bananapi Board (http://forum.lemaker.org/thread-4092-1-1-.html) geschrieben habe, um mehr Informationen zu bekommen, wie man ein Pax Kernel und/oder SELinux korrekt konfiguriert.
Zunächst müssen wir die Netzwerkschnittstellen konfigurieren. In diesem Beispiel benutzen wir als Wifi Schnittstelle wlan0 und als Ethernet Schnittstelle eth0.
Netzwerk Schnittstellen:
Gentoo:
Konfiguration /etc/conf.d/net:
#eth0
config_eth0="dhcp"
#wlan0
config_wlan0="192.168.23.254 netmask 255.255.255.0 brd 192.168.23.255"
Debian:
Konfiguration /etc/network/interfaces:
#loopback
auto lo
iface lo inet loopback
#eth0
allow-hotplug eth0
iface eth0 inet dhcp
#wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.23.254
metmask 255.255.255.0
Wifi-AP:
Hostapd:
Gentoo:
Installation: emerge hostapd
Debian:
Installation: apt-get install hostapd
Hinweis: lies https://wireless.wiki.kernel.org/en/users/Documentation/hostapd; falls Du einen anderen Treiber verwenden willst/musst wie z.B. nl80211 (z.B. ralink rt):
manuelle Installation: update oder installiere libnl-1.0pre8
git clone git://w1.fi/srv/git/hostap.git
cd hostap/hostapd
cp defconfig .config && vi .config
suche nach #CONFIG_DRIVER_NL80211=y und entferne das Kommentar #
suche nach #CONFIG_LIBNL32=y oder #CONFIG_LIBNL20=y und entferne das Kommentar #
make
make install
Konfiguration /etc/hostapd/hostapd.conf:
# Basic configuration
interface=wlan0
ssid=Choose_a_ssid_name
channel=11
#bridge=br0
# WPA and WPA2 configuration
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Choose_a_passphrase
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
# Hardware configuration
# set the driver you use. You can get it by using lsmod -t. rtl871xdrv should work for most realtek chip based devices
driver=rtl871xdrv
#driver=nl80211
#ieee80211n=1
hw_mode=g
#these settings can be commented if you are not sure
#device_name=RTL8192CU
#manufacturer=Realtek
Test: starte hostapd /etc/hostapd/hostapd.conf und überprüfe, ob Du Dich mit dem AP verbinden kannst.
Dienst Setup/Start - non systemd:
rc-update add hostapd default
/etc/init.d/hostapd start
Dienst Setup/Start - systemd:
systemctl enable hostapd
systemctl start hostapd
WPA_Supplicant(Alternative)
Gentoo:
Installation: echo "net-wireless/wpa_supplicant ap" >> /etc/portage/package.use && emerge wpa_supplicant
temporäre Installation: USE="ap" emerge -v1 wpa_supplicant
Debian:
Installation: apt-get install wpa_supplicant
Konfiguration /etc/wpa_supplicant/wpa_supplicant.conf:
network={
ssid="YourSSID"
psk="your-secret-key"
mode=2
frequency=auto
#scan_ssid=1
proto=RSN
key_mgmt=WPA-PSK
group=CCMP TKIP
pairwise=CCMP TKIP
priority=5
}
Test: starte wpa_supplicant -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf und überprüfe, ob Du Dich mit dem AP verbinden kannst.
Dienst Setup/Start - non systemd:
rc-update add wpa_supplicant default
/etc/init.d/wpa_supplicant start
Dienst Setup/Start - systemd:
systemctl enable wpa_supplicant
systemctl start wpa_supplicant
DHCPD:
ISC-DHCP-Server/DHCPD:
Gentoo:
Installation: emerge net-misc/dhcpcd
Debian:
Installation: apt-get install isc-dhcp-server
Konfiguration /etc/dhcp/dhcpd.conf:
authoritative;
ddns-update-style interim;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.7.0 netmask 255.255.255.0 {
range 192.168.7.1 192.168.7.253;
option domain-name-servers 8.8.8.8;
option domain-name "whussup.3ox";
option routers 192.168.7.254;
option broadcast-address 192.168.7.255;
default-lease-time 600;
max-lease-time 7200; }
Test: starte dhcpd und überprüfe, ob Du automatisch eine IP zugewiesen bekommst, wenn du mit dem AP verbunden bist.
Dienst Setup/Start - non systemd:
rc-update add dhcpd default
/etc/init.d/dhcpd start
Dienst Setup/Start - systemd:
systemctl enable dhcpd
systemctl start dhcpd
Dnsmasq(Alternative):
Gentoo:
Installation: emerge dnsmasq
Debian:
Installation: apt-get install dnsmasq
Konfiguration /etc/dnsmasq.conf:
#wlan0 dhcpd range
dhcp-range=192.168.23.1,192.168.23.253,72h
interface=wlan0
Test: starte dnsmasq und überprüfe, ob Du automatisch eine IP zugewiesen bekommst, wenn du mit dem AP verbunden bist.
Dienst Setup/Start - non systemd:
rc-update add dnsmasq default
/etc/init.d/dnsmasq start
Dienst Setup/Start - systemd:
systemctl enable dnsmasq
systemctl start dnsmasq
VPN_Tunnel(s)/Iptables/Nat:
Vpnencap:
Installation: git clone https://github.com/whussup/vpnencap/vpnencap.git
cd vpnencap
chmod +x ./install.sh && ./install.sh
Konfiguration /etc/vpnencap/vpn_config.sh:
Trage Deine VPN Server Daten ein.
Suche nach automatic_recon=1 und ändere es zu automatic_recon=2
Suche nach router_device=() und ändere es zu router_device=("wlan0")
Test: starte vpnencap und überprüfe, ob die tunnel korrekt aufgebaut werden. Ansonsten prüfe /etc/vpnencap/vpn_config.sh auf Fehler.
Dienst Setup/Start - non systemd:
rc-update add vpnencap default
/etc/init.d/vpnencap start
Dienst Setup/Start - systemd:
systemctl enable vpnencap
systemctl start vpnencap
Falls alles korrekt eingerichtet ist und funktioniert, starte das System neu, um zu sehen, ob nach dem Neustart alle Dienste einwandfrei funktionieren.
Beim Testen des oben beschriebenen Setups kam es manchmal, abhängig von dem genutzten Adapter bzw. dessen Chipsatz, zu Problemen beim Verbindungsaufbau mit dem Hostapd Dienst. Um dies zu vermeiden muss man ein cronjob einrichten, der das Wlan Gerät und die damit zusammenhängenden Dienste(isc-dhcpd und hostapd) neustartet. Es ist wichtig hierbei auf die richtige Reihenfolge zu achten, da ansonsten der isc-dhcpd nicht korrekt startet:
crontab -e:
* 5 * * * ifconfig wlan0 down && ifconfig wlan0 up && /etc/init.d/isc-dhcpd restart && /etc/init.d/hostapd restart
je nach crontab wird mit STRG+K+X beendet und gespeichert oder :w (ENTER) :q(ENTER)
Posted at 2015-04-27 04:25:59
( updated at 2016-01-16 01:30:15 )
in Manuals
Tags: