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

Networking 如何在Centos 7上为KVM路由网桥配置防火墙,networking,centos,firewall,kvm,bridge,Networking,Centos,Firewall,Kvm,Bridge,我想设置多个虚拟机来运行webserver、postfix等 我的ISP提供了一些公共IP地址。我的主机系统运行的是Centos 7,我的虚拟机运行的是Debian Wheezy。因为我的主机根据MAC地址限制对交换机的访问,所以我不能使用完整的网桥 相反,我配置了一个路由网桥 我已成功设置了这两台计算机,但如果主机上的防火墙处于活动状态,则vm无法连接到internet。如果我的防火墙处于活动状态,我可以从我的虚拟机ping internet上的计算机,但不能执行其他操作 如何在Centos

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

我的ISP提供了一些公共IP地址。我的主机系统运行的是Centos 7,我的虚拟机运行的是Debian Wheezy。因为我的主机根据MAC地址限制对交换机的访问,所以我不能使用完整的网桥

相反,我配置了一个路由网桥

我已成功设置了这两台计算机,但如果主机上的防火墙处于活动状态,则vm无法连接到internet。如果我的防火墙处于活动状态,我可以从我的虚拟机ping internet上的计算机,但不能执行其他操作

如何在Centos 7下配置防火墙,使br0上的虚拟机能够访问internet

感谢您的帮助。多谢各位

网络配置主机

主机:/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/networkscripts/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/网络/接口

 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
防火墙设置主机 防火墙命令-列出所有

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

提前非常感谢。

要完成此任务,您有两个选择

选项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:

添加直接防火墙规则

防火墙cmd-direct-add-chain ipv4筛选器转发0-m physdev-physdev已桥接-j接受


要实现这一目标,您有两个选择

选项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:

添加直接防火墙规则

防火墙cmd-direct-add-chain ipv4筛选器转发0-m physdev-physdev已桥接-j接受


在使用firewalld的CentOS 8和CentOS 7上,有一种更简单的方法可以让所有路由桥接KVM虚拟机完全不受限制地访问internet,而无需处理防火墙规则

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

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

希望这会有所帮助。

在CentOS 8上,可能在CentOS 7上使用firewalld,有一种更简单的方法可以让所有路由桥接KVM虚拟机完全不受限制地访问internet,而无需处理防火墙规则

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

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

希望这有帮助。

注意,该命令应该使用-add rule而不是-add chain:firewall cmd-direct-add rule ipv4筛选器FORWARD 0-m physdev-physdev is bridged-j ACCEPTNote,命令应使用-add rule and not-add chain:firewall cmd-direct-add rule ipv4筛选器FORWARD 0-m physdev-physdev已桥接-j ACCEPTI在花了两天时间处理桥接器和NetworkManager设置后,我可以确认此解决方案对我有效。如果好奇,您可以确认此解决方案在哪个系统上工作?我在CentOS 8上进行了测试。至少对我来说,问题是谷歌搜索bridge,kvm也得到了同样的结果。当我读到你的答案时,我突然意识到firewalld比我过去习惯的传统iptables灵活得多。感谢您的推荐。在花了两天时间处理桥接器和NetworkManager设置后,我可以确认此解决方案对我有效。出于好奇,您可以确认此解决方案在哪个系统上有效?我在CentOS 8上进行了测试。至少对我来说,问题是谷歌搜索bridge,kvm也得到了同样的结果。当我读到你的答案时,我突然意识到firewalld比我过去习惯的传统iptables灵活得多。谢谢你的推荐。