更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 在Linux KVM网桥上禁用Netfilter的方法

在Linux KVM网桥上禁用Netfilter的方法

更新时间:2023-01-22 15:57:01浏览次数:783+次

最近,我的KVM服务器Linux网桥出现问题,原因是Netfilter阻止了所有到VM的流量和从VM流出的流量。我只能从虚拟机管理程序访问虚拟机。在进一步的故障排除中,我注意到问题出在Netfilter过滤流量上。解决方案是防止桥接流量通过主机的iptables规则。

Netfilter和iptables简介

Netfilter是Linux提供的一个框架,它允许以定制处理程序的形式实现各种与网络相关的操作。iptables是一种广泛使用的防火墙工具,它与内核的netfilter数据包过滤框架交互。

\

iptables防火墙通过与Linux内核网络堆栈中的数据包过滤挂钩交互来工作。这些内核钩子称为netfilter框架。

禁用KVM网桥上的netfilter

为了防止桥接流量通过主机的iptables规则,需要在/proc/sys/目录中设置内核设置。这可以是运行时更改或持久性更改。

要快速查看/proc/sys/目录中可配置的所有设置,请键入以下命令:

sudo sysctl -a

sysctl命令可以用来代替echo,为/proc/sys/目录中的可写文件分配值。因此,让我们禁用KVM网桥上的netfilter,对于运行时更改,请运行:

echo 0 | sudo tee /proc/sys/net/bridge/bridge-nf-call-arptables

echo 0 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables

echo 0 | sudo tee /proc/sys/net/bridge/bridge-nf-call-ip6tables

\

请注意,在重新启动计算机时,/proc/sys/中的这些特殊设置会丢失。要保留自定义设置,请将它们添加到/etc/sysctl.conf文件中:

sudo tee -a /etc/sysctl.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 0

net.bridge.bridge-nf-call-iptables = 0

net.bridge.bridge-nf-call-arptables = 0

EOF

\

重新加载:

sudo sysctl -p /etc/sysctl.conf

每次系统启动时,init程序都会运行/etc/rc.d/rc.sysinit脚本,该脚本包含一个使用/etc/sysctl.conf执行sysctl的命令,以确定传递给内核的值。

至此,现在可以测试您的网桥连接是否正常了。