我想设置多个虚拟机来运行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:
非常感谢你。
答案 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
希望这会有所帮助。