Winboat no access to internet since the latest firewall package update

Normally, firewalld only blocks incoming requests, meaning that if you have a web servers with a listening port of 443 you need to open 443 for incoming requests.

However, the issue is with forwarding as indicated by “filter_FWD_FedoraWorkstation_REJECT”. That should be allowed, but there might have been some change or perhaps regression. Your host system should have no problem connecting to remote port 443 which is the https port.

That is all I can say as I don’t know how winboat does networking.

It looks like you need some interfaces on that zone. You may find that you allow one zone to do its job, and it still will not work after that.

Keep a log of these changes so you can revert them later as needed, but I would leave all these changes enabled. Once you get it working you can start taking things away to determine what breaks it again. That way you will know but not be working against yourself.

  • You may have to run that check again systematically if the below changes do not work to see where breaks may still be located.
  • Again, “remove” can be still be substituted where add is in these commands to get to the reverted state.

Add the machine’s interface to FedoraWorkstation
(It may be this simple!)
sudo firewall-cmd --zone=FedoraWorkstation --permanent --add-interface=wlp192s0
*Reload and try Winboat. If it does not work, please continue below.

Add the Winboat interface to FedoraWorkstation
(FYI - It is completely possible that this should be going to the “docker” zone and not the “FedoraWorkstation” zone. Keep that in mind.)
sudo firewall-cmd --zone=FedoraWorkstation --permanent --add-interface=br-75bfbe7658f3
*Reload and try Winboat. If it does not work, please continue below.

Add the https service to FedoraWorkstation
(I do not think this will be required.)
sudo firewall-cmd --zone=FedoraWorkstation --permanent --add-service=https
*Reload and try Winboat.
*If this does not do it, stop here and run that check again to see what else might be blocked. One zone may open up for you to find a different block somewhere else downstream in the dependencies.

Virtualization and containers make this a bit more convoluted since some of these things appear unsolicited from the machine’s perspective.

It could be something simple like the machine’s active zone is incorrectly set to “home” in NetworkManager, too. Mine is FedoraWorkstation, but it looks like 'home" is in use from the listed outputs from all zones.

I was also hoping that the docker zone would active when Winboat gets launched.

At this point it may be simpler to see the verbose outputs after the blocks (or what we assume to be the blocks) are removed, so we can continue systematically identifying blocks as things get opened up.

Splinter and others, have a look at this.
This is where I believe our main problem is:
Firewall config LHS…
You see docker assigned to default zone “FedoraWorkstation”
Then “br-c8478f2ec197” is assigned to “FedoraWorkstation” This is the virtual ethernet card that is used by Winboat/docker.
This virtual card has got all the dns/dhcp/ssh services assigned and a bunch more.
I am assuming its Docker that keeps changing the name of the vrtual ethernet card, never matching what is setup in the firewall.
I could be wrong. Lets see what everybody things.

Here is the info as requested:

sudo firewall-cmd --get-active-zones
sudo firewall-cmd --get-active-policies
sudo firewall-cmd --info-zone=docker
sudo firewall-cmd --info-policy=docker-forwarding
home
  interfaces: wlp192s0
FedoraWorkstation (default)
allow-host-ipv6
  ingress-zones: ANY
  egress-zones: HOST
docker
  target: ACCEPT
  ingress-priority: 0
  egress-priority: 0
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: 
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
docker-forwarding
  disable: no
  priority: -1
  target: ACCEPT
  ingress-zones: ANY
  egress-zones: docker
  services: 
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

I have to wonder why your information does not look like this below:

This would let all those ports “in” to the zone to go out the physical interface.

FedoraWorkstation (default, active)
interfaces: wlp192s0

Your home zone does not allow any of them in. My physical interface is FedoraWorkstation by default, but yours might be in home from a previous change you made.

I would also wonder why docker0 and the other bridge interface that changes is not in the docker zone, but I guess it should not matter for your case if the physical wlp192s0 is in the same zone as the others.

Edit: Also, those “Services” in the tab list you show do not mean they are enabled in the zone under the Zones tab. It is just showing you the ones available to use in each zone.

I didn’t make any changes to the firewall or docker etc.
At the time I took a snapshot of the settings at the time as you suggested and saved them to a text file to be able to revert it back to its default state. Firewall was never touched beforehand.
Then as we made changes and they had no effect, I reversed them, took another snapshot and compared them with the original to make sure that I hadn’t missed anything.
Right now, all settings are back to original.

That will be a lot of info to go through. Thanks Vladislav for putting so much effort in to help.

rpm -q -a docker\* firewalld\* | sort
docker-buildx-0.35.0-1.fc44.x86_64
docker-cli-29.6.0-1.fc44.x86_64
docker-compose-5.3.0-1.fc44.x86_64
docker-compose-switch-1.0.5-10.fc44.x86_64
firewalld-2.4.4-1.fc44.noarch
firewalld-filesystem-2.4.4-1.fc44.noarch

sudo busctl --no-pager introspect org.fedoraproject.FirewallD1 \
    /org/fedoraproject/FirewallD1/config org.fedoraproject.FirewallD1.config
Place your finger on the fingerprint reader
NAME                  TYPE     SIGNATURE                               RESULT/VALUE        FLAGS                
.addHelper            method   s(sssssa(ss))                           o                   -                    
.addIPSet             method   s(ssssa{ss}as)                          o                   -                    
.addIcmpType          method   s(sssas)                                o                   -                    
.addPolicy            method   sa{sv}                                  o                   -                    
.addService           method   s(sssa(ss)asa{ss}asa(ss))               o                   -                    
.addService2          method   sa{sv}                                  o                   -                    
.addZone              method   s(sssbsasa(ss)asba(ssss)asasasasa(ss)b) o                   -                    
.addZone2             method   sa{sv}                                  o                   -                    
.getHelperByName      method   s                                       o                   -                    
.getHelperNames       method   -                                       as                  -                    
.getIPSetByName       method   s                                       o                   -                    
.getIPSetNames        method   -                                       as                  -                    
.getIcmpTypeByName    method   s                                       o                   -                    
.getIcmpTypeNames     method   -                                       as                  -                    
.getPolicyByName      method   s                                       o                   -                    
.getPolicyNames       method   -                                       as                  -                    
.getServiceByName     method   s                                       o                   -                    
.getServiceNames      method   -                                       as                  -                    
.getZoneByName        method   s                                       o                   -                    
.getZoneNames         method   -                                       as                  -                    
.getZoneOfInterface   method   s                                       s                   -                    
.getZoneOfSource      method   s                                       s                   -                    
.listHelpers          method   -                                       ao                  -                    
.listIPSets           method   -                                       ao                  -                    
.listIcmpTypes        method   -                                       ao                  -                    
.listPolicies         method   -                                       ao                  -                    
.listServices         method   -                                       ao                  -                    
.listZones            method   -                                       ao                  -                    
.AllowZoneDrifting    property s                                       "no"                emits-change writable
.AutomaticHelpers     property s                                       "no"                emits-change writable
.CleanupModulesOnExit property s                                       "no"                emits-change writable
.CleanupOnExit        property s                                       "yes"               emits-change writable
.DefaultZone          property s                                       "FedoraWorkstation" emits-change
.FirewallBackend      property s                                       "nftables"          emits-change writable
.FlushAllOnReload     property s                                       "yes"               emits-change writable
.IPv6_rpfilter        property s                                       "yes"               emits-change writable
.IPv6_rpfilter2       property s                                       "loose"             emits-change writable
.IndividualCalls      property s                                       "no"                emits-change writable
.Lockdown             property s                                       "no"                emits-change writable
.LogDenied            property s                                       "all"               emits-change writable
.MinimalMark          property i                                       100                 emits-change writable
.NftablesCounters     property s                                       "no"                emits-change writable
.NftablesFlowtable    property s                                       "off"               emits-change writable
.NftablesTableOwner   property s                                       "yes"               emits-change writable
.RFC3964_IPv4         property s                                       "yes"               emits-change writable
.StrictForwardPorts   property s                                       "no"                emits-change writable
.HelperAdded          signal   s                                       -                   -                    
.IPSetAdded           signal   s                                       -                   -                    
.IcmpTypeAdded        signal   s                                       -                   -                    
.PolicyAdded          signal   s                                       -                   -                    
.ServiceAdded         signal   s                                       -                   -                    
.ZoneAdded            signal   s                                       -                   -                    
journalctl --no-pager --no-hostname -b -u docker.service -u firewalld.service
Jul 12 20:18:19 systemd[1]: Started firewalld.service - firewalld - dynamic firewall daemon.
Jul 12 20:18:19 systemd[1]: Starting docker.service - Docker Application Container Engine...
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.950788179+10:00" level=info msg="Starting up"
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.951494908+10:00" level=info msg="OTEL tracing is not configured, using no-op tracer provider"
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.951568736+10:00" level=info msg="CDI directory does not exist, skipping" dir=/etc/cdi
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.951575899+10:00" level=info msg="CDI directory does not exist, skipping" dir=/var/run/cdi
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.952115336+10:00" level=info msg="detected 127.0.0.53 nameserver, assuming systemd-resolved, so using resolv.conf: /run/systemd/resolve/resolv.conf"
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.960567561+10:00" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.972986640+10:00" level=info msg="Loading containers: start."
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.974610782+10:00" level=info msg="NRI is disabled"
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.974650957+10:00" level=info msg="Starting daemon with containerd snapshotter integration enabled"
Jul 12 20:18:19 dockerd[1353]: time="2026-07-12T20:18:19.992680487+10:00" level=info msg="Restoring containers: start."
Jul 12 20:18:20 dockerd[1353]: time="2026-07-12T20:18:20.055353861+10:00" level=info msg="Deleting nftables IPv4 rules" error="running nft: /dev/stdin:1:17-30: Error: Could not process rule: No such file or directory\ndelete table ip docker-bridges\n                ^^^^^^^^^^^^^^\n exit status 1"
Jul 12 20:18:20 dockerd[1353]: time="2026-07-12T20:18:20.079283103+10:00" level=info msg="Deleting nftables IPv6 rules" error="running nft: /dev/stdin:1:18-31: Error: Could not process rule: No such file or directory\ndelete table ip6 docker-bridges\n                 ^^^^^^^^^^^^^^\n exit status 1"
Jul 12 20:18:20 dockerd[1353]: time="2026-07-12T20:18:20.678543720+10:00" level=info msg="Loading containers: done."
Jul 12 20:18:20 dockerd[1353]: time="2026-07-12T20:18:20.685471500+10:00" level=info msg="Docker daemon" commit=1.fc44 containerd-snapshotter=true storage-driver=overlayfs version=29.6.0
Jul 12 20:18:20 dockerd[1353]: time="2026-07-12T20:18:20.685549726+10:00" level=info msg="Initializing buildkit"
Jul 12 20:18:20 dockerd[1353]: time="2026-07-12T20:18:20.919264815+10:00" level=info msg="Completed buildkit initialization"
Jul 12 20:18:20 dockerd[1353]: time="2026-07-12T20:18:20.922966163+10:00" level=info msg="Daemon has completed initialization"
Jul 12 20:18:20 dockerd[1353]: time="2026-07-12T20:18:20.923036735+10:00" level=info msg="API listen on /run/docker.sock"
Jul 12 20:18:20 systemd[1]: Started docker.service - Docker Application Container Engine.
Jul 12 21:32:13 dockerd[1353]: time="2026-07-12T21:32:13.155706988+10:00" level=warning msg="path in container /dev/kvm already exists in privileged mode" container=59eecc453424a7752ed2f8d1ed8aecdd3c6ba0fb2eb4cf90f67ec7c19cee5219
Jul 12 21:32:13 dockerd[1353]: time="2026-07-12T21:32:13.287621406+10:00" level=info msg="sbJoin: gwep4 ''->'841cfaaef1b8', gwep6 ''->''" eid=841cfaaef1b8 ep=WinBoat net=winboat_default nid=c8478f2ec197
Jul 12 21:34:44 systemd[1]: Stopping firewalld.service - firewalld - dynamic firewall daemon...
Jul 12 21:34:45 systemd[1]: firewalld.service: Deactivated successfully.
Jul 12 21:34:45 systemd[1]: Stopped firewalld.service - firewalld - dynamic firewall daemon.
Jul 12 21:43:02 dockerd[1353]: time="2026-07-12T21:43:02.276686592+10:00" level=info msg="received task-delete event from containerd" container=59eecc453424a7752ed2f8d1ed8aecdd3c6ba0fb2eb4cf90f67ec7c19cee5219 module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Jul 12 21:44:38 systemd[1]: Started firewalld.service - firewalld - dynamic firewall daemon.
Jul 13 11:12:11 dockerd[1353]: time="2026-07-13T11:12:11.178812102+10:00" level=warning msg="path in container /dev/kvm already exists in privileged mode" container=59eecc453424a7752ed2f8d1ed8aecdd3c6ba0fb2eb4cf90f67ec7c19cee5219
Jul 13 11:12:11 dockerd[1353]: time="2026-07-13T11:12:11.281538393+10:00" level=info msg="sbJoin: gwep4 ''->'dbbd0a33afe1', gwep6 ''->''" eid=dbbd0a33afe1 ep=WinBoat net=winboat_default nid=c8478f2ec197
Jul 13 11:22:06 dockerd[1353]: time="2026-07-13T11:22:06.364470991+10:00" level=info msg="received task-delete event from containerd" container=59eecc453424a7752ed2f8d1ed8aecdd3c6ba0fb2eb4cf90f67ec7c19cee5219 module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Jul 13 11:56:26 dockerd[1353]: time="2026-07-13T11:56:26.488797964+10:00" level=info msg="sbJoin: gwep4 ''->'73599b655ceb', gwep6 ''->''" eid=73599b655ceb ep=great_taussig net=bridge nid=5df55846d0f4
Jul 13 11:56:26 dockerd[1353]: time="2026-07-13T11:56:26.520680004+10:00" level=info msg="received task-delete event from containerd" container=2927fb4cc1c3cda39c77be2ec5a3cd6ab78fbef22101459bc058babe71cfe2e4 module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
Jul 13 15:01:22 dockerd[1353]: time="2026-07-13T15:01:22.194072466+10:00" level=warning msg="path in container /dev/kvm already exists in privileged mode" container=59eecc453424a7752ed2f8d1ed8aecdd3c6ba0fb2eb4cf90f67ec7c19cee5219
Jul 13 15:01:22 dockerd[1353]: time="2026-07-13T15:01:22.300079789+10:00" level=info msg="sbJoin: gwep4 ''->'766a5b976334', gwep6 ''->''" eid=766a5b976334 ep=WinBoat net=winboat_default nid=c8478f2ec197

I managed to reproduce the issue, it looks like a race condition, try this:

sudo systemctl disable docker.service
sudo systemctl enable docker.socket
sudo systemctl restart docker.socket

This worked !!! :tada:
So Vladislav…apart from being the hero here in the end (and not diminishing the help from MSplinter) thank you all so much…can you give us a short explanation, which service is at fault.
If it is firewalld causing the issue, then I need to log a fault with Fedora. If its Docker…then I might have to update to their official latest version?, via adding the repo download docker.com, removing the current one and adding their latest.

sudo systemctl disable docker.service
sudo systemctl enable docker.socket
sudo systemctl restart docker.socket
docker network ls
firewall-cmd --get-active-zones
Place your finger on the fingerprint reader
Removed '/etc/systemd/system/multi-user.target.wants/docker.service'.
Disabling 'docker.service', but its triggering units are still active:
docker.socket
NETWORK ID     NAME              DRIVER    SCOPE
59121a216536   bridge            bridge    local
70f09322e6ab   host              host      local
de83b9b8e502   none              null      local
c8478f2ec197   winboat_default   bridge    local
docker
  interfaces: br-c8478f2ec197 docker0
home
  interfaces: wlp192s0
FedoraWorkstation (default)

@vgaetera 's skill level is completely indistinguishable from magic in my opinion :laughing:

That is awesome!

I’ll be flippant - he advocated turning it off and back on again! :slight_smile:

Some quick update info.
The fix holds after shutting down Winboat and then restarting it. So for the time being the fix only has to be run after a reboot.
I have added the commands into my “Quick Command” table in Konsole.
Hopefully Vladislav can get back to us when he has some time and explain to us mere mortals which service is at fault, so I can log a fault with the appropriate side Winboat or Fedora.

It was definitely the root cause analysis for me and why I say that, haha! It always funny when things go back to “Did you try turning it off and back on again?” :rofl:

@alinausssieland - he stated he was able to repro this problem and thinks it is a race condition. That can be identified when a particular sequence of events leads to an unexpected outcome like this. Sometimes it results in data loss, and that can be intentionally exploited in some cases. It probably needs a bug opened, but I am not sure if it is for firewalld or docker. Too much sorcery!