我有一台 Debian 服务器,带有一个网络接口,我已经为 KVM 和 shorewall 配置了一个桥接器,同一接口中的两个区域 所以我有“net”区域和用于 kvm 客户的“kvm”,这里是 /etc/shorewall 中的相关文件:
接口
#ZONE INTERFACE OPTIONS
net br0 tcpflags,logmartians,nosmurfs,sourceroute=0,dhcp
区域
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
kvm:net ipv4
主办方
#ZONE HOSTS OPTIONS
kvm br0:192.168.1.0/24 -
kvm 区域是网络区域的子区域,现在我想为 kvm 客户提供网络访问:
斯奈特
#ACTION SOURCE DEST
MASQUERADE 192.168.1.0/24 br0
最后是以下策略文件:
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW all ACCEPT
kvm net ACCEPT
kvm $FW DROP info
net all DROP #info
# The FOLLOWING POLICY MUST BE LAST
all all REJECT #info
我还配置了一个 dhcp 服务器来为客人提供 IP,并在 shorewall.conf 中允许 ip_forward
一切正常,但我看到很多邻居服务器向 dhcp 服务器发出请求并从中获取 IP。
如果我理解正确的话,每个使用我的 kvm IP 范围的邻居都是我的 kvm 区域的一部分,并通过我的防火墙获得 Internet 访问权限
我想过通过 mac 地址过滤 kvm 区域成员,但我不认为这是一个好的解决方案,因为 mac 地址可以轻松设置,我该如何解决这个问题?
答案1
如果我理解您的情况正确,您希望将您的访客与非访客分开,并使用 shorewall 以不同的方式控制他们的互联网和服务访问。我认为最简单的方法是将这两组分成不同的区域。访客将连接到私人网桥,非访客将连接到局域网。我在下面创建了一些示例配置文件来说明我的观点。我不知道您希望非访客在多大程度上访问互联网或 kvm 网络中的服务,因此为了简单起见,我阻止了互联网访问并允许访问所有服务。
接口
#ZONE INTERFACE OPTIONS
kvm br0
net eth0 tcpflags,logmartians,nosmurfs,sourceroute=0,dhcp
区域
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
net ipv4
kvm ipv4
lan:net ipv4
主办方
#ZONE HOSTS OPTIONS
lan eth0:192.168.1.0/24
政策
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
$FW all ACCEPT
kvm net ACCEPT
kvm lan ACCEPT
kvm $FW DROP info
lan net DROP
lan kvm ACCEPT
lan $FW DROP
net all DROP #info
# The FOLLOWING POLICY MUST BE LAST
all all REJECT #info