[Openvpn-devel] [PATCH] Adds support for setting the default IPv6 gateway for routes using the route-ipv6-gateway option

2018-07-22 Thread James Bekkema
This patch adds support for setting the default IPv6 gateway for routes using 
the "route-ipv6-gateway” option.

Currently if users try to use the "redirect-gateway ipv6” option, or a IPv6 
route without a gateway, without using "ifconfig-ipv6" they’ll receive the 
message "OpenVPN ROUTE6: OpenVPN needs a gateway parameter for a --route-ipv6 
option and no default was specified by either --route-ipv6-gateway or 
--ifconfig-ipv6 options”.

However, the "route-ipv6-gateway” option doesn’t actually exist, and it is 
required for bridged/TAP setups relying on IPv6 auto-configuration for IP 
assignment. This patch adds the "route-ipv6-gateway” option. The gateway 
specified must be an IPv6 address, FQDNs are not supported (to match the 
behaviour of the other IPv6 related options).

Currently in production use in Viscosity for macOS and Windows, no reported 
issues.

Signed-off-by: James Bekkema 

Thanks,
James

--
James Bekkema
SparkLabs Developer
https://www.sparklabs.com
https://twitter.com/sparklabs
supp...@sparklabs.com


route-ipv6-gateway.diff
Description: Binary data
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel


[Openvpn-devel] [PATCH] Restore functionality of route-gateway's dhcp parameter

2018-07-22 Thread James Bekkema
This patch restores functionality of route-gateway's dhcp parameter, and 
expands it to support routes using vpn_gateway.

OpenVPN supports using a “dhcp” parameter for the "route-gateway” option, which 
involves intercepting the DHCP reply packet and extracting the gateway to use. 
However, the current implementation expects to have this information at the 
time of the initialisation of the route list, which will not happen, and so 
routes relying on this option are never added.

Rather than moving initialisation of the route list until after the route-delay 
(which can have a negative effect on the resolution of routes using FQDNs), 
this patch flags routes that require a DHCP gateway, and updates and defines 
them when a DHCP reply is received. If no reply is received in time, the routes 
are left undefined.

Currently in production use in Viscosity for macOS and Windows, no reported 
issues.

Signed-off-by: James Bekkema 

Thanks,
James

--
James Bekkema
SparkLabs Developer
https://www.sparklabs.com
https://twitter.com/sparklabs
supp...@sparklabs.com


route-gateway-dhcp.diff
Description: Binary data
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel


[Openvpn-devel] [PATCH] Resolves small IV_GUI_VER typo in the documentation

2018-07-22 Thread James Bekkema
According to the source code, the environment variable for the GUI version 
should be IV_GUI_VER, rather than IV_UI_VER. This patch simply fixes this small 
typo in the docs.

Signed-off-by: James Bekkema 

Thanks,
James

--
James Bekkema
SparkLabs Developer
https://www.sparklabs.com
https://twitter.com/sparklabs
supp...@sparklabs.com


doc-iv_ui_ver.diff
Description: Binary data
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel


Re: [Openvpn-devel] OpenVPN 2.4.3 released (with security fixes)

2017-06-21 Thread James Bekkema
> On 22 Jun 2017, at 7:06 am, David Sommerseth 
>  wrote:
> 
> - What can be done with Cloudflare to fully ensure their caches are
>  truly purged when we ask for it?  As Jonathan noticed, their caches
>  are tightly connected to the web browser and have a non-deterministic
>  behaviour across browsers, even on the same computer.

Cloudflare’s API supports clearing the cache (as does their web control panel), 
and this can be done on a file-by-file basis. Based on our experience it only 
takes around 15-20 seconds for the cache to be cleared on all of Cloudflare's 
CDN nodes for a file and it can be easily thrown into a release script.
https://api.cloudflare.com/#zone-purge-individual-files-by-url-and-cache-tags

As for some web browsers, proxy servers, etc. in-between the user and a 
Cloudflare node, they’re respecting the HTTP cache-control headers which are 
currently set to cache for 24 hours:

curl -I https://swupdate.openvpn.org/community/releases/openvpn-2.4.3.tar.gz
Expires: Fri, 23 Jun 2017 00:14:19 GMT
Cache-Control: public, max-age=86400

Of course, many proxy servers and web browsers have different approaches to 
handling caching headers (especially for zipped files), so you will get some 
differing behaviour. The best approach is to still have an appropriate caching 
time between nodes and the web server (24 hours is fine) so they don’t need to 
re-fetch the files too often, but then have a Cloudflare Page Rule to rewrite 
these with a lower time to clients (we use 4 hours) to limit the impact in the 
(hopefully rare) event of a file update being needed.
https://support.cloudflare.com/hc/en-us/articles/200168306-Is-there-a-tutorial-for-Page-Rules-#cache

The final cause of differing behaviour is that each Cloudflare node’s caching 
time of a file starts when that individual node first gets a request for it. 
But this can easily be ignored by just using the API to clear the cache of all 
nodes when needed.

> So I suggest we take a few weeks holiday, let this sink in, and then we
> can schedule a meeting some time in August where we discuss these
> issues.


Sorry to throw more noise at the mailing list, but I figured I’d put up some 
comments as IRC meeting times don’t usually align for those of us in Australia 
:-)

Regards,
James

--
James Bekkema
SparkLabs Developer
https://www.sparklabs.com
https://twitter.com/sparklabs
supp...@sparklabs.com
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel


Re: [Openvpn-devel] [PATCH] Add Mac OS X keychain support

2015-01-06 Thread James Bekkema
Hi All,

Just to expand on the comments Samuli included below:

From a GUI client like Viscosity’s perspective number 1) from Vasily's email is 
the option we’d take, and ultimately something we were planning on implementing 
and contributing a patch for down the line anyway (i.e. something similar to 
the existing --management-external-key option). While this means clients like 
Viscosity and Tunnelblick will need to implement the interaction with the 
Keychain directly, this isn’t any different to the existing password Keychain 
approach both clients have when using --management-query-passwords anyway).

I can also see such offloading being utilised on other platforms, and for 
integration with other security tools as well.

However I can understand that there may be some cases where it’s desirable to 
have headless Keychain support, for example, a sys admin may like to have a 
headless OpenVPN connection kick in at boot time. Will these users mind if they 
have to use the file system instead of the Keychain? I believe Tunnelblick 
supports a headless mode, and Viscosity probably will down the line too: is 
this sufficient for users wanting Keychain storage, or is direct support a 
reasonable expectation? I’m afraid I’m not in a position to be able to answer 
these questions: probably the best users to ask are those using the MacPorts 
build, along with those deciding on the desired scope of the community OpenVPN 
project.

Ultimately it looks like a lot of effort has gone into the Keychain patch, and 
if someone is willing to maintain the Keychain integration going forward (Apple 
does like to deprecate things) I don’t have any objection to it being included 
in some way (after a code review). While with a GUI like Viscosity may not make 
direct use of it, it may still be handy to others.

Cheers,
James

--
James Bekkema
SparkLabs Developer
http://www.sparklabs.com
http://www.twitter.com/sparklabs
supp...@sparklabs.com

> On 6 Jan 2015, at 8:08 pm, Samuli Seppänen  wrote:
> 
> 
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
> 
> 
>> Hi,
>> 
>> On Fri, Dec 12, 2014 at 19:24 +0100, Arne Schwabe wrote:
>>>> On Mon, Dec 08, 2014 at 14:52 +0300, Vasily Kulikov wrote:
>>>>> This patch adds support for using certificates stored in the Mac OSX
>>>>> Keychain to authenticate with the OpenVPN server.  This works with
>>>>> certificates stored on the computer as well as certificates on hardware
>>>>> tokens that support Apple's tokend interface.  The patch is very
> similar
>>>>> to, and also based on, the Windows Crypto API certificate functionality
>>>>> that currently exists in OpenVPN.
>> ...
>>>>> Signed-off-by: Vasily Kulikov 
>>>>> --
>>>> Any comments?
>> 
>> Some ideas about keychain implementation out of OpenVPN core.
>> 
>> I see 4 possible alternatives here:
>> 1) implement keychain rsa offloading in Tunnelblick
>> 2) make my patch use plugin interface
>> 3) implement external daemon that communicated with openvpn process via
>> management interface
>> 4) the same as 3) but make openvpn able to handle more than 1
>> management client
>> 
>> There are problems with all these alternatives:
>> (1) is limited to Tunnelblick users and doesn't work for users who start
>> openvpn from the terminal or use any other GUI
>> (2) implies plugin interface is expanded to handle two new actions: 'user
>> certificate request' and 'rsa-sign request'
>> (3) implies management interface is expanded to handle 'user certificate
>> request'; also it doesn't work with Tunnelblick or any other tool that
>> communicates with openvpn via management interface as MI currently
>> supports only a single client
>> (4) needs 'user certificate request' addition and expanding management
>> interface to support more than a single client
>> 
>> So, (1) is a no-go as it works only with Tunnelblick; (3) is a no-go as
>> it breaks Tunnelblick and probably someone else.  We stay with only two
>> interface expantions: plugin interface or management interface.  Either
>> (a) add 'user certificate request' to plugin interface or (b) add 'user
>> certificate request' to management interface and support more than a
>> single client.
>> 
>> I'm not sure which way is better.  Do you have any plans/objections on
>> these interfaces expantion?  Maybe I missed some critical limitations of
>> the interfaces and they must not be used this way?  If no strict
>> objections I'd prefer to implement it via plugin interface as my patch
>> would need to change only seve

[Openvpn-devel] [PATCH] Fix socket-flag/TCP_NODELAY on Mac OS X

2014-06-26 Thread James Bekkema
Hi All,

OpenVPN 2.3.4 will currently throw a warning of "NOTE: setsockopt TCP_NODELAY=1 
failed (No kernel support)” when attempting to use the TCP_NODELAY socket 
option on Mac OS X/Darwin. Kernel support is there, however the required header 
file where TCP_NODELAY is defined is not being included. This patch simply 
alters syshead.h to include  on Darwin platforms.


--- src/openvpn/syshead.h.orig  2014-05-01 21:12:22.0 +1000
+++ src/openvpn/syshead.h   2014-06-26 17:43:30.0 +1000
@@ -349,6 +349,14 @@
 
 #endif /* TARGET_DRAGONFLY */
 
+#ifdef TARGET_DARWIN
+
+#ifdef HAVE_NETINET_TCP_H
+#include 
+#endif
+
+#endif /* TARGET_DARWIN */
+
 #ifdef WIN32
 #include 
 #include 


Tested under 10.7 to 10.10dp2. "Socket flags: TCP_NODELAY=1 succeeded” when 
running with debug enabled. In addition the latest beta version of Viscosity is 
using a copy of OpenVPN with this patch applied: no issues have been reported 
from testers thus far.

Regards,
James

--
James Bekkema
SparkLabs Developer
http://www.sparklabs.com
http://www.twitter.com/sparklabs
supp...@sparklabs.com