因为我家里有一台服务器,所以打算利用闲置资源开 VPS 进行出租。考虑到安全问题,我需要禁止虚拟机访问物理机所在的网段,同时还需要禁止虚拟机之间互相访问,防止一台虚拟机中毒感染其他虚拟机。
目前有以下需求:
我尝试过 Libvirt 自带的 nwfilter 功能,我用了下面这个配置,但是会导致虚拟机不能上网
<filter name='deny-lan' chain='ipv4' priority='-700'>
<uuid>fce8ae34-e69e-83bf-262e-30786c1f8079</uuid>
<rule action='drop' direction='inout' priority='205'>
<ip dstipaddr='192.168.122.0' dstipmask='24'/>
</rule>
<rule action='accept' direction='inout' priority='204'>
<ip dstipaddr='192.168.122.1' dstipmask='32'/>
</rule>
<rule action='drop' direction='inout' priority='205'>
<ip dstipaddr='192.168.3.0' dstipmask='24'/>
</rule>
<rule action='accept' direction='inout' priority='204'>
<ip dstipaddr='192.168.3.181' dstipmask='32'/>
</rule>
</filter>
具体我是参考这篇文章的: https://www.so-cools.com/?p=1087
搞了很久也没搞定这个问题,只能来求助万能的 V2EX 了……
可以用 iptables 或者其他东西,只要能实现上面三个需求就行,付费也可以(
1
HuasLeung 2019-04-27 06:58:03 +08:00 via Android 1
|
2
singerll 2019-04-27 07:59:26 +08:00 via Android
没有了解过 kvm 网络,不过你可以用一些轻量私有云。有个疑问,虚拟机为什么可以访问宿主机???
|
3
singerll 2019-04-27 08:01:00 +08:00 via Android 1
你也可以三个虚拟机创建三个桥接网卡,删除相关路由表试一试
|
4
gam2046 2019-04-27 09:43:16 +08:00 2
参考方案:
物理机物理网络出口 eth0 (假设物理网络网段:192.168.200/24 ) 每个 VM 使用一个独立网卡 nat,并划定一个固定网段,如 192.168.100.0/24。每个虚拟机可以使用相同的网段,因相互不同,不存在冲突。 此时,每个虚拟机之间是无法相互访问的。 在物理机上使用 iptables,将来源 IP 为 192.168.100.0/24 且目标位置为 192.168.200.0/24 的数据包直接 drop 即可(似乎直接丢 INPUT 链就可以?) 当然 NAT 的方案也可以用 VLAN 来实现,其他都一样。 |
5
woyaojizhu8 2020-05-21 23:49:28 +08:00
@gam2046 请问,如果还要禁止它访问物理机,应该怎么做?比如物理机上开了一个 web 服务,因为疏忽监听了 0.0.0.0:80,得让这个虚拟机无法访问它
|