I'm attempting to troubleshoot boot-time failures for shorewall-init.service 
start, and the interface of one of my provider's interfaces (my vpn).

I'm currently stymied by the fact that *despite* the failures -- for which I 
can't yet find the reason -- once *fully* booted, the system heals itself and 
everything's running OK.

I'll certainly take the 'up' state, but would prefer to fix the boot-time 
problem; I'd appreciate a fresh set of eyes ...

On my edge router/firewall I've installed

        shorewll-init
        shorewall-lite
        shorewall6-lite
        openvpn

I've configured two providers, prov1 (the 'net @ eth0) & prov2 (vpn @ tun1)

*During* startup, journalctl shows that 

        shorewall-init.service

fails to start and 'tun1' is not usable.

                journalctl -b | grep -i shorewall | grep -iv shorewall6
!!!                     Sep 13 21:52:25 core shorewall-init[932]: Initializing 
"Shorewall-based firewalls":
                        Sep 13 21:52:25 core systemd[1]: 
shorewall-init.service: main process exited, code=exited, status=1/FAILURE
                        Sep 13 21:52:25 core systemd[1]: Unit 
shorewall-init.service entered failed state.
                        Sep 13 21:53:29 core systemd[1]: Starting 
shorewall-lite...
                        Sep 13 21:53:30 core shorewall-lite[3280]: Starting 
Shorewall Lite....
                        Sep 13 21:53:31 core shorewall-lite[3280]: OK ping @ 
INTFC=eth0
                        Sep 13 21:53:31 core shorewall-lite[3280]: 
Initializing...
                        Sep 13 21:53:33 core shorewall-lite[3280]: Processing 
init user exit ...
                        Sep 13 21:53:33 core shorewall-lite[3280]: Processing 
tcclear user exit ...
                        Sep 13 21:53:33 core shorewall-lite[3280]: Setting up 
Route Filtering...
                        Sep 13 21:53:33 core shorewall-lite[3280]: Setting up 
Martian Logging...
                        Sep 13 21:53:33 core shorewall-lite[3280]: Setting up 
Accept Source Routing...
                        Sep 13 21:53:33 core shorewall-lite[3280]: Setting up 
Proxy ARP...
                        Sep 13 21:53:33 core shorewall-lite[3280]: Adding 
Providers...
!!!                     Sep 13 21:53:34 core shorewall-lite[3280]: WARNING: 
Interface tun1 is not usable -- Provider prov2 (2) not Started
                        Sep 13 21:53:34 core shorewall-lite[3280]: Preparing 
iptables-restore input...
                        Sep 13 21:53:34 core shorewall-lite[3280]: Running 
/usr/sbin/iptables-restore...
                        Sep 13 21:53:34 core shorewall-lite[3280]: IPv4 
Forwarding Enabled
                        Sep 13 21:53:34 core shorewall-lite[3280]: Processing 
start user exit ...
                        Sep 13 21:53:34 core shorewall-lite[3280]: Processing 
started user exit ...
                        Sep 13 21:53:34 core logger[3821]: Shorewall Lite 
started
                        Sep 13 21:53:34 core shorewall-lite[3280]: done.

Once the system's fully booted, the shorewall-init service is NOT running,

        systemctl status shorewall-init
                shorewall-init.service - Shorewall IPv4 firewall
                   Loaded: loaded (/etc/systemd/system/shorewall-init.service; 
enabled)
                   Active: failed (Result: exit-code) since Sat 2014-09-13 
21:52:25 PDT; 29min ago
                  Process: 932 ExecStart=/usr/sbin/shorewall-init $OPTIONS 
start (code=exited, status=1/FAILURE)
                 Main PID: 932 (code=exited, status=1/FAILURE)

                Sep 13 21:52:25 core shorewall-init[932]: Initializing 
"Shorewall-based firewalls":
                Sep 13 21:52:25 core systemd[1]: shorewall-init.service: main 
process exited, code=exited, status=1/FAILURE
                Sep 13 21:52:25 core systemd[1]: Unit shorewall-init.service 
entered failed state.

BUT shorewall-lite shows that all the routes are actually set for BOTH prov1 & 
prov2 -- only possible (iiuc) if both interfaces are 'usable'

Checking

        shorewall-lite show routing
                Shorewall Lite 4.6.3.3 Routing at core - Sat Sep 13 21:57:59 
PDT 2014


                Routing Rules

                0:      from all lookup local 
                10000:  from all fwmark 0x100/0xff00 lookup prov1 
                10001:  from all fwmark 0x200/0xff00 lookup prov2 
                20000:  from xx.xx.xx.xx lookup prov1 
                20000:  from 10.0.0.2 lookup prov2 
                32766:  from all lookup main 
                32767:  from all lookup default 

                Table default:
                ...

                Table local:
                ...

                Table main:
                ...

                Table prov1:
                ...

                Table prov2:
                ...

At this point, the vpn's also fully up & running.  Everything appears to be 
working -- as intended.

Somewhere between the initial fail @ boot, and a running-system state, things 
appear to straighten themselves out.

I *suspect* it's systemd dependencies among shorewall-init, shorewall-lite, 
network & openvpn ... Is it?

With this interface/provider config

        /params
                THIS_EXT_IF=eth0
                THIS_INT_IF=eth1
                THIS_VPN_IF=tun1

        /interfaces
                ?FORMAT 2
                net     EXT_IF    optional,physical=$THIS_EXT_IF,...
                vpn1    VPN_IF    optional,physical=$THIS_VPN_IF,...
                -       INT_IF    physical=$THIS_INT_IF,...

        /providers
                prov1    1    0x100    main    EXT_IF    detect      
track,balance     INT_IF
                prov2    2    0x200    main    VPN_IF    10.0.0.1    
track,fallback    INT_IF

I've got the following systemd units in place; I think (?) these are all that 
are relevant here ...

        cat /etc/systemd/system/shorewall-init.service 
                [Unit]
                Description=Shorewall IPv4 firewall
                After=syslog.target
                Before=network.target

                [Service]
                Type=oneshot
                RemainAfterExit=yes
                EnvironmentFile=-/etc/sysconfig/shorewall-init
                StandardOutput=syslog
                ExecStart=/usr/sbin/shorewall-init $OPTIONS start
                ExecStop=/usr/sbin/shorewall-init $OPTIONS stop

                [Install]
                WantedBy=multi-user.target

        cat /etc/systemd/system/shorewall-lite.service 
                [Unit]
                Description=shorewall-lite
                After=syslog.target network.target
                Before=shorewall-lite.target
                Requires=network.target

                [Service]
                Type=oneshot
                RemainAfterExit=yes
                StandardOutput=syslog
                ExecStartPre=/usr/local/etc/shorewall/scripts/launch4.sh
                ExecStart=/usr/sbin/shorewall-lite start
                ExecStop=/usr/sbin/shorewall-lite stop

                [Install]
                WantedBy=multi-user.target

        cat /etc/systemd/system/openvpn-custom.service 
                [Unit]
                Description=OpenVPN Server
                After=syslog.target network.target shorewall-lite.target
                Before=openvpn-custom.target
                Requires=shorewall-lite.target
                Requires=network.target

                [Service]
                PrivateTmp=true
                
Environment=PATH="/usr/local/scripts:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
                Type=forking
                ExecStartPre=/usr/local/etc/openvpn/up.script
                ExecStart=/usr/local/openvpn/sbin/openvpn \
                          --daemon \
                          --cd /usr/local/etc/openvpn/ \
                          --config client.conf \
                          --writepid /var/run/openvpn/openvpn.pid
                ExecStopPost=/usr/local/etc/openvpn/down.script
                Restart=always
                RestartSec=30

                [Install]
                WantedBy=multi-user.target

I've not yet been successful figuring out exactly WHY I'm seeing those initial 
fails, and am unclear why/how is seems to end up working.

Have I screwed up the After/Before/Require dependencies?  Something in my 
shorewall config?  Or am I looking in the completely wrong place for the 
problem?

Any ideas?  If more info from my end is needed, happy to provide -- just not 
sure what's useful, yet.

------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
Shorewall-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/shorewall-users

Reply via email to