This is known issue (for me), and it was superficially discussed on IRC at some 
point. It wasn't considered significant to implement block-outside-dns for
multiple connections.

Is there ahy reason to use block-outside-dns on multiple connections? Just 
asked supergregg (bug reporter), he probably has a reason if he created the bug.

On 08/06/2016 07:04 AM, Selva Nair wrote:
> Hi,
>
> It has been reported (Trac 718) that --block-outside-dns on multiple tunnels 
> blocks all DNS traffic. My tests appear to confirm this.
>
> Apparently this is due to each openvpn instance adding filters to independent 
> sublayers. With two tunnels we get port 53 filters in two sublayers:
>
> sublayer 1: permit openvpn, permit tap1, block all  (in that order)
> sublayer 2: permit openvpn, permit tap2, block all
>
> Filter arbitration works roughly like this: filters in each sublayer are 
> parsed in order of priority and stops at the first match. Then the result 
> from all
> sublayers are considered in order of priority in determining the final 
> action: a block is final and by default a permit may be overridden by block 
> in lower
> priority sublayers. So for traffic through tap1, we get permit from sublayer 
> 1 and block from sublayer 2 leading to a block etc. 
>
> This could partially mitigated by making the permit tap1/tap2 filters hard 
> (they are soft by default -- i.e may be overridden). I say partially because 
> only
> one of the "permit tap" filters can be thus protected.
>
> I see two ways to allow dns traffic through all tunnels for which 
> --block-outside-dns is set
>
> 1. Add all filters to a the default sublayer  --- this is the easiest option 
> but not ideal: cluttering the default sublayer with custom filters may not 
> not be
> considered a good practice.
>
> 2. Add all filters to a common custom sublayer. This requires a pre-defined 
> UUID that could be used to define the sublayer and shared between all 
> instances of
> openvpn.
>
> For UUID,
> (a) generate a machine-specific UUID at install time, save in the registry 
> and use it as the sublayer key
>
> OR
>
> (b) hard code a UUID in the executable and use it as the sublayer key
>
> I prefer (b) as its simpler.
>
> Note that each additional instances will add duplicate filters like "permit 
> openvpn" or a low priority "block all". This is required as these filters are
> added in a dynamic session so that they disappear if the process terminates 
> or crashes without removing the filters. As parsing filters within a sublayer
> stops as soon as a match (permit or block)  is found, no performance penalty 
> is expected. In any case it will have less overhead than the current situation
> with multiple sublayers.
>
> Any suggestions?
>
> Selva
>
>
> ------------------------------------------------------------------------------
>
>
> _______________________________________________
> Openvpn-devel mailing list
> Openvpn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to