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
openswan ipsec mit iptables / firewall / routing problem
- 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
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: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.
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
...
--
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
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