如何在 lxc-container 上实现 iptables?

如何在 lxc-container 上实现 iptables?

我在 ubuntu 18.04 系统上安装了 lxc-container (fedora 29 amd64)。 Linux 容器没有防火墙命令行工具。因此我将 iptables 安装到我的容器中并且安装成功。

但是,我尝试将接口配置为丢弃所有传入和传出的数据包,但这不起作用。我在这里向您提供所有详细信息。

命令ip \a下达;

[root@fedora29 ~]# ip \a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状态 UNKNOWN 组默认 qlen 1000
    链接/环回 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 范围主机 lo
       永远有效_lft 永远首选_lft
    inet6 ::1/128 范围主机
       永远有效_lft 永远首选_lft
7: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 状态 UP 组默认 qlen 1000
    链接/以太 00:16:3e:4c:d8:bf brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.3.52/24 brd 10.0.3.255 范围全局动态 eth0
       valid_lft 3456 秒 Preferred_lft 3456 秒
    inet6 fe80::216:3eff:fe4c:d8bf/64 范围链接
       永远有效_lft 永远首选_lft

我的 iptables 规则如下;

[root@fedora29 ~]# iptables -L
链输入(策略接受)
目标 prot 选择源目的地         

链转发(策略接受)
目标 prot 选择源目的地         

链输出(策略接受)
目标 prot 选择源目的地    

因此我添加了以下两条规则

iptables --table filter --append INPUT --in-interface eth0@if8 --jump DROP
iptables --table filter --append OUTPUT --out-interface eth0@if8 --jump DROP

当我最终保存配置时

iptables-保存

[root@fedora29 ~]# iptables-save
# 由 iptables-save v1.8.0 于 2019 年 2 月 20 日星期三 08:41:43 生成
*筛选
:输入接受[0:0]
:转发接受[0:0]
:输出接受[0:0]
-A 输入 -i eth0@if8 -j 删除
-A 输出 -o eth0@if8 -j 丢弃
犯罪
# 于 2019 年 2 月 20 日星期三 08:41:43 完成

然而,在我的 ubuntu 主机系统上同样可以正常工作,其中接口名为 lxcbr0。

答案1

@if8只需从规则中的接口名称中删除即可,因为它不是接口名称的一部分。接口名称只是eth0.

@if8是有关链接对等接口的线索,并且是动态的:例如,它可能会在容器重新启动后发生变化。

想了解更多关于you的含义@if8可以看我的回答:
Ubuntu 上“ip 地址”命令输出中接口名称中的“if1@if2”是什么意思

答案2

首先,我需要感谢@AB 的回复,因为它解决了我的问题。虽然我尝试使用内置链的策略而不提供它工作的接口......

[root@fedora29 ~]# iptables --表过滤器 --策略输入删除
[root@fedora29 ~]# iptables --表过滤器 --policy 输出丢弃
[root@fedora29 ~]# iptables-save > /etc/network/iptables
[root@fedora29 ~]# iptables-apply /etc/network/iptables
应用新规则集...完成。
您可以与机器建立新的连接吗? (y/N) y
……那么我的工作就完成了。下次见。

然而,当我尝试使用列出规则时,iptables -L我确实观察到没有创建新规则,但规则的策略已修改,如图所示......

[root@fedora29 ~]# iptables -L
链INPUT(策略DROP)
目标 prot 选择源目的地         

链转发(策略接受)
目标 prot 选择源目的地         

链输出(策略DROP)
目标 prot 选择源目的地         
[root@fedora29 ~]# ping 10.0.3.1
PING 10.0.3.1 (10.0.3.1) 56(84) 字节数据。
ping:sendmsg:不允许操作
ping:sendmsg:不允许操作

--- 10.0.3.1 ping 统计数据 ---
发送 2 个数据包,接收 0 个数据包,100% 丢包,时间 23ms

[root@fedora29 ~]# iptables -S
-P 输入下降
-P 转发接受
-P 输出下降

相关内容