PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VPN Gateway mit StrongSwan



MeOut
27.01.12, 01:22
Hallo Forum.

Folgendes habe ich vor: Ein vServer mit einem Interface und fester öffentlicher IP soll zu einem VPN Gateway werden. Das Gateway selbst hat kein eigenes Subnet es dient lediglich als Verbindung zwischen Road-warrior in Form von Notebooks, Smartphones usw. Auch diese ohne eigenes Subnet dahinter. Außerdem sollen auch noch Road-warrior in Form von UMST Routern verbunden werden. Diese mit Subnetzen dahinter. Und alle sollen sich untereinander erreichen können.

Wenn das denn überhaupt möglich ist.

Erst die configs:


# strongswan.conf - strongSwan configuration file

charon {

# number of worker threads in charon
threads = 16

# plugins to load in charon
#load = aes des sha1 md5 sha2 hmac gmp random pubkey xcbc x509 stroke random curl sqlite attr-sql kernel-netlink

dns1 = 78.46.160.19
nbns1 = 78.46.160.19

plugins {

sql {
# loglevel to log into sql database
loglevel = -1

# URI to the database
database = sqlite:///root/CA/pool.db
# database = mysql://user:password@localhost/database
}
}

# ...
}

pluto {

# plugins to load in pluto
# load = aes des sha1 md5 sha2 hmac gmp random pubkey

}

libstrongswan {

# set to no, the DH exponent size is optimized
# dh_exponent_ansi_x9_42 = no
}




# basic configuration

config setup
cachecrls=yes
charonstart=yes
plutostart=no
strictcrlpolicy=no
uniqueids=no

# Add connections here.

conn %default
keyexchange=ikev2
ikelifetime=3h
keylife=1h
rekeymargin=9m
rekeyfuzz=100%
keyingtries=3
# always use certificates
authby=rsasig
# Left
left=%defaultroute
leftnexthop=%defaultroute
leftsubnet=0.0.0.0/0
leftid="C=DE, ST=SH, O=O, OU=OU, CN=78.46.160.19"
leftcert=local-cert.pem
leftfirewall=yes
# Right
rightrsasigkey=%cert
auto=add
# DPD
dpdaction=clear
dpddelay=30s
dpdtimeout=150s

conn rw
right=%any
rightsourceip=10.1.0.0/24

conn router05
right=%any
rightid="C=DE, ST=SH, O=O, OU=OU, CN=router05"
rightsourceip=172.32.50.1
rightsubnet=172.32.50.0/24

conn router11
right=%any
rightid="C=DE, ST=SH, O=O, OU=OU, CN=router11"
rightsourceip=172.32.110.1
rightsubnet=172.32.110.0/24



Folgendes geht:

Eine CA ist vorhanden und es können Zertifikate für WIN7 und Linux und LCOS erstellt werden. Ein WIN7 Client kann auch verbinden. Einer hinter NAT und ein UMTS Notebook habe ich getestet. Hier gibt es noch ein Problem mit dem "reauthenticate" das bleibt leider aus. Dazu ein Log:


Jan 27 00:29:37 Ubuntu-1004-lucid-32-minimal charon: 15[IKE] initiator did not reauthenticate as requested
Jan 27 00:29:37 Ubuntu-1004-lucid-32-minimal charon: 15[IKE] IKE_SA will timeout in 3 minutes
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal charon: 12[IKE] deleting IKE_SA rw[1] between 78.46.160.19[C=DE, ST=SH, O=O, OU=OU, CN=78.46.160.19]...46.142.160.161[C=DE, ST=SH, O=O, OU=OU, CN=ICE]
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal charon: 12[IKE] sending DELETE for IKE_SA rw[1]
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal charon: 12[ENC] generating INFORMATIONAL request 6 [ D ]
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal charon: 12[NET] sending packet: from 78.46.160.19[4500] to 46.142.160.161[55006]
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal charon: 14[NET] received packet: from 46.142.160.161[55006] to 78.46.160.19[4500]
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal charon: 14[ENC] parsed INFORMATIONAL response 6 [ ]
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal charon: 14[IKE] IKE_SA deleted
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal vpn: - C=DE, ST=SH, O=O, OU=OU, CN=ICE 10.1.0.1/32 == 46.142.160.161 -- 78.46.160.19 == 0.0.0.0/0
Jan 27 00:32:37 Ubuntu-1004-lucid-32-minimal charon: 14[CFG] lease 10.1.0.1 by 'C=DE, ST=SH, O=O, OU=OU, CN=ICE' went offline
J


Hierzu habe ich noch keinen Ansatz, da ich es eben erst gesehen habe. Setze ich außerdem noch:

iptables -t nat -A POSTROUTING -o eth0 -s 10.1.0.0/24 -j SNAT --to 78.46.160.19
komme ich auch mit einem verbundenen Client weiter durch den Server dann ins Netz. Zur Zeit gibt es keine weiteren FW Regeln außer die durch ipsec beim Verbinden selbst erstellten.

Was noch nicht geht:

Zur Zeit ist es nicht möglich vom 1. RW zum 2. RW zu pingen, obwohl diese alle das gleiche Subnet 10.1.0.0/24 bekommen. Diese IPs werden auch beim Verbinden dynamisch zugewiesen. Ich bin mir nicht sicher, ob es hierbei um Bridging oder Routing geht.

Außerdem kann ich zur Zeit keinen UMTS Router(hier LANCOM(OS: LCOS) und TDT(OS:Linux/OpenSwan) getestet) dazu bringen das GW überhaupt zu erreichen. Soll hießen hier kommt die Meldung im Log:


Jan 27 00:52:56 router05 pluto[12625]: "BlaFasel" #39: initiating Main Mode
Jan 27 00:53:40 router05 Connection_Manager[774]: Connection-Entry 1, Logical-Entry 1: Unable to establish IPSec-connection!
Jan 27 00:53:40 router05 Connection_Manager[774]: Connection-Entry 1, Logical-Entry 1: connection could not be established!
Jan 27 00:53:40 router05 Connection_Manager[774]: Connection-Entry 1, Logical-Entry 1: Disconnecting!
Jan 27 00:53:40 router05 pluto[12625]: "BlaFasel": terminating SAs using this connection
Jan 27 00:53:40 router05 pluto[12625]: "BlaFasel" #39: deleting state (STATE_MAIN_I1)
Jan 27 00:53:40 router05 pluto[12625]: "BlaFasel": deleting connection
Jan 27 00:53:43 router05 pluto[12625]: loading certificate from /etc/certs/certs/router05-cert.pem
Jan 27 00:53:43 router05 pluto[12625]: loaded host cert file '/etc/certs/certs/router05-cert.pem' (1454 bytes)
Jan 27 00:53:43 router05 pluto[12625]: added connection description "BlaFasel"
Jan 27 00:53:43 router05 pluto[12625]: "BlaFasel" #40: initiating Main Mode


Auf dem GW rührt sich nichts. Hier die Konfig eines TDT UMTS Routers mit OpenSwan.



################################################## ###################
# #
# This configuration-file was automatically created by TDT-Webmin #
# Do not edit!!! #
# #
################################################## ###################
#GLOBAL SETTINGS:
version 2.0

config setup
interfaces=%defaultroute
nat_traversal=yes
oe=no
protostack=klips
syslog=daemon.err
virtual_private=%v4:172.32.50.0/24;%v4:172.32.51.0/24

#Default-Connection:
conn %default
aggrmode=no
authby=secret
auto=ignore
compress=no
dpdaction=clear
dpddelay=30
dpdtimeout=120
ike=aes128-sha1-modp1024
ikelifetime=3h
initialcontact=no
keyingtries=3
keylife=1h
left=%ppp0
pfs=yes
phase2=esp
phase2alg=3des-sha1;modp1024
rekey=yes
rekeyfuzz=100%
rekeymargin=3m
type=tunnel


conn BlaFasel
aggrmode=no
authby=rsasig
auto=ignore
compress=no
dpdaction=clear
dpddelay=30
dpdtimeout=120
ike=aes128-sha1-modp1024
ikelifetime=8h
initialcontact=no
keyingtries=3
keylife=8h
left=%ppp0
leftcert="/etc/certs/certs/router05-cert.pem"
leftid="/C=DE/ST=SH/O=O/OU=OU/CN=router05"
leftrsasigkey=%cert
leftsourceip=172.32.50.1
leftsubnet="172.32.50.0/24"
pfs=yes
phase2=esp
phase2alg=3des-sha1;modp1024
rekey=yes
rekeyfuzz=100%
rekeymargin=3m
right=78.46.160.19
rightid="/C=DE/ST=SH/O=O/OU=OU/CN=Certification Authority"
rightrsasigkey=%cert
type=tunnel

#Include All the Templates


Ich hatte mir als nächsten Schritt vorgestellt das Routing auf dem GW zu testen, bzw. zu erstellen. Aber dazu müsste ich es wenigstens mit einem Router mal schaffen darauf zu verbinden. Die Router selbst können das. Das haben diese in der Vergangenheit an einer Cisco PIX gezeigt. Wobei das OpenSwan sich dabei nicht als sehr stabil erwiesen hat. Dennoch funktionierten beide Router.

Hat jemand eine Idee wieso zwei unterschiedliche UMTS Router mit unterschiedlichen Implementierungen von IPSec mit dem gleichen Ergebnis aufwarten? Nämlich, dass in beiden Fällen nicht ein Packet das GW erreicht.

MeOut
27.01.12, 18:44
Ok, ich habe noch einmal mit dem TDT Router experimentiert also OpenSwan. Mit folgendem Ergebnis. Ein tcpdump zeigt, das die SA_INIT Packete doch am GW ankommen. Nur erfolgt leider keine Antwort drauf.

Hat jemand eine Idee warum das so ist?

Der GW ist ein vServer bei Hetzner und hat laut Routine auch ein Gateway. Liegt das evtl. Am vServer selbst oder dran, das er eben auch hinter einem Router liegt?

derRichard
27.01.12, 22:12
hi!

ohne jetzt alles gelesen zu haben behaupte ich, dass es am vserver liegt.
was ist das für ein typ von vserver?

ipsec wird im kernel gemacht, je nach vserver schaut es da schlecht aus...

//richard

MeOut
27.01.12, 23:49
Naja, ist ein VQ7 von Hetzner. Kernel:

Linux blafasel 2.6.32-37-generic-pae #81-Ubuntu SMP Fri Dec 2 22:24:22 UTC 2011 i686 GNU/Linux
Eigentlich sind die vServer von Hetzner ja recht, wie soll ich sagen, transparent.:confused:
Und vor allem es geht ja mit einem WIN7 Client hinter NAT und einem WIN7 Client per UMTS. Allerdings macht der Router OpenSwan mit pluto. Also evtl. IKEv1 und da brauchts doch einen nexthop, oder?

MeOut
28.01.12, 00:03
Wofür steht
%defaultroute?

Ist es die eigene öffentliche IP oder das Gateway der defaultroute?

MeOut
28.01.12, 00:09
Hier der dump vom GW:

root@blafasel ~ # tcpdump -n port 500
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
00:07:30.773456 IP 2.203.73.165.500 > 78.46.160.19.500: isakmp: phase 1 I ident
00:07:40.778003 IP 2.203.73.165.500 > 78.46.160.19.500: isakmp: phase 1 I ident
00:08:00.779512 IP 2.203.73.165.500 > 78.46.160.19.500: isakmp: phase 1 I ident
00:08:40.800766 IP 2.203.73.165.500 > 78.46.160.19.500: isakmp: phase 1 I ident
00:08:50.808795 IP 2.203.73.165.500 > 78.46.160.19.500: isakmp: phase 1 I ident
00:09:10.816789 IP 2.203.73.165.500 > 78.46.160.19.500: isakmp: phase 1 I ident

derRichard
28.01.12, 00:11
dein ikev1 server antwortet einfach nicht. firewall?

aber das kann viele gründe haben.
teste als erste mal ein einfaches normales setup.
später kannst du dann mit so dingen wie nat-t anfangen.

//richard

MeOut
28.01.12, 00:15
Der der nicht antwortet ist das GW mit StrongSwan und IKEv2. Der Client, hier TDT mit OpenSwan nutzt scheinbar noch pluto, also IKEv1.

NAT-T ist ne Überlegung, aber der GW vor dem vServer nattet ja eigentlich nicht.

derRichard
28.01.12, 00:16
Der der nicht antwortet ist das GW mit StrongSwan und IKEv2. Der Client, hier TDT mit OpenSwan nutzt scheinbar noch pluto, also IKEv1.


teste das alles mal schritt für schritt.
sonst wird das ein reines gerate...

//richard

MeOut
28.01.12, 00:17
Der UMTS Router sagt dann natürlich:


Jan 28 00:07:24 router05 pluto[21134]: loaded private key for keyid: PPK_RSA:AwEAAdGbH
Jan 28 00:07:30 router05 pluto[21134]: "BlaFasel" #1: initiating Main Mode
Jan 28 00:08:40 router05 pluto[21134]: "BlaFasel" #1: max number of retransmissions (2) reached STATE_MAIN_I1. No response (or no acceptable response) to our first IKE messa
Jan 28 00:08:40 router05 pluto[21134]: "BlaFasel" #1: starting keying attempt 2 of at most 3, but releasing whack
Jan 28 00:08:40 router05 pluto[21134]: "BlaFasel" #2: initiating Main Mode to replace #1
Jan 28 00:09:50 router05 pluto[21134]: "BlaFasel" #2: max number of retransmissions (2) reached STATE_MAIN_I1. No response (or no acceptable response) to our first IKE messa
Jan 28 00:09:50 router05 pluto[21134]: "BlaFasel" #2: starting keying attempt 3 of at most 3
Jan 28 00:09:50 router05 pluto[21134]: "BlaFasel" #3: initiating Main Mode to replace #2
Jan 28 00:10:01 router05 /usr/sbin/cron[31952]: (root) CMD (/usr/sbin/logrotate /etc/logrotate.conf)
Jan 28 00:11:00 router05 pluto[21134]: "BlaFasel" #3: max number of retransmissions (2) reached STATE_MAIN_I1. No response (or no acceptable response) to our first IKE messa
:mad:

MeOut
29.01.12, 15:06
Hm, also ganz ehrlich.

Ich weiß nicht was Du meinst. Hast Du denn alles gelesen? Ich bin Schritt für Schritt voran gegangen und nun ist der Schritt mit den UMTS Routern dran.

Da kann ich mit Deinem Hinweis jetzt nichts anfangen.

Evtl. kannst Du das ja etwas genauer spezifizieren.