Virtuelles Linux als VPN-Gateway

hodlgang

Cadet 1st Year
Registriert
Jan. 2018
Beiträge
11
Hi!

Ich würde gerne eine Linux VM mit VPN-Verbindung im Bridged Mode an mein Netzwerk hängen, sodass diese für andere Geräte als VPN-Gateway fungiert.

Hier eine Skizze damit ihr wisst was ich meine: https://i.imgur.com/5MrzrGQ.png

Wie kriege ich sowas hin? Habe dieses Tutorial gefunden und befolgt: https://support.hidemyass.com/hc/en...x-Virtual-Machine-instead-of-a-router-for-VPN

aber leider funktioniert das so nicht. Sobald ich einem Client die Static IP der VM als Standard-Gateway vergebe, gibts keine Internetverbindung mehr. An der Namensauflösung liegt es nicht, nehme da 8.8.8.8/8.8.4.4. Die VM kommt über das tun0-interface ins Internet, die angehängten Clients deren Pakete "nur" über tun0 weitergeleitet werden sollen nicht.

Was interessant ist: ich kann von Host zu Guest pingen, aber umgekehrt nicht!

Jemand eine Idee? Bzw. ein anderes, ausführlicheres How-To? Mein VPN-Provider ist Perfect-Privacy.

LG
 
IP der VM auf eth0? IP des Clients? Bekommt der Client die IP über DHCP? Firewall auf VM eingerichtet? Irgendwie mit iptables rumgespielt?
 
Bin grad leider @Arbeit und kann nicht den genauen Inhalt meiner interfaces-Datei teilen.

Jedenfalls habe ich eth0 (bzw auf 16.04 heissts ja ens33) so konfiguriert:
IP: 192.168.0.140
Maske: 255.255.255.0
Gateway: 192.168.0.1 (mein Router)
DNS: 8.8.8.8 8.8.4.4

Client habe ich immer so konfiguriert:
statische IP: 192.168.0.20 (also er bekommt keine via DHCP)
Gateway: 192.168.0.140
DNS: 8.8.8.8 8.8.4.4

Als Clients habe ich meinen Windows Host sowie mein Smartphone getestet, funktioniert in beiden Fällen nicht.

Firewall auf VM? Ja:

Code:
#!/bin/bash

# UFW reset
sudo ufw --force reset
# Ein und Ausgang ist geschlossen
sudo ufw default deny incoming
sudo ufw default deny outgoing
# VPN Verbindung Ein und Ausgang öffnen wir
sudo ufw allow out on tun0
sudo ufw allow in on tun0
# Hier müssen die Ports der VPN Server eingetragen werden
sudo ufw allow out 1150
sudo ufw allow in 1150
sudo ufw allow out 1151
sudo ufw allow in 1151
# DNS Abfrage
sudo ufw allow out 53
sudo ufw allow in 53
# Zugang zum Heimnetzwerk IPv4
sudo ufw allow out to 127.0.0.0/8
sudo ufw allow in to 127.0.0.0/8
sudo ufw allow out to 10.0.0.0/8
sudo ufw allow in to 10.0.0.0/8
sudo ufw allow out to 172.16.0.0/12
sudo ufw allow in to 172.16.0.0/12
sudo ufw allow out to 192.168.0.0/16
sudo ufw allow in to 192.168.0.0/16
sudo ufw allow out to 224.0.0.0/24
sudo ufw allow in to 224.0.0.0/24
sudo ufw allow out to 239.0.0.0/8
sudo ufw allow in to 239.0.0.0/8
# Zugang zum Heimnetzwerk IPv6 NICHT AUSGEFÜHRT
#sudo ufw allow out to fe80::/64
#sudo ufw allow in to fe80::/64
#sudo ufw allow out to ff01::/16
#sudo ufw allow in to ff01::/16
#sudo ufw allow out to ff02::/16
#sudo ufw allow in to ff02::/16
#sudo ufw allow out to ff05::/16
#sudo ufw allow in to ff05::/16
# UFW starten
sudo ufw enable

Außerdem habe ich IPv6 deaktiviert auf der VM:


Bearbeitung der Datei sudo nano /etc/sysctl.conf:

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1


Irgendwie mit iptables rumgespielt habe ich nicht... nur:

Code:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

sudo iptables -A FORWARD -o tun0 -i ens33 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A POSTROUTING -t nat -j MASQUERADE

sudo iptables-save | sudo tee /etc/iptables.sav

#/etc/sysctl.conf -> folgende line "unkommentiert": net.ipv4.ip_forward=1
 
Zuletzt bearbeitet:
Klammer das VPN erstmal außen vor und versuche die VM als herkömmlichen Router zu betreiben.

IP-Forwarding hast du ja schon aktiviert, das ist schon mal die Grundvoraussetzung.
 
Wieso iptables zusätzlich ufw?

Poste mal bitte den Output von einem "iptables -S".
Alternativ mal iptables deaktivieren und erneut probieren.
 
Raijin schrieb:
Klammer das VPN erstmal außen vor und versuche die VM als herkömmlichen Router zu betreiben.

IP-Forwarding hast du ja schon aktiviert, das ist schon mal die Grundvoraussetzung.

Gute Idee. Dann kann man die Fehlerquelle etwas eingrenzen. Mache es später.

neo253 schrieb:
Wieso iptables zusätzlich ufw?

Poste mal bitte den Output von einem "iptables -S".
Alternativ mal iptables deaktivieren und erneut probieren.

Naja die UFW habe ich konfiguriert damit die Linux VM leaklos nurmehr über die VPN-Verbindung ins Internet kommt.

iptables -S mache ich dann am Abend wenn ich zuhause bin.

Dachte, es benötigt iptables um die Pakete richtig zu tunneln? Oder reicht da einfach die Aktivierung des IP-Forwarding.

Danke schonmal!

$ iptables -S

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT DROP
-N ufw-after-forward
-N ufw-after-input
-N ufw-after-logging-forward
-N ufw-after-logging-input
-N ufw-after-logging-output
-N ufw-after-output
-N ufw-before-forward
-N ufw-before-input
-N ufw-before-logging-forward
-N ufw-before-logging-input
-N ufw-before-logging-output
-N ufw-before-output
-N ufw-logging-allow
-N ufw-logging-deny
-N ufw-not-local
-N ufw-reject-forward
-N ufw-reject-input
-N ufw-reject-output
-N ufw-skip-to-policy-forward
-N ufw-skip-to-policy-input
-N ufw-skip-to-policy-output
-N ufw-track-forward
-N ufw-track-input
-N ufw-track-output
-N ufw-user-forward
-N ufw-user-input
-N ufw-user-limit
-N ufw-user-limit-accept
-N ufw-user-logging-forward
-N ufw-user-logging-input
-N ufw-user-logging-output
-N ufw-user-output
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-after-logging-output -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-forward -j ufw-user-forward
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ufw-before-input -j ufw-not-local
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw-before-input -j ufw-user-input
-A ufw-before-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -j ufw-user-output
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-skip-to-policy-forward -j DROP
-A ufw-skip-to-policy-input -j DROP
-A ufw-skip-to-policy-output -j DROP
-A ufw-user-input -i tun0 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 148 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 148 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 149 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 149 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 150 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 150 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 151 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 151 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 1148 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 1148 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 1149 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 1149 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 1150 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 1150 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 1151 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 1151 -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 53 -j ACCEPT
-A ufw-user-input -p udp -m udp --dport 53 -j ACCEPT
-A ufw-user-input -d 127.0.0.0/8 -j ACCEPT
-A ufw-user-input -d 10.0.0.0/8 -j ACCEPT
-A ufw-user-input -d 172.16.0.0/12 -j ACCEPT
-A ufw-user-input -d 192.168.0.0/16 -j ACCEPT
-A ufw-user-input -d 224.0.0.0/24 -j ACCEPT
-A ufw-user-input -d 239.0.0.0/8 -j ACCEPT
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT
-A ufw-user-output -o tun0 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 148 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 148 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 149 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 149 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 150 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 150 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 151 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 151 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 1148 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 1148 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 1149 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 1149 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 1150 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 1150 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 1151 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 1151 -j ACCEPT
-A ufw-user-output -p tcp -m tcp --dport 53 -j ACCEPT
-A ufw-user-output -p udp -m udp --dport 53 -j ACCEPT
-A ufw-user-output -d 127.0.0.0/8 -j ACCEPT
-A ufw-user-output -d 10.0.0.0/8 -j ACCEPT
-A ufw-user-output -d 172.16.0.0/12 -j ACCEPT
-A ufw-user-output -d 192.168.0.0/16 -j ACCEPT
-A ufw-user-output -d 224.0.0.0/24 -j ACCEPT
-A ufw-user-output -d 239.0.0.0/8 -j ACCEPT
 
Zuletzt bearbeitet:
versuch mal im virtual network editor den adapter für den bridged mode manuell auszüwählen. also nicht "automatic"
soviel ich weiß macht die automatische einstellung ab und an probleme
 
jiraticket schrieb:
versuch mal im virtual network editor den adapter für den bridged mode manuell auszüwählen. also nicht "automatic"
soviel ich weiß macht die automatische einstellung ab und an probleme

Schon probiert... Hilft leider nicht :(

Weiß jemand ob meine iptables passen?
 
Zurück
Oben