Hi Jan,

I added the two lines and recompiled. It did not seem to solve this problem.
I think they are different problems as mine is that the client_disconnect
script does not get called at all and yours just affect the environment
variables when the script is called.

I can do some more testing if you want before I change my scripts and drop
the username-as-common-name option

Carlos


-----Mensaje original-----
De: Jan Just Keijser [mailto:janj...@nikhef.nl] 
Enviado el: jueves, 04 de noviembre de 2010 10:07
Para: Carlos Soto
CC: openvpn-devel@lists.sourceforge.net
Asunto: Re: [Openvpn-devel] Problem with client reconnect when using
username-as-common-name and username is blank

Hi Carlos,

this looks like a repeat of something reported on March 1st :

in multi.c the function multi_client_connect_setenv contains

1410   /* setenv incoming cert common name for script */
1411   setenv_str (mi->context.c2.es, "common_name", tls_common_name 
(mi->context.c2.tls_multi, true));

this is missing from the corresponding multi_client_disconnect_setenv 
function....

Unfortunately the openvpn-devel folks were unable to reproduce this 
error and hence no patch was not included. Can you try adding these two 
lines to "multi_client_disconnect_setenv" , rebuild openvpn and see if 
the problem goes away?

HTH,

JJK

Carlos Soto wrote:
> I have been having a very strange behavior with openvpn and I have finally
> found the source. I do not know if it is a bug or not so I will explain it
> and let the experts decide.
>
> I am using OpenVPN 2.1.3 in several openwrt routers connected with ADSL
with
> dynamic IPs. Every once in a client reconnects (normally because there is
a
> change in the IP). As I do not use the cn-duplicate, when the client
> reconnects, it first calls the client-disconnect script and then the
client
> connect. See log:
>
> Thu Nov  4 07:55:16 2010 XX.148.40.117:42335 [javier] Peer Connection
> Initiated with XX.148.40.117:42335
> Thu Nov 04 07:55:16 2010 XX.148.40.117:45483 openvpn_scripts:
> (CN=javier/cn=javier) start client-disconnect
> Thu Nov  4 07:55:16 2010 javier/XX.148.40.117:42335 TCP/UDP: Closing
socket
> Thu Nov  4 07:55:16 2010 MULTI: new connection by client 'javier' will
cause
> previous active sessions by this client to be dropped.  Remember to use
the
> --duplicate-cn option if you want multiple clients using the same
> certificate or username to concurrently connect.
> Thu Nov 04 07:55:16 2010 XX.148.40.117:42335 openvpn_scripts:
> (CN=javier/cn=javier) start client-connect
>
> openvpn_scripts are the log entries from my custom scripts that setup the
> iptables and routes. This is all the expected behavior.
>
> The problem comes when I activate the username-as-common-name option. When
> the client reconnects, the client-disconnect script does not get called
and
> only the client connect script gets called. The username is always blank
for
> this particular connection and CN. After the reconnection is done, there
is
> a timeout of the first connection because of the ping-restart option and
the
> client-disconnect script gets called. Here is the log
>
> Thu Nov  4 08:24:29 2010 XX.148.40.117:39056 TLS: Initial packet from
> XX.148.40.117:39056, sid=2b306f61 c6c30e51
> Thu Nov  4 08:24:33 2010 XX.148.40.117:39056 VERIFY OK: depth=1,
> /C=ES/ST=MAD/L=Madrid/O=CS/CN=CS_CA/emailAddress=xx@xxx
> Thu Nov  4 08:24:33 2010 XX.148.40.117:39056 VERIFY OK: depth=0,
> /C=ES/ST=MAD/L=Madrid/O=CS/CN=javier/emailAddress=xx@xxx
> Thu Nov 04 08:24:34 2010 XX.148.40.117:39056 openvpn_scripts:
> (CN=javier/cn=javier) start user-pass-verify
> Thu Nov  4 08:24:34 2010 XX.148.40.117:39056 TLS: Username/Password
> authentication succeeded for username '' [CN SET]
> Thu Nov  4 08:24:34 2010 XX.148.40.117:39056 Data Channel Encrypt: Cipher
> 'BF-CBC' initialized with 128 bit key
> Thu Nov  4 08:24:34 2010 XX.148.40.117:39056 Data Channel Encrypt: Using
160
> bit message hash 'SHA1' for HMAC authentication
> Thu Nov  4 08:24:34 2010 XX.148.40.117:39056 Data Channel Decrypt: Cipher
> 'BF-CBC' initialized with 128 bit key
> Thu Nov  4 08:24:34 2010 XX.148.40.117:39056 Data Channel Decrypt: Using
160
> bit message hash 'SHA1' for HMAC authentication
> Thu Nov  4 08:24:35 2010 XX.148.40.117:39056 Control Channel: TLSv1,
cipher
> TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
> Thu Nov  4 08:24:35 2010 XX.148.40.117:39056 [] Peer Connection Initiated
> with XX.148.40.117:39056
> Thu Nov 04 08:24:35 2010 XX.148.40.117:39056 openvpn_scripts: (CN=javier)
> start client-connect
> route: SIOCADDRT: File exists
> Thu Nov  4 08:24:35 2010 XX.148.40.117:39056 OPTIONS IMPORT: reading
client
> specific options from:
/tmp//openvpn_cc_9448a5143bd3e6786d2b8060da752fe5.tmp
> Thu Nov  4 08:24:35 2010 XX.148.40.117:39056 MULTI: Learn: 10.1.16.18 ->
> XX.148.40.117:39056
> Thu Nov  4 08:24:35 2010 XX.148.40.117:39056 MULTI: primary virtual IP for
> XX.148.40.117:39056: 10.1.16.18
> Thu Nov  4 08:24:35 2010 XX.148.40.117:39056 MULTI: internal route
> 10.2.0.0/16 -> XX.148.40.117:39056
> Thu Nov  4 08:24:35 2010 XX.148.40.117:39056 MULTI: Learn: 10.2.0.0/16 ->
> XX.148.40.117:39056
> Thu Nov  4 08:24:37 2010 XX.148.40.117:39056 PUSH: Received control
message:
> 'PUSH_REQUEST'
> Thu Nov  4 08:24:37 2010 XX.148.40.117:39056 SENT CONTROL [UNDEF]:
> 'PUSH_REPLY,route 10.1.16.1,topology net30,ping 10,ping-restart 60,route
> 10.1.0.0 255.255.0.0,ifconfig 10.1.16.18 10.1.16.17' (status=1)
> Thu Nov  4 08:24:45 2010 MULTI: Learn: 10.2.0.2 -> XX.148.40.117:39056
> Thu Nov  4 08:24:57 2010 XX.148.40.117:46554 [UNDEF] Inactivity timeout
> (--ping-restart), restarting
> Thu Nov  4 08:24:57 2010 XX.148.40.117:46554 SIGUSR1[soft,ping-restart]
> received, client-instance restarting
> Thu Nov 04 08:24:57 2010 XX.148.40.117:46554 openvpn_scripts: (CN=javier)
> start client-disconnect
> Thu Nov  4 08:24:57 2010 TCP/UDP: Closing socket
> Thu Nov  4 08:24:57 2010 XX.148.40.117:39056 MULTI: Learn: 10.2.0.2 ->
> XX.148.40.117:39056
>
> After this happens the VPN is still up and working but because of the out
of
> sequence call to the scripts the routes have been deleted and no traffic
> flows.
>
> Looking at the source code (but not having debugged it), I see that as the
> username is blank and that becomes the commonname, the call to
> tls_common_name 
> in multi_delete_dup will returns NULL and the iteration to close the
> instances do not get executed. Changing the second parameter of the two
> tls_common_name call to false may do the trick but I do not know  what
other
> side effects may have.
>
> I am going to avoid the whole issue by changing my scripts and dropping
the
> username-as-common-name option as it is a bit flaky especially when used
as
> I do where some connections have usernames/password authentications and
> other don“t and end up with blank common names.
>
> Regards
> Carlos
>
>
>
----------------------------------------------------------------------------
--
> The Next 800 Companies to Lead America's Growth: New Video Whitepaper
> David G. Thomson, author of the best-selling book "Blueprint to a 
> Billion" shares his insights and actions to help propel your 
> business during the next growth cycle. Listen Now!
> http://p.sf.net/sfu/SAP-dev2dev
> _______________________________________________
> Openvpn-devel mailing list
> Openvpn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel
>   




Reply via email to