KVM服务器Linux网桥出现问题,因为Netfilter阻止了所有流量到VM的流量和流量从VM流出,我只能从虚拟机管理程序处理,在进一步的故障排除中,我注意到问题出在Netfilter过滤流量上,解决这个问题的方法是防止桥接流量被推送到主机的iptables规则。
netfilter和iptables简介 netfilter是Linux提供的框架,允许以自定义处理程序的形式实现各种与网络相关的操作。iptables是一种广泛使用的防火墙工具,它与内核的netfilter包过滤框架相连接。
iptables防火墙通过与Linux内核网络堆栈中的数据包过滤挂钩进行交互来工作,这些kernel hooks称为netfilter框架。 参考:Linux系统管理员要知道的16个iptables使用技巧。
在KVM桥上禁用netfilter的方法 为了防止桥接流量被推送到主机的iptables规则,需要在/proc/sys/目录中设置kernel settings,这可以是运行时更改或持久性。 要快速概述/proc/sys/目录中可配置的所有设置,请输入以下命令: # sysctl -a 可以使用sysctl命令代替echo,以将值分配给/proc/sys/目录中的可写文件,因此,让我们在KVM桥上禁用netfilter,对于运行时更改,运行: # echo 0 > /proc/sys/net/bridge/bridge-nf-call-arptables # echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables # echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables 请注意,重新启动计算机时,/proc/sys/中的这些特殊设置将丢失,要保留自定义设置,请将它们添加到/etc/sysctl.conf文件中: # cat >> /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 # sysctl -p /etc/sysctl.conf 每次系统引导时,init程序都会运行/etc/rc.d/rc.sysinit脚本,该脚本包含使用/etc/sysctl.conf执行sysctl的命令,以确定传递给kernel的值。 如果现在正常工作,请测试你的网桥连接。
相关主题 |