我有一台帶有網路介面的 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 區域是 net 區域的子區域,現在我想為 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 區域的一部分,並且透過我的防火牆訪問互聯網
我想過透過 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