iptables vpn problem

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
tschmi1988
Beiträge: 5
Registriert: 29.12.2015 17:01:05

iptables vpn problem

Beitrag von tschmi1988 » 29.12.2015 17:07:54

hey,

darf ich euch bitten mir zu helfen?

Ich habe hier folgende Situation:
  • Netzwerk: 192.168.30.0/24
    Debian1: Nic 0 --> 192.168.30.88/24
    Debian1: tun 0 --> 192.168.0.229/32 (per VPN connected)
    Debian2: Nic 0 --> 192.168.30.99/24
Ich möchte nun die IP Adresse 192.168.30.99/24 auf die tun0 nic mappen, bzw. forwarden. Dazu habe ich x beliebige Konstruktionen mit iptables & co. gebaut, aber keine hat zum Erfolg geführt.

Könntet ihr mir bitte bei den NAT, bzw. Forward Regeln helfen? Ich weiß leider überhaupt nicht mehr weiter, auch diese Anleitung hier hat mir nicht geholfen: https://kindlund.wordpress.com/2007/11/ ... -in-linux/

Code: Alles auswählen

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 

echo "1 admin" >> /etc/iproute2/rt_tables

ip route add 192.168.0.229/32 dev tun0 src 192.168.0.229 table admin
ip route add default via 192.168.0.229 dev tun0 table admin
ip rule add from 192.168.30.88/24 table admin
ip rule add to 192.168.30.88/24 table admin
thx, gruß

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: iptables vpn problem

Beitrag von heisenberg » 29.12.2015 17:45:49

Ich möchte nun die IP Adresse 192.168.30.99/32 auf die tun0 nic mappen, bzw. forwarden.
Ich verstehe nicht, was Du versuchst zu erreichen. Kannst Du das bitte genauer erläutern, wofür die IP-Adresse 192.168.30.99 da ist, bzw. was das Ziel deiner Aktionen ist?

Möchtest Du von Rechner Debian2 auf das das entfernte VPN zugreifen?

tschmi1988
Beiträge: 5
Registriert: 29.12.2015 17:01:05

Re: iptables vpn problem

Beitrag von tschmi1988 » 29.12.2015 19:15:18

Ich möchte von Debian 2 über das VPN aufs Internet zugreifen.

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: iptables vpn problem

Beitrag von heisenberg » 29.12.2015 19:44:03

Ich habe das auch noch nicht umgesetzt, vermute aber zwei mögliche Fehler:

Code: Alles auswählen

ip route add default via 192.168.0.229 dev tun0 table admin
IMHO sollte da nicht die .229 stehen sondern die remote-vpn-endpoint-ip.
Du gibst ja als Gateway nicht Deine eigene IP an!

Code: Alles auswählen

ip rule add from 192.168.30.88/24 table admin
ip rule add to 192.168.30.88/24 table admin
Die 2 obigen Zeilen könnten funktionieren. Ich würde aber als Ziel
entweder Host+Host-CIDR(192.168.30.99/32)
oder Netz+CIDR(192.168.30.0/24) angeben.

tschmi1988
Beiträge: 5
Registriert: 29.12.2015 17:01:05

Re: iptables vpn problem

Beitrag von tschmi1988 » 29.12.2015 19:58:11

Danke für deine Hilfe, leider funktioniert es trotz dieser Änderungen nicht.

Ggf. liegt es daran, dass vpnc eine Client to Server Lösung ist. Von Debian 1 kann ich problemlos in das VPN Netz routen, bzw. über die Einstellungen auch die default route komplett über's vpn setzen. Ich muss eben genau das über Debian 1 von Debian 2 können ... Da fehlt mir aber leider das Wissen darüber was ich wo einrichten muss.

thx

dufty2
Beiträge: 1714
Registriert: 22.12.2013 16:41:16

Re: iptables vpn problem

Beitrag von dufty2 » 29.12.2015 22:28:19

heisenberg hat geschrieben: IMHO sollte da nicht die .229 stehen sondern die remote-vpn-endpoint-ip.
Du gibst ja als Gateway nicht Deine eigene IP an!
Das ist ein POINTOPOINT-Teil (deshalb auch die /32-Netzmaske) und läuft ein bischen anders,
als man es vielleicht sonst gewöhnt ist.

@tschmi1988
Die Default-route auf Debian2 vom Router auf Debian1 hast Du schon umgestellt?
Und warum bist Du der Meinung, man bräuchte noch eine 2. Default-Route auf Debian1?

Benutzeravatar
heisenberg
Beiträge: 4146
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: iptables vpn problem

Beitrag von heisenberg » 29.12.2015 22:59:44

Ich habe das gerade mal nachgestellt. Funktioniert wunderbar.

a) Rechner vm1(vpn-server): eth0: 1.2.3.4/29 tun0: 10.8.0.1
Dieser Rechner ist der Ausstiegspunkt im Internet.

Code: Alles auswählen

iptables -t nat -o eth0 -A POSTROUTING  -j MASQUERADE
b) Rechner vm2(vpn-client): eth0: 1.2.3.5/29 tun0: 10.8.0.2
Dieser Rechner ist der lokale default-Router und VPN-Client.

Code: Alles auswählen

echo 1 >/proc/sys/net/ipv4/ip_forward
echo "1 admin" >> /etc/iproute2/rt_tables
ip route add 10.8.0.0/30 dev tun0 src 10.8.0.2 table admin
ip route add default via 10.8.0.1 dev tun0 table admin
ip route add 1.2.3.0/29 dev eth0 src 1.2.3.5 table admin
ip rule add from 1.2.3.6/32 table admin
ip rule add to 1.2.3.6/32 table admin
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE 
c) Rechner vm3(lokaler Rechner): eth0 1.2.3.6/29
Ein normaler IP-Client, dessen Daten über VPN ins Internet geroutet werden sollen.
Ich habe hier erst mal nicht die Default-Route komplett gesetzt, sondern erst mal nur die Route zu 8.8.8.8(Google-DNS). Bei einer Fehlkonfiguration hätte ich mir sonst den Zugang zur VM gekillt.

Code: Alles auswählen

ip route add 8.8.8.8/32 via 1.2.3.5
---

Jetzt kann ich von VM3 zu 8,8.8.8 einen ping ausführen und sehe die Pakete via tcpdump am VPN-Server.

Update: Es hat kurz funktioniert. Vielleicht jetzt nicht mehr, da mir das icmp-redirect in die Suppe spuckt, weil alles in einem Netz ist.

Update-2: Das beenden des VPN-Clients hat mir die Routing-Table auf vm2 gelöscht. Ich musste diese erneut anlegen, dann geht's wieder.

tschmi1988
Beiträge: 5
Registriert: 29.12.2015 17:01:05

Re: iptables vpn problem

Beitrag von tschmi1988 » 30.12.2015 10:43:51

hey heisenberg,

das ist perfekt. Funktioniert wunderbar ;) Vielen vielen Dank ...

Ich habe gerade versucht zu verhindern, dass wenn der Tunnel nicht aufgebaut ist "vm3" überhaupt keinen Zugriff auf's Netzwerk haben darf.

Dazu habe ich ein virtuelles interface für das interne tranfsfer netz angelegt:

eth0:1 Link encap:Ethernet HWaddr b8:27:eb:d2:4c:d1
inet addr:1.2.3.5 Bcast:1.2.3.7 Mask:255.255.255.248
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0 geht ins lokale Netzwerk
eth1 ins Richtung Internet (default gw)

mit folgenden iptables hatte ich gedacht funktioniert mein Vorhaben:

Code: Alles auswählen

iptables -I FORWARD -i eth0:1 -o eth0 -j DROP
iptables -I FORWARD -i eth0:1 -o eth1 -j DROP
Leider nicht :( Diese Regel muss IMMER gelten, außer wenn der Tunnel aufgebaut ist.

Könntest du mir bitte nochmals helfen? thx

mat6937
Beiträge: 3415
Registriert: 09.12.2014 10:44:00

Re: iptables vpn problem

Beitrag von mat6937 » 30.12.2015 12:17:51

tschmi1988 hat geschrieben:
Dazu habe ich ein virtuelles interface für das interne tranfsfer netz angelegt:

...

mit folgenden iptables hatte ich gedacht funktioniert mein Vorhaben:

Code: Alles auswählen

iptables -I FORWARD -i eth0:1 -o eth0 -j DROP
Ich denke, iptables kann nicht zwischen eth0:1 und eth0 unterscheiden. Für iptables wird Beides, eth0 sein.
Debian 12.9 mit LXDE, OpenBSD 7.6 mit i3wm, FreeBSD 14.1 mit Xfce

tschmi1988
Beiträge: 5
Registriert: 29.12.2015 17:01:05

Re: iptables vpn problem

Beitrag von tschmi1988 » 30.12.2015 13:27:13

achso .... das erklärt einiges, sicherlich hängen da auch viele Fehler & Probleme der letzten Tage damit zusammen.

Aber egal: Ich habe mein Problem nun so lösen können:

Folgende Settings mit iptables erstellt:

Code: Alles auswählen


iptables -I INPUT -s 1.2.3.6 -j DROP
iptables -I OUTPUT -s 1.2.3.6 -j DROP

Diese werden nun anlog dieser Anleitung beim Booten hinzugefügt: https://www.debian-administration.org/a ... e_a_reboot
Dadurch wird der Traffic komplett gesperrt.


Da ich vpnc als VPN Client nutze gibt es dort die Möglichkeit in der Datei "vpnc-script-post-connect-action" folgendes Script vor dem Aufbau der VPN verbindung auszuführen:

Code: Alles auswählen


iptables -D INPUT -s 1.2.3.6 -j DROP
iptables -D OUTPUT -s 1.2.3.6 -j DROP

... (Code von heisenberg)


Ich lösche somit die Deny All Regeln und baue mit den routen & iptables Regeln von heisenberg die Verbindung zum VPN auf.


In das "vpnc-script-post-disconnect-action" habe ich dann noch folgendes eingebaut:

Code: Alles auswählen


iptables -I INPUT -s 1.2.3.6 -j DROP
iptables -I OUTPUT -s 1.2.3.6 -j DROP

Dadurch wird wieder der komplette Traffic unterbrochen.

Und nun funktioniert alles perfekt ;)

Danke für eure Hilfe ...

Antworten