Ich habe einen VPN-Server und in meinem Heimnetz einen Raspberry Pi, über den alle im LAN befindlichen Rechner in den VPN gehen. Mit einigen Geräten möchte ich auch von Unterwegs auf einen PC zugreifen.
Ich habe mit ipset auf dem VPN-Server eine Liste von IPs erstellt, die sowohl ins Internet, als auch ins LAN dürfen. Alle anderen IPs dürfen weder ins Internet, noch ins LAN. Der Befehl "ipset list vpn_allowed" zeigt diese IPs auch. Aktuell teste ich das mit meinem Handy, dessen IP ich zwischen 10.8.1.7 (erlaubte IP) 10.8.1.17 (verbotene IP) wechsele.
Der Rechner 192.168.178.24 soll auf den Ports 15002 und 15003 von allen IPs erreichbar sein.
Dies sind meine iptables auf dem VPN-Server:
sudo iptables -P INPUT ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -P FORWARD DROP sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A FORWARD -i tun1 -o ens6 -d 192.168.178.24 -p tcp --dport 15002 -j ACCEPT sudo iptables -A FORWARD -i tun1 -o ens6 -d 192.168.178.24 -p tcp --dport 15003 -j ACCEPT sudo iptables -A FORWARD -i tun1 -o ens6 -m set --match-set vpn_allowed src -j ACCEPT sudo iptables -A FORWARD -i tun1 -j DROP sudo iptables -A FORWARD -i tun0 -o ens6 -s 10.8.0.0/24 -j ACCEPT sudo iptables -A FORWARD -i ens6 -o tun0 -d 10.8.0.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i ens6 -o tun1 -d 10.8.1.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens6 -j MASQUERADE sudo iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o ens6 -j MASQUERADE
Hier die iptables meine Raspberrys:
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-ipforward.conf sudo sysctl --system sudo iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o tun1 -j ACCEPT sudo iptables -A FORWARD -i tun1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -i eth0 -p icmp -j ACCEPT sudo iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o tun1 -j ACCEPT sudo iptables -A FORWARD -i tun1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -L
In der ccd-Datei des Raspberry steht nichts drin, in der des Handys z.B. nur "ifconfig-push 10.8.1.7 255.255.255.0"
Test1: In der Server.conf hatte ich folgendes eingetragen:
route 192.168.178.0 255.255.255.0
Dann kommen sowohl erlaubte, als auch unerlaubte IPs ins LAN. Erlaubte kommen ins Internet, nicht erlaubte kommen nicht ins Internet. Das wäre so OK, abgesehen davon, dann erlaubte ins LAN sollen.
Test2: Trage ich folgendes in der Server.conf ein, kommt keinerlei Verbindung innerhalb des LANs zustand. Das bedeutet, ich kann z.B. vom Laptop den Raspberry nicht mehr erreichen:
route 192.168.178.0 255.255.255.0 push "route 192.168.178.0 255.255.255.0"
push "route 192.168.178.0 255.255.255.0" scheint kompletter Blödsinn zu sein, und habe ich ab hier nicht mehgr eingetragen.
Test3: Diese Zeile habe ich in die iptables hinzugefügt, um den Traffic unerlaubter IPs ins Lan zu unterbinden:
sudo iptables -A FORWARD -i tun1 -d 192.168.178.0/24 -m set ! --match-set vpn_allowed src -j DROP
Das Verhalten ist exakt gleich wie bei Test1 und Test2
Test4: Diese Zeile verhält sich wie Test3
sudo iptables -A FORWARD -i tun1 -d 192.168.178.0/24 -m set --match-set vpn_allowed src -j ACCEPT
Ich weiß, das sieht etwas nach wildem Rumgestocher aus, aber das waren Tips der KI, die aber nicht immer sinnvoll zu sein scheinen.
Ich drehe mich seit 3 Tagen im Kreis und auch ChatGPT widerspricht sich ständig. Ich denke ich bin nicht weit vom Ziel entfernt, aber ich stecke einfach fest. Ich wäre euch sehr dankbar, wenn ihr mir helfen könnt. Fehlende Informationen, schicke ich gerne nach. Ich halte nichts absichtlich zurück, aber ich sehe aktuell vor lauter Bäumen den Wald nicht.