-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Actually move iptables to the nft backend #676
Comments
One proposal:
Either way let's discuss it in next week's meeting to see what the most appropriate path forward is. |
cc @nullr0ute for awareness - since this likely affects IoT |
I think conceptually we want the default in the OSTree commit to be nft, and have upgraded systems therefore carry a delta in their Hmm, I think to implement this we'd need two barrier releases:
|
Another approach which requires user action is a single barrier where we add a service which optionally sets the backend to legacy if some stamp file in |
Could we get away with doing just one barrier release if we just take a peak at what's in the rollback deployment's /etc/ to determine if it was using nft already or not? |
Hmm, I think that would work in 99% of cases, but it's not entirely foolproof, because there are no guarantees about correspondence between "previous deployment" and "rollback deployment" (what's considered the rollback is more a convention based on deployment ordering) and whether it still exists. |
This was discussed in the community meeting today:
|
Upstream issue for easier reference: fedora-sysv/chkconfig#9 |
Workaround for [1] while we wait for [2] to get fixed. [1] coreos/fedora-coreos-tracker#676 [2] fedora-sysv/chkconfig#9
Workaround for [1] while we wait for [2] to get fixed. [1] coreos/fedora-coreos-tracker#676 [2] fedora-sysv/chkconfig#9
If we switch the default to nft, do we then document+support a way to stay on legacy for new systems too? It'd probably make sense because we need to carry most of that logic for previous systems too, but it is a different case. |
Without having anything to say: why support legacy iptables at all? AFAICT there are more bugs in legacy iptables and many features get easier with nft. Most people would not notice anyway. Isn't current RHEL and RHCOS also on nft? I don't see a reason for legacy iptables. |
We actually use firewalld, as opposed to an iptables based static firewall, and it defaults to the nft backend so I'm not sure how much this applies by default to IoT. Thanks for the heads up, let me know if I've missed something. |
If people who know much more about this than me tell me that switching the nft on an upgrade is a relatively safe thing to do then we could consider that option. Keep in mind that FCOS auto-updates, so the goal is to not break people's systems that are updating themselves. Do we have a high degree of confidence that iptables-nft is a safe upgrade? /me wonders why the rpm doesn't just default to it now instead of relying on updating priorities via alternatives in %post scriptlets. |
Workaround for [1] while we wait for [2] to get fixed. [1] coreos/fedora-coreos-tracker#676 [2] fedora-sysv/chkconfig#9
Not all CNI autodetect, and they might not autodetect by default. |
So if we want to err on the side of caution and not auto-migrate systems on legacy but only affect new nodes, that takes us back to something like #676 (comment). |
Looking forward to the release that has this default. Will it be in whatever is after |
It will be when the rebase to Fedora Linux 36 happens. See the email Jonathan sent out. |
@jdbarnes-isi Note that you can switch to the new backend today with https://docs.fedoraproject.org/en-US/fedora-coreos/alternatives/ |
Add a new conditional include which migrates streams on Fedora 36 and higher to iptables-nft. This is magnitudes simpler than the current alternative rollout procedure detailed in: coreos/fedora-coreos-tracker#676
Add a new conditional include which migrates streams on Fedora 36 and higher to iptables-nft. This is magnitudes simpler than the current alternative rollout procedure detailed in: coreos/fedora-coreos-tracker#676
Add a new conditional include which migrates streams on Fedora 36 and higher to iptables-nft. This is magnitudes simpler than the current alternative rollout procedure detailed in: coreos/fedora-coreos-tracker#676
Add a new conditional include which migrates streams on Fedora 36 and higher to iptables-nft. This is magnitudes simpler than the current alternative rollout procedure detailed in: coreos/fedora-coreos-tracker#676
Add a new conditional include which migrates streams on Fedora 36 and higher to iptables-nft. This is magnitudes simpler than the current alternative rollout procedure detailed in: coreos/fedora-coreos-tracker#676
Add a new conditional include which migrates streams on Fedora 36 and higher to iptables-nft. This is magnitudes simpler than the current alternative rollout procedure detailed in: coreos/fedora-coreos-tracker#676
The fix for this went into |
The fix for this went into |
The fix for this went into |
kube-proxy and Calico are still using the legacy implementation, so we want our custom rules to go into the same tables. See: * https://docs.fedoraproject.org/en-US/fedora-coreos/major-changes/#_moving_to_iptables_nft * coreos/fedora-coreos-tracker#676 * coreos/fedora-coreos-config#1324
* Add `/etc/fedora-coreos/iptables-legacy.stamp` to declare that `iptables-legacy` should be used instead of `iptables-nft` (until support is added in future releases) * coreos/fedora-coreos-tracker#676
Let's confirm for now that we're using iptables-legacy by default until we switch to defaulting to iptables-nft. See coreos/fedora-coreos-tracker#676
From `overlay.d/README.md`: Contains systemd service and script for remaining on iptables-nft after the migration to nft. Split out because (1) it will roll out to next first, and (2) it can more easily be deleted after the barrier release. For more details, see: coreos/fedora-coreos-tracker#676 coreos#1324
Add a new conditional include which migrates streams on Fedora 36 and higher to iptables-nft. This is magnitudes simpler than the current alternative rollout procedure detailed in: coreos/fedora-coreos-tracker#676
Let's confirm for now that we're using iptables-legacy by default until we switch to defaulting to iptables-nft. See coreos/fedora-coreos-tracker#676
From `overlay.d/README.md`: Contains systemd service and script for remaining on iptables-nft after the migration to nft. Split out because (1) it will roll out to next first, and (2) it can more easily be deleted after the barrier release. For more details, see: coreos/fedora-coreos-tracker#676 coreos#1324
Add a new conditional include which migrates streams on Fedora 36 and higher to iptables-nft. This is magnitudes simpler than the current alternative rollout procedure detailed in: coreos/fedora-coreos-tracker#676
In Fedora 32, Fedora moved the backend of
iptables
to use the nft implementation by default (see the change proposal. In #26 we decided to ship all the tools and accept the Fedora defaults.Unfortunately, applying the default of
iptables-nft
in Fedora 32 didn't work on FCOS because it was implemented via alternatives and alternatives don't currently work with the wayrpm-ostree
composes the OS (see #677).Now that we know we're misconfigured, let's figure out how to move to get back in line with Fedora's defaults while we wait on alternatives to get fixed (probably won't happen til Fedora 34).
There were some previous musings about this (before the f32 change landed) in #342.
Rolling out:
next-devel
(when rebasing to f36)next-devel
next
release, possibly making it a barrier35coreos-iptables
inclusion innext-devel
'smanifest.yaml
(second commit in [next-devel] manifest: default to iptables-nft fedora-coreos-config#1460)testing-devel
(when rebasing to f36)testing-devel
and out ofnext-devel
'smanifest.yaml
(first commit in [next-devel] manifest: default to iptables-nft fedora-coreos-config#1460)35coreos-iptables
inclusion totesting-devel
'smanifest.yaml
testing
release, cherry-picking35coreos-iptables
inclusion to itsmanifest.yaml
, and possibly making it a barrier35coreos-iptables
inclusion totesting-devel
andtesting
stable
release, cherry-picking35coreos-iptables
inclusion to itsmanifest.yaml
, and possibly making it a barrier35coreos-iptables
inclusion tostable
The text was updated successfully, but these errors were encountered: