如何在Centos 7上为KVM路由桥配置防火墙

时间:2015-04-07 20:17:43

标签: networking centos firewall kvm bridge

我想设置多个虚拟机来运行webserver,postfix等。

我的ISP提供了一些公共IP地址。我的主机系统正在运行Centos 7,而我的虚拟机正在运行Debian Wheezy。由于我的主机限制基于MAC地址访问交换机,我不能使用“完整”桥。

相反,我配置了路由桥(see http://wiki.hetzner.de/index.php/Proxmox_VE

我已成功设置了两台计算机,但如果我的主机上的防火墙处于活动状态,则vm无法连接到Internet。如果我的防火墙处于活动状态,我可以通过我的虚拟机ping互联网上的机器,但没有别的。

如何在Centos 7下配置我的防火墙,以便让虚拟机能够访问互联网?

感谢任何帮助。非常感谢你。

网络配置主机

主机:/ etc / sysconfig / network-scripts / ifcfg-enp2s0

 BOOTPROTO=none
 DEVICE=enp2s0
 ONBOOT=yes
 IPADDR=A.A.A.42
 NETMASK=255.255.255.255
 SCOPE="peer A.A.A.1"

主机:/ etc / sysconfig / network-scripts / route-enp2s0

 ADDRESS0=0.0.0.0
 NETMASK0=0.0.0.0
 GATEWAY0=A.A.A.1

主机:/ etc / sysconfig / network-scripts / ifcfg-br0

 DEVICE=br0
 TYPE="Bridge"
 ONBOOT=yes
 BOOTPROTO=none
 IPADDR=A.A.A.42
 NETMASK=255.255.255.255
 STP=off
 DELAY=0

主机:/ etc / sysconfig / network-scripts / route-br0

 ADDRESS0=B.B.B.160
 NETMASK0=255.255.255.255

网络配置虚拟机

虚拟机:/ etc / network / interfaces

 auto lo
 iface lo inet loopback
 allow-hotplug eth0
 iface eth0 inet static
         address B.B.B.160
         netmask 255.255.255.255
         pointopoint A.A.A.42
         gateway A.A.A.42

防火墙设置主机 firewall-cmd --list-all

public (default, active)
  interfaces: br0 enp2s0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

非常感谢你。

2 个答案:

答案 0 :(得分:3)

要完成,您有两种选择。

选项1 :(从安全角度来看,建议使用此方法)

在配置的网桥上禁用netfilter

#vi /etc/sysctl.conf

  

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

     

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

     

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

检查之前/之后的值。

#sysctl -p /etc/sysctl.conf

<强>选项2:

添加直接防火墙规则

  

firewall-cmd --direct --add-chain ipv4 filter FORWARD 0 -m physdev --physdev-is-bridged -j ACCEPT

答案 1 :(得分:2)

在具有防火墙功能的CentOS 8(可能还有CentOS 7)上,有一种更简便的方法,可以在不处理防火墙规则的情况下,使所有路由桥接KVM虚拟机完全不受限制地访问Internet。

默认情况下,所有接口都绑定到公共防火墙区域。 但是有多个区域,即firewall-cmd --list-all-zones,其中一个称为trusted,这是未经过滤的防火墙区域,默认情况下接受所有数据包。 因此,您只需将网桥接口绑定到该区域即可。

firewall-cmd --remove-interface br0 --zone=public --permanent
firewall-cmd --add-interface br0 --zone=trusted --permanent
firewall-cmd --reload

希望这会有所帮助。