求助: KVM 虚拟机网络隔离问题

 https://www.v2ex.com/t/559121

因为我家里有一台服务器,所以打算利用闲置资源开 VPS 进行出租。考虑到安全问题,我需要禁止虚拟机访问物理机所在的网段,同时还需要禁止虚拟机之间互相访问,防止一台虚拟机中毒感染其他虚拟机。

简略网络架构图

img

目前有以下需求:

  1. 虚拟机之间不允许互相访问
  2. 虚拟机可以访问 192.168.122.1 网关
  3. 虚拟机不允许访问 192.168.3.xxx 网段,192.168.3.181 除外。

我尝试过 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 或者其他东西,只要能实现上面三个需求就行,付费也可以(

5 条回复    2020-05-21 23:49:28 +08:00
HuasLeung
    1
HuasLeung   2019-04-27 06:58:03 +08:00 via Android   ❤️ 1
singerll
    2
singerll   2019-04-27 07:59:26 +08:00 via Android
没有了解过 kvm 网络,不过你可以用一些轻量私有云。有个疑问,虚拟机为什么可以访问宿主机???
singerll
    3
singerll   2019-04-27 08:01:00 +08:00 via Android   ❤️ 1
你也可以三个虚拟机创建三个桥接网卡,删除相关路由表试一试
gam2046
    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 来实现,其他都一样。
woyaojizhu8
    5
woyaojizhu8   337 天前
@gam2046 请问,如果还要禁止它访问物理机,应该怎么做?比如物理机上开了一个 web 服务,因为疏忽监听了 0.0.0.0:80,得让这个虚拟机无法访问它

留言

這個網誌中的熱門文章

DeepNude 2.0 – Deepnude AI算法一键脱衣,绿色破解版,免费下载

用数字货币洗钱,警察蜀黍就没招了吗?| 浅黑笔记

最简单的Trojan一键脚本,效率高/速度快/延迟低,支持tls1.3,系统要求>=Centos7