即使获得授权,DNS 查找仍然被阻止

问题描述

我的允许 DNS 和 Calico 网络策略的规则不起作用。使用带有 DNS 的 CURL 仍然被阻止!

我的用例:除了与 S3 服务的通信之外,我希望删除所有外部网络。允许 ONLY S3 的 IP 有效,因为除了我设置的 IP 之外,其他所有内容都被阻止。但是使用与此 IP 关联的 DNS 也被阻止,我不知道为什么。

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
Metadata:
  name: allow-egress-external
  namespace: demo
spec:
  order: 2
  selector:
    color == 'red'
  types:
    - Egress
  egress:
    - action: Allow
      protocol: UDP
      destination:
        ports:
        - 53

这应该允许任何带有 color: red 标签的 Pod 与 DNS 通信。

我还有一个拒绝规则设置如下:

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
Metadata:
  name: default-deny
  namespace: demo
spec:
  order: 1
  selector: all()
  types:
  - Egress

最后是允许某个 IP 通过的规则:

apiVersion: projectcalico.org/v3
kind: NetworkPolicy
Metadata:
  name: allow-egress-external
  namespace: demo
spec:
  order: 3
  selector:
    color == 'red'
  types:
    - Egress
  egress:
    - action: Allow
      destination:
        nets:
        - <some_ip>/32

但是当我卷曲应该解析为“”的 DNS 时,请求被阻止。虽然卷曲 直接有效。

任何帮助将不胜感激,
谢谢


编辑 1

例如:

政策升级

  • 授权我的目标服务 IP
  • 授权的 DNS 查找
$ curl <targeted_dns> -v
* Expire in 0 ms for 6 (transfer 0x5638bf7edfb0)
* Expire in 1 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 0 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 1 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 0 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 0 ms for 1 (transfer 0x5638bf7edfb0)
* Expire in 1 ms for 1 (transfer 0x5638bf7edfb0)
[timeout for ever]

应该已经被解析,然后生成的 IP 应该被授权通过,因为它已经被手动授权。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)