今天看了 libvirt 的 netfilter 配置,不知道是如何实现的,偶然看了ebtables 的nat表,发现了玄机。下面直接使用ebtables 设置vm 网络控制。
在server上查看两台两台虚拟机的网卡名称,我这里是 vnet0 vnet1
两台虚拟机都在一台server上,下面的配置都是在这台server上进行
1、两台VM只允许tcp通信
-------------------------------
ebtables -t nat -A PREROUTING -i vnet0 -p IPv4 --ip-proto ! tcp -j DROP
ebtables -t nat -A PREROUTING -i vnet1 -p IPv4 --ip-proto ! tcp -j DROP
ebtables -t nat -A POSTROUTING -o vnet0 -p IPv4 --ip-proto ! tcp -j DROP
ebtables -t nat -A POSTROUTING -o vnet1 -p IPv4 --ip-proto ! tcp -j DROP
-删除上面的规则
ebtables -t nat -D PREROUTING -i vnet0 -p IPv4 --ip-proto ! tcp -j DROP
ebtables -t nat -D PREROUTING -i vnet1 -p IPv4 --ip-proto ! tcp -j DROP
ebtables -t nat -D POSTROUTING -o vnet0 -p IPv4 --ip-proto ! tcp -j DROP
ebtables -t nat -D POSTROUTING -o vnet1 -p IPv4 --ip-proto ! tcp -j DROP
2、两台VM不允许tcp通信,其他可以
-----------------------------
ebtables -t nat -A PREROUTING -i vnet0 -p IPv4 --ip-proto tcp -j DROP
ebtables -t nat -A PREROUTING -i vnet1 -p IPv4 --ip-proto tcp -j DROP
ebtables -t nat -A POSTROUTING -o vnet0 -p IPv4 --ip-proto tcp -j DROP
ebtables -t nat -A POSTROUTING -o vnet1 -p IPv4 --ip-proto tcp -j DROP
-删除上面的规则
ebtables -t nat -D PREROUTING -i vnet0 -p IPv4 --ip-proto tcp -j DROP
ebtables -t nat -D PREROUTING -i vnet1 -p IPv4 --ip-proto tcp -j DROP
ebtables -t nat -D POSTROUTING -o vnet0 -p IPv4 --ip-proto tcp -j DROP
ebtables -t nat -D POSTROUTING -o vnet1 -p IPv4 --ip-proto tcp -j DROP
阅读(1512) | 评论(0) | 转发(0) |