sudo nano /etc/default/grub |
sudo update-grub |
sudo apt-get install openvpn |
cd
/etc/openvpn sudo cp Netherlands.ovpn hideme.conf |
Darin werden zwei Zeilen geändert auf:
client
dev tun
proto udp
remote nl.hide.me 3478
cipher AES-128-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca TrustedRoot.pem
verb 3
auth-user-pass
reneg-sec 0
Die Datei login.auth existiert noch nicht und ist folglich anzulegen. Sie soll zwei Zeilen enthalten.
client
dev tun
proto udp
remote nl.hide.me 3478
cipher AES-128-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3
ca /etc/openvpn/TrustedRoot.pem
reneg-sec 0
auth-user-pass /etc/openvpn/login.auth
Als Gerätename wurde hier tunnelvm genutzt.
userid@tunnelvm
passwort
sudo service openvpn start |
dede@tunnel:~$ sudo route
Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
default 10.3.62.194 0.0.0.0 UG 0 0 0 tun0
10.3.62.0 * 255.255.255.0 U 0 0 0 tun0
nl-16.hide.me fritz.box 255.255.255.255 UGH 0 0 0 eth0
192.168.178.0 * 255.255.255.0 U 0 0 0 eth0
sudo apt-get install curl |
curl v4.ident.me;echo |
Die Gateway-VM kommt also schon mal in Amsterdam raus.
dede@tunnel:~$ curl v4.ident.me;echo
95.211.90.168
dede@tunnel:~$ whois 95.211.90.168
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf
% Note: this output has been filtered.
% To receive output for a database update, use the "-B" flag.
% Information related to '95.211.89.96 - 95.211.90.255'
% Abuse contact for '95.211.89.96 - 95.211.90.255' is 'abuse@leaseweb.com'
inetnum: 95.211.89.96 - 95.211.90.255
netname: LEASEWEB
descr: LeaseWeb
descr: P.O. Box 93054
descr: 1090BB AMSTERDAM
[.......]
sudo nano /etc/network/interfaces |
auto
eth0:0 iface eth0:0 inet static address 192.168.178.201 |
sudo nano /etc/sysctl.conf |
Beides aktivieren mit:
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
sudo reboot |
sudo
iptables -A FORWARD -s 192.168.178.0/24 -i eth0:0 -o eth0
-m conntrack --ctstate NEW -j REJECT sudo iptables -A FORWARD -s 192.168.178.0/24 -i eth0:0 -o tun0 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE |
sudo
bash iptables-save >/etc/iptables.up.rules exit |
sudo nano /etc/network/interfaces |
post-up iptables-restore < /etc/iptables.up.rules |
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
post-up iptables-restore < /etc/iptables.up.rules
auto eth0:0
iface eth0:0 inet static
address 192.168.178.201
Nach der Änderung des Default-Gateways auf die IP der Gateway-VM ist das System mit einer IP aus den Niederlanden unterwegs.
dede@deb7txt:~$ curl v4.ident.me;echo
xxx.xxx.xxx.xxx (da stand meine IP ohne Tunnel - und die hat hier nichts zu suchen)
dede@deb7txt:~$ sudo route del default
dede@deb7txt:~$ sudo route add default gw 192.168.178.201
dede@deb7txt:~$ sudo route
Kernel-IP-Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
default 192.168.178.201 0.0.0.0 UG 0 0 0 eth0
192.168.178.0 * 255.255.255.0 U 0 0 0 eth0
dede@deb7txt:~$ curl v4.ident.me;echo
109.201.143.105
dede@deb7txt:~$
sudo apt-get install python-pycurl |
cd mkdir bin |
chmod +x ~/bin/tunnel_watchdog.py |
Weil das Script die Fritzbox (bzw. konkret dessen externe IP) via UPnP abfragt, darf der Haken bei "Statusinformationen über UPnP übertragen" unter Heimnetz/Netzwerk/Netzwerkeinstellungen nicht entfernt worden sein.
FRITZBOX_IP ="192.168.178.1"
Bei obiger Einstellung wird der Tunnel also um 04:00 Uhr nachts neu aufgebaut werden.
AUTO_RECONNECT_AT="04:00"
crontab -e |
* * * * * $HOME/bin/tunnel_watchdog.py |
/var/log/syslog:
Jul 25 19:59:01 tunnel CRON[25020]: pam_unix(cron:session): session opened for user dede by (uid=0)
Jul 25 19:59:11 tunnel CRON[25020]: pam_unix(cron:session): session closed for user dede
Jul 25 20:00:01 tunnel CRON[25033]: pam_unix(cron:session): session opened for user dede by (uid=0)
Jul 25 20:00:11 tunnel CRON[25033]: pam_unix(cron:session): session closed for user dede
Jul 25 20:01:01 tunnel CRON[25071]: pam_unix(cron:session): session opened for user dede by (uid=0)
Jul 25 20:01:11 tunnel CRON[25072]: pam_unix(cron:session): session closed for user dede
Jul 25 19:59:01 tunnel /USR/SBIN/CRON[25021]: (dede) CMD ($HOME/bin/tunnel_watchdog.py)
Jul 25 20:00:01 tunnel /USR/SBIN/CRON[25034]: (dede) CMD ($HOME/bin/tunnel_watchdog.py)
Jul 25 20:01:01 tunnel /USR/SBIN/CRON[25073]: (dede) CMD ($HOME/bin/tunnel_watchdog.py)
nano /etc/default/cron |
EXTRA_OPTS="-L 0" |
/etc/init.d/cron restart |
nano /etc/rsyslog.d/30-cron.conf |
#
Cronjob-Spam umleiten :msg, contains, "pam_unix(cron:session):" -/var/log/cronauth & ~ |
/etc/init.d/rsyslog restart |
nano /etc/logrotate.d/cronauth |
/var/log/cronauth { rotate 4 daily missingok notifempty delaycompress compress postrotate invoke-rc.d rsyslog rotate > /dev/null endscript } |
log_tunnel_watchdog.txt |
Diese Datei ist das Logfile des Scriptes.
Hier werden alle Status-Änderungen mit einem Zeitstempel
protokolliert. Bei Bedarf kann es mittels tail -f log_tunnel_watchdog.txt dauerhaft angezeigt werden. |
.tunnel_watchdog.conf |
In dieser [quasi unsichtbaren] Datei merkt
sich das Script
|
2014.05.13-04:00:01 Der Tunnel wird geplant neu aufgebaut!
2014.05.13-04:00:01 Tunnel wird neu aufgebaut!
2014.05.13-04:00:01 stoppe openvpn
2014.05.13-04:00:02 stoppe openvpn
2014.05.13-04:00:03 stoppe openvpn
2014.05.13-04:00:03 openvpn gestoppt
2014.05.13-04:00:06 starte openvpn
2014.05.13-04:00:06 openvpn gestartet
2014.05.13-04:00:06 warte auf tun0
2014.05.13-04:00:07 warte auf tun0
2014.05.13-04:00:08 warte auf tun0
2014.05.13-04:00:09 warte auf tun0
2014.05.13-04:00:10 warte auf tun0
2014.05.13-04:00:11 warte auf tun0
2014.05.13-04:00:12 warte auf tun0
2014.05.13-04:00:13 warte auf tun0
2014.05.13-04:00:14 warte auf tun0
2014.05.13-04:00:16 tun0 steht
2014.05.13-04:00:16 Tunnel wurde aufgebaut
2014.05.13-04:01:01 Tunnel nach NL steht! extIP=109.201.143.237 FbIP=xxx.xxx.xxx.xxx
2014.05.13-06:14:06 Die Außenwelt ist nicht erreichbar!
2014.05.13-06:14:06 openvpn hoch:True defaultGW==tun0:True
2014.05.13-06:14:06 Wiederholung des Außenwelt-Erreichbarkeits-Tests
2014.05.13-06:14:24 Tunnel wird neu aufgebaut!
2014.05.13-06:14:24 stoppe openvpn
2014.05.13-06:14:25 stoppe openvpn
2014.05.13-06:14:26 stoppe openvpn
2014.05.13-06:14:27 stoppe openvpn
2014.05.13-06:14:27 openvpn gestoppt
2014.05.13-06:14:30 starte openvpn
2014.05.13-06:14:30 openvpn gestartet
2014.05.13-06:14:30 warte auf tun0
2014.05.13-06:14:31 warte auf tun0
2014.05.13-06:14:32 warte auf tun0
2014.05.13-06:14:33 warte auf tun0
2014.05.13-06:14:34 tun0 steht
2014.05.13-06:14:34 Tunnel wurde aufgebaut
2014.05.13-06:15:01 Tunnel nach NL steht! extIP=83.149.126.130 FbIP=xxx.xxx.xxx.xxx
2014.05.13-18:43:06 Externe IP konnte 2x in Folge nicht ermittelt werden!
2014.05.13-18:44:02 Externe IP konnte ermittelt werden!
2014.05.13-23:16:06 Externe IP konnte 2x in Folge nicht ermittelt werden!
2014.05.13-23:17:01 Externe IP konnte ermittelt werden!
2014.05.14-04:00:01 Der Tunnel wird geplant neu aufgebaut!
2014.05.14-04:00:01 Tunnel wird neu aufgebaut!
2014.05.14-04:00:01 stoppe openvpn
2014.05.14-04:00:02 stoppe openvpn
2014.05.14-04:00:03 stoppe openvpn
2014.05.14-04:00:03 openvpn gestoppt
2014.05.14-04:00:06 starte openvpn
2014.05.14-04:00:06 openvpn gestartet
2014.05.14-04:00:06 warte auf tun0
2014.05.14-04:00:07 warte auf tun0
2014.05.14-04:00:08 warte auf tun0
2014.05.14-04:00:09 warte auf tun0
2014.05.14-04:00:10 tun0 steht
2014.05.14-04:00:10 Tunnel wurde aufgebaut
2014.05.14-04:01:01 Tunnel nach NL steht! extIP=83.149.126.141 FbIP=xxx.xxx.xxx.xxx
kann das Script alternativ auch zur Überwachung einer Transmission-VM (auf der ebenfalls torrentcycle.py läuft) genutzt werden.
TRANSMISSION_MONITORING=True
ggf. an die eigenen Bedürfnisse anzupassen.
PATH_TRANSMISSION="/usr/bin/transmission-daemon"
PATH_TORRENTCYCLE="/home/dede/bin/torrentcycle.py"