-
Notifications
You must be signed in to change notification settings - Fork 599
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
net: fix network unlock with iptables-nft #2323
net: fix network unlock with iptables-nft #2323
Conversation
98ebd01
to
5dab401
Compare
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## criu-dev #2323 +/- ##
============================================
+ Coverage 70.51% 70.62% +0.10%
============================================
Files 133 133
Lines 33534 33556 +22
============================================
+ Hits 23646 23698 +52
+ Misses 9888 9858 -30 ☔ View full report in Codecov by Sentry. |
9eacd6e
to
c3d604b
Compare
When iptables-nft is used as backend for iptables, the rules for network locking are translated into the following nft rules: ``` $ iptables-restore-translate -f lock.txt add table ip filter add chain ip filter CRIU insert rule ip filter INPUT counter jump CRIU insert rule ip filter OUTPUT counter jump CRIU add rule ip filter CRIU mark 0xc114 counter accept add rule ip filter CRIU counter drop ``` These rules create the following chains: ``` table ip filter { # handle 1 chain CRIU { # handle 1 meta mark 0x0000c114 counter packets 16 bytes 890 accept # handle 6 counter packets 1 bytes 60 drop # handle 7 meta mark 0x0000c114 counter packets 0 bytes 0 accept # handle 8 counter packets 0 bytes 0 drop # handle 9 } chain INPUT { # handle 2 type filter hook input priority filter; policy accept; counter packets 8 bytes 445 jump CRIU # handle 3 counter packets 0 bytes 0 jump CRIU # handle 10 } chain OUTPUT { # handle 4 type filter hook output priority filter; policy accept; counter packets 9 bytes 505 jump CRIU # handle 5 counter packets 0 bytes 0 jump CRIU # handle 11 } } ``` In order to delete the CRIU chain, we need to first delete all four jump targets. Otherwise, `-X CRIU` would fail with the following error: iptables-restore v1.8.10 (nf_tables): line 5: CHAIN_DEL failed (Resource busy): chain CRIU Reported-by: Andrei Vagin <[email protected]> Signed-off-by: Radostin Stoyanov <[email protected]>
0ac0e13
to
cbf0e64
Compare
fcfdc90
to
9069e76
Compare
nft does not support xtables compat expressions https://git.netfilter.org/nftables/commit/?id=79195a8cc9e9d9cf2d17165bf07ac4cc9d55539f Signed-off-by: Radostin Stoyanov <[email protected]>
9069e76
to
e35df4d
Compare
Show appropriate error messages when restore of nftables fails. Signed-off-by: Radostin Stoyanov <[email protected]>
e35df4d
to
8b69f18
Compare
Great job, Radostin! LGTM. to discuss: probably at some point it makes sense to change |
When iptables-nft is used as backend for iptables, the rules for network locking are translated into the following nft rules:
These rules create the following chains:
In order to delete the CRIU chain, we need to first delete all four jump targets. Otherwise,
-X CRIU
would fail with the following error:Fixes: #2313