On 2/8/2018 6:46 PM, Tom Eastep wrote:
> On 02/08/2018 08:45 AM, Matt Darfeuille wrote:
>> On 2/8/2018 5:17 PM, Tom Eastep wrote:
>>> On 02/08/2018 04:20 AM, Matt Darfeuille wrote:
>>>> Hi,
>>>>
>>>> From:
>>>>
>>>> http://shorewall.org/manpages/shorewall.html
>>>>
>>>> "Reload is similar to shorewall start except that it assumes that the
>>>> firewall is already started. Existing connections are maintained."
>>>>
>>>> If I do 'shorewall stop' followed by 'shorewall reload' the firewall
>>>> will be started:
>>>>
>>>> $ shorewall status
>>>> Shorewall-5.1.12-RC1 Status ...
>>>>
>>>> Shorewall is running
>>>> State:Started ... from /etc/shorewall/ (/var/lib/shorewall/firewall
>>>> compiled ... by Shorewall version 5.1.12-RC1)
>>>>
>>>> $ shorewall stop
>>>> Stopping Shorewall....
>>>> Preparing iptables-restore input...
>>>> Running /sbin/iptables-restore...
>>>> done.
>>>> $ shorewall status
>>>> Shorewall-5.1.12-RC1 Status ...
>>>>
>>>> Shorewall is stopped
>>>> State:Stopped ... (/var/lib/shorewall/firewall compiled ... by Shorewall
>>>> version 5.1.12-RC1)
>>>>
>>>> $ shorewall reload
>>>>    Shorewall is not running
>>>> Starting Shorewall....
>>>> Initializing...
>>>> Setting up Route Filtering...
>>>> Setting up Martian Logging...
>>>> Preparing iptables-restore input...
>>>> Running /sbin/iptables-restore ...
>>>> done.
>>>>
>>>> My understanding is that 'shorewall reload' should only reload shorewall
>>>> when the state is 'started' or what Am I missing?
>>>>
>>>> In other words: why 'shorewall reload' starts the firewall when
>>>> shorewall is stopped?
>>>>
>>> The generated script interprets 'reload' and 'restart' as 'start' when
>>> the firewall is not currently started.
>>>
>> Is there any way to alter this so that the generated script would not
>> unconditionally start the firewall?
>> If no and if it makes sense could something to that effect be implemented?
>>
>> -Matt
> 
> Because Shorewall is not a daemon, it's state at any point in time is
> rather nebulous. The Shorewall state is recorded in two ways:
> 
>  1. When the firewall is started, a filter-table chain named 'Shorewall'
>     is created. When the firewall is stopped, that chain is deleted.
>     That is what the CLI uses to determine if Shorewall is started or not.
>  2. $VARDIR/state records the last state transition performed by Shorewall.
> 
> 
> Of course, neither of these measures are even close to being foolproof
> because they can be altered by simple administrative commands.
> 
> For instance:
> 
> root@Asus:~# shorewall status
> Shorewall-5.2.0-Beta1 Status at Asus - Thu Feb  8 09:32:32 PST 2018
> 
> Shorewall is running
> State:Started Mon Feb  5 14:01:21 PST 2018 from /etc/shorewall/ 
> (/var/lib/shorewall/firewall compiled Fri Feb 2 14:28:46 PST 2018 by 
> Shorewall version 5.2.0-Beta1)
> 
> root@Asus:~# iptables -F shorewall
> root@Asus:~# iptables -X shorewall
> root@Asus:~# shorewall status
> Shorewall-5.2.0-Beta1 Status at Asus - Thu Feb  8 09:32:46 PST 2018
> 
> Shorewall is stopped
> State:Started Mon Feb  5 14:01:21 PST 2018 from /etc/shorewall/ 
> (/var/lib/shorewall/firewall compiled Fri Feb 2 14:28:46 PST 2018 by 
> Shorewall version 5.2.0-Beta1)
> 
> root@Asus:~# 
> 
> With the system in this state, should we really be so pedantic as to
> insist that 'start' be used rather than 'reload'?
> 
> Note that when RESTART=restart, the 'restart' command is fundamentally
> 'shorewall stop && shorewall start'; should 'restart' be denied in the
> above situation?
> 
> One thing is certain -- 'stop' and 'clear' must be allowed regardless of
> whether the Shorewall chain exists or not. And given that requirement, I
> don't think that we should quibble about when 'restart' and 'reload' are
> allowable commands.
> 

It's always interesting to learn how Shorewall works!
Given your explanation it clearly makes no sense to nitpick about this.
The reason why I was asking is that my interface is configure by dhcp.
My understanding is that shorewall should be reloaded when a new lease
is acquired?
Based on that asumption I have a script in
/etc/dhcp/dhclient-exit-hooks.d that will reload shorewall when the
'reason' is 'BOUND' and I was simply looking for a way to only reload
shorewall when it is already started.
Thanks for your answer and I'm looking forward to 5.2.

-Matt
-- 
Matt Darfeuille

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Shorewall-users mailing list
Shorewall-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shorewall-users

Reply via email to