ich stehe aktuell an einer etwas kniffligen Frage fest und komme einfach nicht weiter. Kurz zur Vorgeschichte: Ich habe mir einen Raspberry Pi 2 zulegt, um ein wenig zu experimentieren und meine laienhafte Netzwerkkenntnisse etwas zu vertiefen. Mein Ziel:
In Kurzform:
FRITZ!Box / VOIP -> Raspberry Pi / OpenVPN -> beliebiger WLAN-Router / Internet
Ausführlicher:
1. Der Raspberry Pi stellt eine Verbindung zu einem beliebigen WLAN-Router her, um sich mit dem Internet zu verbinden.
2. Der Raspberry Pi ist als DHCP-Router konfiguriert und stellt sein eigenes Netzwerk bereit.
3. Ebenfalls ist auf dem Raspberry Pi OpenVPN installiert, sodass der gesamte Internetverkehr über einen VPN-Anbieter geleitet wird.
4. Meine FRITZ!Box stellt mit LAN1 über den Raspberry Pi eine Internetverbindung her. Die FRITZ!Box verwaltet alle angeschlossenen Rechner sowie VOIP (Sipgate).
Bis auf VOIP funktioniert auch alles einwandfrei. Meine Schwierigkeit: Ich habe nicht ganz verstanden WARUM es funktioniert:
1. Wenn ich mir mit ifconfig meine Interfaces anzeigen lasse, gibt es hier vier Stück: eth0, wlan0, ovpn (VPN) und lo. Woher weiß das jeweilige Interface, was es nun machen muss? Also ganz laienhaft ausgedrückt: Woher weiß eth0, dass es mit ovpn kommunizieren soll? Oder nochmals anders ausgedrückt: Woher weiß ovpn, dass es sich zwischen eth0 und wlan0 stellen muss, um alle Pakete über die entsprechende VPN-Verbindung umzuleiten? Wie funktioniert also das Zusammenspiel zwischen den einzelnen Interfaces? Vielleicht kann mir da jemand mit einer einfachen Erläuterung oder ein paar Schlagworten für die Suchmaschine weiterhelfen.
2. VOIP funktioniert manchmal sehr gut, manchmal sehr unzuverlässig und manchmal auch gar nicht. Sprich: Zeitversatz, keine eingehenden Anrufe oder nur einseitiges hören. Was ich bereits herausgefunden habe: Ohne OpenVPN funktioniert alles einwandfrei und zuverlässig. Nun meine Frage: Gibt es eine Möglichkeit, VOIP nicht über OpenVPN zu leiten? Gewissermaßen eine Ausnahme-Regel für die Telefonie-Funktion der FRITZ!Box?
3. Und auch wenn insgesamt alles ganz gut funktioniert: Sind in der Konfiguration irgendwelche Ungereimtheiten ersichtlich bzw. gibt es vielleicht an der ein oder anderen Stelle einen eleganteren Lösungsweg?
Vielen Dank!
Meine Konfiguration:
Code: Alles auswählen
apt-get install isc-dhcp-server
apt-get install openvpn
Code: Alles auswählen
auto lo
iface lo inet loopback
iface eth0 inet manuel
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Code: Alles auswählen
interfaces eth0
static ip_address=192.168.10.1/24
static routers=192.168.10.1
static domain_name_servers=192.168.10.1
Code: Alles auswählen
network={
ssid=“WLAN-Name“
psk=“WLAN-Passwort“
}
Code: Alles auswählen
authoritative;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.250;
option broadcast-address 192.168.10.255;
option routers 192.168.10.1;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
Code: Alles auswählen
sysctl -w net.ipv4.ip_forward=1
Code: Alles auswählen
net.ipv4.ip_forward=1
Code: Alles auswählen
iptables -t nat -A POSTROUTING -o ovpn -j MASQUERADE
iptables -I FORWARD -i eth0 ! -o ovpn -j DROP
iptables -I INPUT 1 -i ovpn -j ACCEPT
ip6tables -I INPUT 1 -i ovpn -j ACCEPT
Code: Alles auswählen
mkdir /home/pi/vpn-gateway
sudo iptables-save > /home/pi/vpn-gateway/iptables.v4
sudo ip6tables-save > /home/pi/vpn-gateway/iptables.v6
Code: Alles auswählen
#!/bin/sh
iptables-restore < /home/pi/vpn-gateway/iptables.v4
ip6tables-restore < /home/pi/vpn-gateway/iptables.v6
exit 0
Code: Alles auswählen
sudo chown root:root /etc/network/if-pre-up.d/iptables
sudo chmod +x /etc/network/if-pre-up.d/iptables
sudo chmod 755 /etc/network/if-pre-up.d/iptables