<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Iptables on JokemeBlog</title>
        <link>/tags/iptables/</link>
        <description>Recent content in Iptables on JokemeBlog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Thu, 14 Aug 2025 08:53:43 +0800</lastBuildDate><atom:link href="/tags/iptables/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Linux上nftables和Docker默认iptables规则冲突问题记录📝</title>
            <link>/p/docker_change_iptables_backend/</link>
            <pubDate>Thu, 14 Aug 2025 08:53:43 +0800</pubDate>
            <guid>/p/docker_change_iptables_backend/</guid>
            <description>&lt;img src=&#34;https://www.bing.com/th?id=OHR.PrinceChristianSound_EN-CN2366123963_UHD.jpg&amp;pid=hp&amp;w=1080&amp;h=720&amp;rs=1&amp;c=4&#34; alt=&#34;Featured image of post Linux上nftables和Docker默认iptables规则冲突问题记录📝&#34; /&gt;&lt;p&gt;最近把我的&lt;strong&gt;Hugo&lt;/strong&gt;博客从原来的&lt;strong&gt;x86_64&lt;/strong&gt;服务器的&lt;strong&gt;Docker&lt;/strong&gt;上迁移到&lt;strong&gt;macOS&lt;/strong&gt;的qemu虚拟机里面的&lt;strong&gt;Docker&lt;/strong&gt;了，之前的服务器因为没有什么重要数据，一直没开防火墙，裸奔中，但是 现在我准备&lt;strong&gt;All-In-One&lt;/strong&gt;了，把所有的服务都整合在qemu里面的虚拟化，现在要注意安全🔐了，但是我又不想使用iptables了，所以就改用更好用的nftables。&lt;/p&gt;&#xA;&lt;p&gt;但是我启动docker容器的时候，oh吼～&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~$ docker start hugo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error response from daemon: driver failed programming external connectivity on endpoint hugo &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;5cf48cfcd4d592fc2fc599781dbfb98eb176f3841949c6a75ad97c56dd36be17&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;: Unable to &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; DNAT rule:  &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport &lt;span class=&#34;m&#34;&gt;1313&lt;/span&gt; -j DNAT --to-destination 172.17.0.2:1313 ! -i docker0: iptables: No chain/target/match by that name.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;报错了。。。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;iptables&lt;/strong&gt;的规则不能生效，&lt;strong&gt;Nat&amp;amp;Forward&lt;/strong&gt; 规则不生效。那怎么可能生效啊，&lt;strong&gt;iptables&lt;/strong&gt;我已经不用了，改用&lt;strong&gt;nftables&lt;/strong&gt;了。&lt;/p&gt;&#xA;&lt;p&gt;然后问了一下哎&lt;strong&gt;GPT&lt;/strong&gt;，它就说。哎～，&lt;strong&gt;Docker&lt;/strong&gt;和&lt;strong&gt;iptables&lt;/strong&gt;这两个锁死的，你要是想用Docker，那你要不然就放弃&lt;strong&gt;nftables&lt;/strong&gt;，改回&lt;strong&gt;iptables&lt;/strong&gt;，要不然，你就别用了，别的方法都很折腾，至少我觉得很麻烦。&lt;/p&gt;&#xA;&lt;p&gt;然后还有一种方法就是转换一下，把&lt;strong&gt;iptables&lt;/strong&gt;的规则转成&lt;strong&gt;nftables&lt;/strong&gt;的后端实现，命令很简单，如下：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-alternatives --set iptables /usr/sbin/iptables-nft&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;这样转换一下实现就可以正常启动docker容器了。&lt;/p&gt;&#xA;&lt;p&gt;还有就是后续docker在开机启动时可能还会启动失败，这个没有关系的，重启一下docker，让他重新写一下iptables的规则就行了&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo nft list ruleset#验证一下，看看是不是有自动生成的规则&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;... ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Warning: table ip filter is managed by iptables-nft, do not touch!&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;table ip filter &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        chain DOCKER &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                ip daddr 172.17.0.2 iifname !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; oifname &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; tcp dport &lt;span class=&#34;m&#34;&gt;1313&lt;/span&gt; counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; accept&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        chain DOCKER-ISOLATION-STAGE-1 &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                iifname &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; oifname !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; jump DOCKER-ISOLATION-STAGE-2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        chain DOCKER-ISOLATION-STAGE-2 &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                oifname &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; drop&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        chain FORWARD &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nb&#34;&gt;type&lt;/span&gt; filter hook forward priority filter&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; policy accept&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; jump DOCKER-USER&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; jump DOCKER-ISOLATION-STAGE-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                oifname &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; ct state related,established counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; accept&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                oifname &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; jump DOCKER&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                iifname &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; oifname !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; accept&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                iifname &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; oifname &lt;span class=&#34;s2&#34;&gt;&amp;#34;docker0&amp;#34;&lt;/span&gt; counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; accept&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        chain DOCKER-USER &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                counter packets &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; bytes &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
        </item></channel>
</rss>
