gul*_*chi 1 networking firewall bridge centos kvm
我想设置多个虚拟机来运行 webserver、postfix 等。
我有一些来自 ISP 的公共 IP 地址。我的主机系统运行 Centos 7,我的虚拟机运行 Debian Wheezy。由于我的主机根据 MAC 地址限制对交换机的访问,因此我不能使用“完整”网桥。
相反,我配置了一个路由桥(见 http://wiki.hetzner.de/index.php/Proxmox_VE)
我已成功设置两台机器,但如果主机上的防火墙处于活动状态,则虚拟机无法连接到 Internet。如果我的防火墙处于活动状态,我可以从我的虚拟机 ping 互联网上的机器,但没有别的。
如何在 Centos 7 下配置我的防火墙以让 br0 上的虚拟机访问互联网?
任何帮助表示赞赏。非常感谢。
网络配置主机
主机:/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"
Run Code Online (Sandbox Code Playgroud)
主机:/etc/sysconfig/network-scripts/route-enp2s0
ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=A.A.A.1
Run Code Online (Sandbox Code Playgroud)
主机:/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
Run Code Online (Sandbox Code Playgroud)
主机:/etc/sysconfig/network-scripts/route-br0
ADDRESS0=B.B.B.160
NETMASK0=255.255.255.255
Run Code Online (Sandbox Code Playgroud)
网络配置虚拟机
虚拟机:/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
Run Code Online (Sandbox Code Playgroud)
防火墙设置 主机 firewall-cmd --list-all
public (default, active)
interfaces: br0 enp2s0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
Run Code Online (Sandbox Code Playgroud)
非常感谢您提前。
小智 5
要实现这一目标,您有两个选择。
Option1 :(从安全角度推荐这种方法)
在配置的网桥上禁用 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