almalinux虚机如何转换iptables-nft

最新版的almalinux系统使用了iptables-nft,WSL2系统却不支持会导致问题的,所以,请教一下如何才能把WSL虚机almalinux上的iptables-nft转换成iptables-legacy,以使本人安装的docker可以启动?

img

使用update-alternatives --config iptables返回如下图

img

如果你的WSL2虚拟机上的AlmaLinux系统不支持iptables-nft,而你需要使用iptables-legacy,可以按照以下步骤进行转换:

首先,你需要安装iptables-legacy。在AlmaLinux系统上,可以使用以下命令安装:

Copy
sudo dnf install iptables-services


安装完成后,你需要停止iptables-nft服务,并启动iptables-legacy服务:

Copy
sudo systemctl stop iptables-nft.service
sudo systemctl enable iptables.service
sudo systemctl start iptables.service

现在,你可以使用iptables-legacy来配置防火墙规则了。例如,要允许HTTP流量,可以使用以下命令:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

```

然后,你需要保存配置:

sudo service iptables save

这将保存你的iptables-legacy配置,以便在系统重新启动后自动加载。
需要注意的是,iptables-legacy和iptables-nft是不同的工具,使用语法和配置方式也有所不同。因此,在使用iptables-legacy时,你需要熟悉其使用方法和语法,以便正确地配置防火墙规则。此外,如果你需要使用一些高级的防火墙功能,例如网络地址转换(NAT)、连接跟踪等,你可能需要使用其他工具,例如nftables。因此,你可以根据自己的需求和实际情况选择适合的工具。


要在WSL虚机almalinux上将iptables-nft转换为iptables-legacy,可以按照以下步骤进行操作:

首先,需要安装iptables-legacy。在almalinux系统中,可以通过以下命令进行安装:

sudo dnf install iptables-services
安装完成后,需要停止并禁用iptables-nft服务,然后启用iptables-legacy服务。可以使用以下命令进行操作:

sudo systemctl stop iptables-nft.service
sudo systemctl disable iptables-nft.service
sudo systemctl enable iptables.service
sudo systemctl start iptables.service
然后,需要将iptables-nft的规则转换为iptables-legacy的规则。可以使用以下命令进行转换:

sudo iptables-restore-translate -f /etc/sysconfig/iptables > /etc/sysconfig/iptables.legacy
sudo iptables-restore /etc/sysconfig/iptables.legacy
最后,需要重启docker服务,以使其使用新的iptables-legacy规则。可以使用以下命令进行操作:

sudo systemctl restart docker.service
完成以上步骤后,WSL虚机almalinux上的iptables-nft就会被转换为iptables-legacy,docker也就可以正常启动了。需要注意的是,转换规则可能会有所不同,具体操作需要根据实际情况进行调整。

您可以按照以下步骤来将 iptables-nft 转换为 iptables-legacy:

  1. 检查当前 iptables 版本,确认 iptables-nft 是否已安装:

    sudo iptables --version
    
  2. 安装 iptables-legacy:

    sudo apt-get update
    sudo apt-get install iptables-legacy
    
  3. 配置 iptables:

    sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
    sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
    
  4. 测试 iptables 是否已切换到 iptables-legacy:

    sudo iptables --version
    

注意:在此切换iptable设置时,请确保您已熟悉 iptables 的用法,并且已经备份好原始的 iptables 配置。如果您需要再次切换回 iptables-nft,请使用以下命令:

sudo update-alternatives --set iptables /usr/sbin/iptables-nft
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft

希望以上说明对您有所帮助。