Linux 虚拟机防火墙如何实现 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
bitllion
V2EX    Linux

Linux 虚拟机防火墙如何实现

  •  
  •   bitllion 2023-09-01 15:53:37 +08:00 2247 次点击
    这是一个创建于 771 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在 linux ( centos8 )宿主机上创建了一个名叫 switch 的网桥,这样宿主机和虚拟机都能通过这个网桥上网。

    现在有个问题,我想限制外部访问虚拟机的流量,通过nmcli c show命令查看虚拟机启动后多了一个名叫 vnet0 的tun类型的设备,这个设备应该是虚拟机的虚拟网卡吧 ?

    那么理论上可以使用 iptables 命令对 vnet0 设备进行流量过滤从而达到 限制外部访问虚拟机的目的。 所以我尝试使用 iptables -A INPUT -i vnet0 -m mac --mac-source fe:54:00:1a:71:a9 -j DROP , 但规则没有生效,请问各位大佬有什么办法呢

    12 条回复    2023-10-11 14:19:04 +08:00
    NessajCN
        1
    NessajCN  
       2023-09-01 16:06:51 +08:00
    你给虚拟机设置防火墙为什么不进虚拟机里设,而是在宿主机上设?
    bitllion
        2
    bitllion  
    OP
       2023-09-01 16:12:22 +08:00
    @NessajCN 因为想做一个云的防火墙
    NessajCN
        3
    NessajCN  
       2023-09-01 16:27:52 +08:00
    @bitllion 那你的正确做法应该是在虚拟机上开放接口供远程修改虚拟机的防火墙配置,而不是在宿主机上动手脚。
    或者你的意思是类似云服务商那样网页上修改虚拟机的防火墙?那是通过修改网关的防火墙配置来实现的不是改宿主机。如果你的宿主机提供的只是桥接,那你要去路由那边改防火墙才对
    bitllion
        4
    bitllion  
    OP
       2023-09-01 16:39:49 +08:00
    @NessajCN 我这里只想做在宿主机下限制本地多个虚拟机的流量,因为我们的虚拟机没有对公网提供服务的设计,如果有那是做的网关上的端口映射,我的设计是 提供一个类似于 VPC 网络下的虚拟机防火墙
    zbinlin
        5
    zbinlin  
       2023-09-01 16:40:23 +08:00
    改用 FORWARD chain 试试
    NessajCN
        6
    NessajCN  
       2023-09-01 16:44:07 +08:00
    @bitllion 桥接的网卡不能通过宿主机限制虚拟机流量,你可以理解为 你现在的需求类似于在电脑 A 上限制同局域网下电脑 B 的流量。或者你改成 nat 就可以了,这样相当与你拿宿主机当虚拟机的网关
    wangbin526
        7
    wangbin526  
       2023-09-01 16:46:55 +08:00
    参考下通过宿主机的防火墙控制本机 Docker 容器网络的方案,可能会有帮助
    https://github.com/chaifeng/ufw-docker
    bitllion
        8
    bitllion  
    OP
       2023-09-01 16:54:10 +08:00
    @NessajCN 那 pve(promox) 是可以实现对同局域网下虚拟机的防火墙,我看我启用了 pve 的虚拟机的防火墙后,宿主机 iptables 会多出相应的安全规则
    yanqiyu
        9
    yanqiyu  
       2023-09-01 18:29:14 +08:00
    这种情况下网络请求是从桥上走的,估计得开 bridge-nf-call-iptables 才能让这些请求被过滤
    但是要注意这么开可能有别的副作用
    tomychen
        10
    tomychen  
       2023-09-06 14:25:23 +08:00
    如果没记错,虚拟网卡应该走了 NAT 出去,优先级上而言 filter 在 nat 后面,所以包不会过 input/output 链,部分版本的 nat 有 INPUT/OUTPUT filter ,没试过,但楼上有提到了,FORWARD 应该是可以断下来的
    7890qwaszx
        11
    7890qwaszx  
       2023-10-09 13:01:19 +08:00
    网桥( br )得用 ebtables
    iptables 管不到网桥上的一些流量
    bitllion
        12
    bitllion  
    OP
       2023-10-11 14:19:04 +08:00
    回复大家下这里实现了 iptables 对虚拟机的流量控制

    #ipv4d 转发不用开启
    sysctl net.ipv4.ip_forward=0

    # 需要开启桥的 iptables 转发
    sysctl net.bridge.bridge-nf-call-iptables=1

    # 创建和虚拟机 id 相同名字的规则链
    iptables -t filter -N kvmtest
    # 开启转发
    iptables -A FORWARD -j kvmtest
    # 添加默认规则
    iptables -A kvmtest -m state --state INVALID -j DROP
    iptables -A kvmtest -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A kvmtest -j DROP

    # 添加自定义规则
    iptables -I kvmtest -p tcp --dport 22 -j ACCEPT #和平常添加自定义规则一样
    iptables -I kvmtest -p tcp --dport 80 -j ACCEPT
    iptables -I kvmtest -p icmp -j ACCEPT

    # 删除规则链 需要依次删除转发、清楚规则链中内容、再删除规则链
    iptables -D FORWARD -j kvmtest
    iptables -F kvmtest
    iptables -X kvmtest
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5445 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 09:09 PVG 17:09 LAX 02:09 JFK 05:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86