openswan ipsec mit iptables / firewall / routing problem

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
leipy
Beiträge: 75
Registriert: 12.07.2004 21:21:40
Kontaktdaten:

openswan ipsec mit iptables / firewall / routing problem

Beitrag von leipy » 03.01.2005 22:06:01

Hallole !

Habe folgendes Problem mit Openswan 2.4-Kernel und IPTables als Firewall. Der IPSEC-Server ist gleichzeitig auch Internetgateway mit NAT.

Client:
LAN-IP 192.168.1.2/24
Nutzt NAT-ADSL-Router IP 192.168.1.1 (NAT wird von NAT-Traversal korrekt erkannt)
Openswan 2.2 Kernel 2.6 (native IPSEC)

Verbindung übers Internet zu meinem IPSEC-Gateway (2 LAN-cards, eine ins LAN, eine zum ADSL-Modem, IPTables) mit Openswan 2.1.4 (Kernel 2.4) LAN IP des Gateways: 192.168.0.30/24, ist gleichzeitig Gateway (NAT) für mein 192.168.0.0/24-LAN.

Die Verbindung steht mit IPSEC-SA established mit NAT-T (UDP Port 4500)

Problem: Der Server kann den Client über seine LAN-IP erreichen, nur andersrum gehts net. Der Client kann den Server nicht über die LAN-IP erreichen. Der Client hat keine Firewall auf seinem Rechner installiert.

In der Routing-Tabelle des Servers ist das LAN des Clients korrekt mit dem Interface ipsec0 eingetragen. Das müsste so passen
Aber beim Client existiert so ein eintrag nicht.

Möglich wäre ein Fehler im IPTables-Skript. Aber der fehlende Routing-Eintag auf der Client-Seite wäre auch eine Fehlermöglichkeit. Untestehend das IPTables-Skript und die ipsec.conf des Clients und des Servers. Es werden PSKs und dyndns-Adressen genutzt.

Die Verbindung kam erst zustande, nachdem ich in der server-config unter leftnexthop den Gateway meines Providers eingetragen hatte. In der Client-Config gibts einen solchen Eintrag nicht, wenn ich dort den gateway des providers der clients eintrage, kommt die verbindung nicht mehr zustande, vermutlich weil dieser hinter einem ADSL-Hardware-Router sitzt.

Gibts eine Möglichkeit zum Protokollieren des ipsec-verkehrs über iptables (z. B. icmp protokollieren...)

Vielleicht kann mir hier jmd. weiterhelfen ?

Danke schonmal !
Grüssle
Stefan

Server-Config:
version 2

config setup
#interfaces="ipsec0=eth0"
nat_traversal=yes

conn %default
authby=secret
keyingtries=0

conn vm
left=vpnserver.dyndns.org
leftnexthop=213.20.223.153
right=%any
rightsubnet=192.168.1.0/24
auto=add
--------------------------------------------------------------------------------------------------------------
Client-Config:
version 2

config setup
#interfaces="ipsec0=eth0"
nat_traversal=yes

conn %default
authby=secret
keyingtries=0

conn vm
left=vpnserver.dyndns.org
right=%defaultroute
rightsubnet=192.168.1.0/24
auto=start
-------------------------------------------------------------------------------------------------------------
IPTABLES-Script on server-side
#IPSEC ISAKMP and NAT-T
$IPTABLES -A INPUT -p udp --dport 500 -j ACCEPT $IPTABLES -A OUTPUT -p udp --sport 500 -j ACCEPT $IPTABLES -A INPUT -p udp --dport 4500 -j ACCEPT $IPTABLES -A OUTPUT -p udp --sport 4500 -j ACCEPT #IPSEC ESP $IPTABLES -A INPUT -p 50 -j ACCEPT $IPTABLES -A OUTPUT -p 50 -j ACCEPT

#IPSEC-Interface
$IPTABLES -A INPUT -i ipsec0 -p esp -j ACCEPT $IPTABLES -A OUTPUT -o ipsec0 -p esp -j ACCEPT

$IPTABLES -A INPUT -i ipsec0 -p udp -j ACCEPT $IPTABLES -A OUTPUT -o ipsec0 -p udp -j ACCEPT $IPTABLES -A INPUT -i ipsec0 -p tcp -j ACCEPT $IPTABLES -A OUTPUT -o ipsec0 -p udp -j ACCEPT

$IPTABLES -A INPUT -i ipsec0 -p icmp -j ACCEPT $IPTABLES -A OUTPUT -o ipsec0 -p icmp -j ACCEPT

# forwarding von ipsec0 auf eth0 und zurück $IPTABLES -A FORWARD -i $IPSEC -o $LAN_INTERFACE -j ACCEPT $IPTABLES -A FORWARD -o $IPSEC -i $LAN_INTERFACE -j ACCEPT

#$IPTABLES -A INPUT -p ICMP -i $IPSEC -j ACCEPT #$IPTABLES -A OUTPUT -p ICMP -o $IPSEC -j ACCEPT # allow everything in that came through the tunnel $IPTABLES -A INPUT -i ipsec0 -j ACCEPT $IPTABLES -A OUTPUT -o ipsec0 -j ACCEPT

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Re: openswan ipsec mit iptables / firewall / routing problem

Beitrag von mistersixt » 04.01.2005 15:37:16

leipy hat geschrieben: In der Routing-Tabelle des Servers ist das LAN des Clients korrekt mit dem Interface ipsec0 eingetragen. Das müsste so passen
Aber beim Client existiert so ein eintrag nicht.
Bei Kernel-2.6 mit OpenSwan-2.2 gibt es kein ipsec-Interface mehr, wenn Du da was filtern willst, geht das nicht mehr per Interface, sondern musst die getunnelten Pakete markieren und dann eigene iptables-Schleifen durchlaufen, also zum Beispiel so in etwa:

Code: Alles auswählen

iptables -t mangle -A PREROUTING -i $EXTIF -p esp -j MARK --set-mark 1
iptables -A FORWARD -i $EXTIF -m mark --mark 1 -j IPSEC
...
iptables -A IPSEC -p TCP --syn -s 192.168.0.0/24 -j ACCEPT
iptables -A IPSEC -p icmp -s 192.168.0.0/24 -j ACCEPT
...
Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Antworten