|
OpenVPN Tunnel beim Bawue.Net
Einer der Zusatzdienste des Bawue.Net für Teilnehmer ist ein VPN Tunnel, der sowohl für Bawue.Net interne Daten als auch für externen Internet-Daten verwendet werden kann.
Folgende Features stehen für diese Tunnel zur Verfügung:
- Statische IPv4 Adresse, vom Internet erreichbar.
- Optional: Statisches IPv4 Subnet mit bis 7 nutzbaren Adresse, vom Internet erreichbar.
- Konfigurierbare Firewall für eingehenden Traffic
- Statusübersicht über bisherigen Datenverbrauch mit Warnmail bei Überschreiten einer konfigurierbaren Grenze.
- VPN basierend auf dem OpenVPN SSL Protokoll, damit besteht Unterstützung fü sämtliche Betriebssysteme, z.B. Linux, Windows, MacOS, iOS, Android und viele Router-Betriebssysteme wie Fritz!Box mit Freetz, OpenWRT, DD-WRT etc.
Daher bietet sich der Tunnel insbesondere an für die Verwendung auf mobilen Endgeräten in offenen Wlan-Netzwerken, wie z.B. Flughäfen.
So ist trotz einem offenen Wlan, bei dem jeder mitlesen kann, der eigene Datenverkehr in's Internet verschlüsselt und somit wird die Privatsphäre als auch die Vertraulichkeit gewahrt.
Aber auch für die Verwendung von Servern wie z.B. einem Web oder einem Mail-Server zu Hause ist das VPN hervorragend geeignet, da somit eine feste IP-Adresse zu Hause zur Verfügung steht, die unabhängig vom Zugangsprovider ist.
Eingerichtet werden kann ein VPN Tunnel unter MyBawue.
Die automatisch generierte Konfigurationsdatei kann heruntergeladen werden und für den OpenVPN Client auf dem lokalen Router oder dem lokalen Computer verwendet werden.
Per erstellte Datei routet standardmäßig allen Traffic für die Bawue.Net Netzwerke über den verschlüsselten Tunnel, Internet Traffic geht aber weiterhin über die normale Internet Verbindung.
Sollte _aller_ Traffic über den Tunnel gehen, z.B. für die Benutzung zur Absicherung eines öffentlichen Hotspots, dann muss das Kommentarzeichen am Anfang der Zeile "redirect-gateway def1 bypass-dns bypass-dhcp" in der OpenVPN Konfiguration entfernt werden.
Der VPN Endpunkt, zu dem der Client verbinden soll, ist tunnelserver.bawue.net mit der IP Adresse 193.7.176.14. Der VPN Server lauscht sowohl per UDP als auch per TCP auf sämtlichen 65535 verfügbaren Ports. Sollte der OpenVPN Standard-Port 1194 nicht erreichbar sein, so bieten sich alternativ die Ports 22, 80 oder 443 an, da diese zumeist in Firewalls freigeschaltet sind. Wenn möglich, ist UDP gegenüber TCP hier zu bevorzugen.
Die generierte OpenVPN Konfiguration probiert dabei aus, den VPN Server erst via 1194/udp, dann via 1194/tcp und zuletzt via 443/tcp zu erreichen.
OpenVPN auf Port 443/tcp ist hierbei auch über die verbreiteten Web-Proxies zu erreichen die in Firmen oft verwendet werden.
Wird hinter dem VPN Tunnel ein öffentlicher Dienst angeboten, z.B. ein Webserver oder ähnliches, dann muss sorge getragen werden, dass die Antworten auf eingehende Datenpakete den Rechner auch wieder über den VPN Tunnel verlassen. Ansonsten ist es wahrscheinlich, dass die Datenpakete die Gegenseite nie erreichen, da sie unterwegs entweder durch irgendwelchen NAT-Routern oder Egress-Filtern verloren gehen.
Um das sicherzustellen, muss ein sogenanntes Split-Routing aktiviert werden.
Hierbei sind folgende drei Zeilen der OpenVPN Konfiguration hinzuzufügen:
script-security 2
route-up "/etc/openvpn/split-routing.sh"
route-pre-down "/etc/openvpn/split-routing.sh"
Auch muss das folgende Script unter /etc/openvpn/split-routing.sh abgespeichert werden:
#!/bin/sh -x
#
# Split-Routing für Bawue.Net VPN Tunnel
#
# Linux Script um mit Hilfe von iproute2 sicherzustellen, dass Pakete, die auf
# dem VPN Interface ankommen auch auf dem VPN Interface wieder den Rechner
# verlassen.
iproute=/usr/sbin/ip
iproute_cfg=/etc/iproute2/rt_tables
vpn_table=${dev}_vpn
default_dev=$($iproute route list 0/0 | cut -d ' ' -f 5)
default_gw=$($iproute route list 0/0 | cut -d ' ' -f 3)
default_table=${default_dev}_def
default_ip=$($iproute -o addr show dev ${default_dev} | awk '/inet / { split($4, a, "/"); print a[1] }')
add_tables() {
i=10
for table in $default_table $vpn_table; do
grep -q $table ${iproute_cfg}
if [ $? -ne 0 ]; then
echo -e "$it${table}" >> ${iproute_cfg}
fi
i=$(($i + 1))
done
}
remove_tables() {
i=10
for table in $default_table $vpn_table; do
sed -i -e "/^$it${table}/d" ${iproute_cfg}
i=$(($i + 1))
done
}
case "$script_type" in
"route-up")
add_tables
$iproute route add default via ${route_vpn_gateway} dev ${dev} table ${vpn_table}
$iproute rule add from ${ifconfig_local} table ${vpn_table}
$iproute route add default via ${default_gw} dev ${default_dev} table ${default_table}
$iproute rule add from ${default_ip} table ${default_table}
;;
"route-pre-down")
$iproute route flush table ${vpn_table}
$iproute rule del from ${ifconfig_local} table ${vpn_table}
$iproute route flush table ${default_table}
$iproute rule del from ${default_ip} table ${default_table}
remove_tables
;;
esac
Anschliessend wird beim nächsten Neustart des OpenVPN Clients die Routing Tabelle entsprechend modifiziert, dass Pakete richtig geroutet werden.
Wird der VPN Zugang nur für ausgehende Verbindungen oder nur für Verbindungen in's Bawue.Net selber verwendet, so ist das Split-Routing Setup nicht notwendig.
Allerdings könnte es notwendig sein, auf dem eigenen Router eine NAT/MASQUERADE Regel anzulegen, damit der Traffic aus dem eigenen Netz auf die VPN Tunnel-Adresse ge-NAT-ed wird.
Sollten irgendwelche Probleme oder Fragen bestehen, so hilft admin@bawue.netselbstverständlich gerne weiter. |