public inbox for development@lists.ipfire.org
 help / color / mirror / Atom feed
From: Matthias Fischer <matthias.fischer@ipfire.org>
To: development@lists.ipfire.org
Subject: Re: Forcing DNS/NTP V2 - new approach
Date: Wed, 06 Jan 2021 19:32:59 +0100	[thread overview]
Message-ID: <26281959-0376-1a56-0533-cd5155fbaf32@ipfire.org> (raw)
In-Reply-To: <4591cbaf45618f11565250305b4300b1e65cc726.camel@ipfire.org>

[-- Attachment #1: Type: text/plain, Size: 3612 bytes --]

On 06.01.2021 16:50, Stefan Schantl wrote:
> Hello Matthias,

Hi Stefan,

> in general I like the possibility to force the usage of the local DNS
> server by just redirecting all queries to it. This is way more elegant
> instead of blocking the requests to any nameservers by firewall rules,
> except the local unbound to force it's usage.
> 
> I reviewed your last patch and want to give you some thoughts - may the
> can help you:

>> ...

>> For me - and of course for everybody who uses IPSec or QoS - this is
>> a
>> showstopper. Saving the affected - temporary rules - is too
>> complicated
>> (for me). I'm trying to make this as simple as possible.
>> 
> 
> Yes, this is the reason, why reloading / restarting the whole firewall
> should be avoided if possible.

I completely dropped this - got a new solution which works, but it could
be better. It still uses a new init-file as mentioned below.

>> So I'm thinking about separating the DNS/NTP-commands and use them in
>> a
>> another init-file, apart from the firewall initscript.
>> I just want to "go out of the way". ;-)
>> 
>> As I see it, IPSec and QoS (e.g) would not be affected and
>> furthermore
>> we would perhaps have the choice to control some other settings
>> through
>> this file.
>> E.g., the settings from '/var/ipfire/optionsfw/settings' are
>> processed
>> in various control files, see:
>> https://community.ipfire.org/t/forcing-all-dns-traffic-from-the-lan-to-the-firewall/3512/89
>> 
>> And perhaps that would give us the chance to tidy things up. Just a
>> thought.
>> 
>> So what about using an 'optionsfw' initscript for the DNS/NTP rules?
>> 
> 
> This would be a possible solution, but ends in multiple files which are
> doing the same - dealing with firewall rules.

Ok. Thats right. I'm now using a new '/etc/rc.d/init.d/dnsntp'-file for
this, but...:

> This is not very intuitive and hard to maintain.

Ok. I see your point.

>> ...
>> 
>> The only affected chain is CUSTOMPREROUTING, so other
>> functionalities/chains (IPSec, QoS) should not be affected.
> 
> Please do not use one of the CUSTOM firewall chains, they only should
> be used by the users to customize their systems.
>
> I would suggest to use a new chain like "FORCEDREDIRECT" or similar
> before the CUSTOMPREROUTING chain.

I see two possibilities doing this in '/etc/rc,d/init.d/firewall'.

Inserting at line 169:

...
  iptables -t nat -N FORCEREDIRECT
  iptables -t nat -A PREROUTING -j FORCEREDIRECT
  iptables -t nat -N CUSTOMPREROUTING
  iptables -t nat -A PREROUTING -j CUSTOMPREROUTING
...

Or after (e.g):
...
# Added for DNS REDIRECTS
  iptables -t nat -N FORCEREDIRECTS
  iptables -t nat -I PREROUTING 1 -j FORCEREDIRECTS
...

Am I right doing it this way?


> This would have the advantage, that you safely can flush this chain and
> directly can insert you redirect rules for the network zones and
> desired the protocol. So you not need to check each time if the rule
> already exists.
> 
> This will speeds up the whole process and keeps the code clear.

Makes sense. Thanks for the hints.

> Instead of writing an additional init script for adding the rules you
> directly can execute the iptables calls by your new optionsfw binary. 

I didn't do this before: I'll take a look.

> This allows you to easily call the binary from the CGI file and perform
> all required operations inside the single chain without touching
> anything else on the running firewall.

Yep. I see. Good point. Thanks again. ;-)

Best,
Matthias

  reply	other threads:[~2021-01-06 18:32 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-30  8:28 Matthias Fischer
2021-01-06 15:50 ` Stefan Schantl
2021-01-06 18:32   ` Matthias Fischer [this message]
2021-01-07 11:47 ` Michael Tremer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=26281959-0376-1a56-0533-cd5155fbaf32@ipfire.org \
    --to=matthias.fischer@ipfire.org \
    --cc=development@lists.ipfire.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox