Routing für PrivateInternetAccess/Socks, aber ohne VPN

Hi, heute möchte ich Euch ein kurzes HowTo zusammen stellen, wie Ihr ohne OpenVPN oder l2tp einen Router mittels eines anonymen Socksservers aufsetzt. Ich werde das am Beispiel von Private Internet Access machen, aber es funktioniert natürlich ebenso mit jedem anderen Dienst.

Das Stichwort lautet hier „badvpn-tun2socks“.

Viele von Euch werden das Problem kennen. Ich möchte „anonymer“ im Internet unterwegs sein. Typischerweise wird im gleichen Satz das Wort VPN-Provider mit genannt. Diese Provider nutzen meist OpenVPN als Technologie. Leider müssen somit alle Pakete, sofern AES-NI nicht hardwareseitig unterstützt, von der CPU verarbeitet werden. Dieses ver-/entpacken der Pakete geschieht zudem auch nicht multi-threaded, was dazu führt, dass der Router alles mittels eines CPU-Kerns erledigen muss. Da gerade in bei solchen vorhaben eher auf „alte“ Hardware gesetzt wird, denn diese liegt sowieso im Schrank herum, habe ich dieses Tutorial erarbeitet. Hierbei möchte ich noch 2 Punkte erwähnen. Zu einem ist ein Socks-Tunnel kein 100%iger Schutz. Pakete können dechiffriert werden. Zum anderen bietet die Kombination mit nur einem VPN-Provider weniger Schutz als die Kombination von verschiedenen Diensten.

Nun zum entgeltlichen Tutorial. Ich habe mein Socks-Gateway mit Ubuntu 16.04 realisiert. Der Grund hierfür war einfach, denn das Paket badvpn-tun2socks war direkt verfügbar. Los geht es mit der Installation:

add-apt-repository ppa:hda-me/badvpn-tun2socks
apt-get update
apt install badvpn-tun2socks

Im Anschluss bereite wir das System für das Routing vor. Dazu wird die Datei /etc/sysctl.conf bearbeitet. Hier muss das „#“ vor net.ipv4.ip_forward=1 entfernt werden. Und anschließend die Konfiguration mit sysctl -p übernommen werden.

nano /etc/sysctl.conf

####
net.ipv4.ip_forward=1
####

sysctl -p

Jetzt haben wir schon einen Großteil geschafft. Das System ist vorbereitet. Als nächstes legen wir uns ein Script an, welches das „Fake“-tun Device erzeugt und die Verbindung zum Socks Server herstellt. Hierzu legen wir die Datei /root/restart_socks_Route.sh an.

nano /root/restart_socks_Route.sh

#/bin/bash
/usr/bin/killall badvpn-tun2socks
#Remove default gateway
/sbin/route del -net 0.0.0.0
#Only allow the connection thru my router to dns & Socks-Server
/sbin/route add 46.166.190.150 gw 192.168.178.1 metric 5
/sbin/route add 84.200.69.80 gw 192.168.178.1 metric 5
/sbin/route add 84.200.70.40 gw 192.168.178.1 metric 5
#Announce the DNS-Server
echo "nameserver 84.200.69.80" > /etc/resolv.conf
echo "nameserver 84.200.70.40" > /etc/resolv.conf
#Start the connection to the Socks-Server
/usr/bin/badvpn-tun2socks --loglevel none --tundev tun0 --netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0 --socks-server-addr 46.166.190.150:1080 --username XXX --password geheim &
#Ugly but secure ;)
/bin/sleep 1
#Bring up the tun Device
/sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0
#Announce the default Gateway
/sbin/route add default gw 10.0.0.2 metric 6
#Do the Routing stuff
/sbin/sysctl -w net.ipv4.ip_forward=1
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Im Script sind folgende Parameter anzupassen. Die IP des Gateways, also eures Routers müsst Ihr ändern. Mein Default Gateway ist 192.168.178.1. Als weiteren Punkt müsst Ihr natürlich die socks-server-addr anpassen. In meinem Beispiel habe ich den Socksserver von PrivateInternetAccess eingetragen (46.166.190.150). Als letztes müsst ihr die Authentifizierung anpassen, für XXX den Usernamen eintragen und euer Passwort.

Als letztes nun das Script ausführbar machen und anstarten.

chmod a+x /root/restart_socks_Route.sh

#Starten des tunnels
/root/restart_socks_Route.sh

Ab jetzt seit ihr sicher … sicherer online im Netz unterwegs. Leider funktionieren traceroute und ping nicht durch diesen Tunnel, aber ihr könnt mit dieser Abfrage eure public Ip bestimmen. Diese sollte nun der IP eures Socks Providers gehören. Ggf. müsst Ihr noch curl installieren.

/usr/bin/curl -t 10 -s http://server4.tschoerner.eu/ip.php

Das Ergebnis könnte so aussehen:

Hier noch ein Script, welches prüft ob ihr sicher unterwegs seit

#!/bin/bash

localip=$(/usr/bin/dig <Your public DDNS> +short)
remoteip=$(/usr/bin/curl -t 10 -s http://server4.tschoerner.eu/ip.php)

#echo "Local IP:" $localip
#echo "Remote IP:"$remoteip"XXX"

if [[ $localip == $remoteip ]] || [ -z $remoteip ];
then
        echo "not secure"
        echo $localip
        echo $remoteip
else
        echo $localip
        echo "Public IP: "$remoteip
        echo "secure"
fi

Viel Spaß damit! Und bis bald!

Join the ConversationLeave a reply

Your email address will not be published. Required fields are marked *

Comment*

Name*

Website