私は1つのネットワークインターフェースを持つDebianサーバーを1つ持っていて、KVMとshorewallのブリッジを設定しました。同じインターフェース内の2つのゾーン つまり、kvm ゲスト用の「net」ゾーンと「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
また、ゲストにIPを提供するためのDHCPサーバーを設定し、shorewall.confでip_forwardを許可しました。
すべては動作していますが、多数の近隣サーバーが DHCP サーバーに要求を送信し、そこから IP を取得していることがわかります。
私がこれを正しく理解していれば、私のKVM IP範囲を使用するすべての近隣は私のKVMゾーンの一部であり、私のファイアウォールを介してインターネットにアクセスしています。
KVM ゾーン メンバーを MAC アドレスでフィルタリングすることを考えましたが、MAC アドレスは簡単に設定できるため、これは良い解決策ではないと思います。どうすれば解決できますか?
答え1
私が状況を正しく理解しているのであれば、ゲストと非ゲストを分離し、shorewall を使用してインターネットとサービスへのアクセスを別々に制御したいということですね。これを行う最も簡単な方法は、これら 2 つのグループを別のゾーンに分けることだと思います。ゲストはプライベート ブリッジに接続され、非ゲストは LAN に接続されます。私のポイントを説明するために、以下にいくつかのサンプル構成ファイルを作成しました。非ゲストがインターネットや 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