首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许443端口(https调用)和块80端口(http调用)上的出口流量

如何允许443端口(https调用)和块80端口(http调用)上的出口流量
EN

Stack Overflow用户
提问于 2021-07-06 13:41:00
回答 1查看 591关注 0票数 1

我正在K3s上为我的应用程序实现kubernetes网络策略。我希望允许egress (从pod到internet的外部调用)用于端口443,即https调用only,并拒绝/阻止80端口上的所有出口调用,即http。简而言之,允许https出口调用,并拒绝http出口调用。

我正在用下面的custom-dns.yaml文件测试这个文件:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: foo-deny-egress
spec:
  podSelector:
    matchLabels:
      app: foo
  policyTypes:
  - Egress
  egress:
  # allow DNS resolution
  - ports:
    - port: 443
      protocol: UDP
    - port: 443
      protocol: TCP

kubectl apply -f custom-dns.yaml之后,我创建并登录到pod :kubectl run --restart=Never pod-v1 --image=busybox -i -t -l app=foo,并通过命令测试http和https url:

  1. wget https://www.google.com
  2. wget http://drive.google.com/drive/u/0/my-drive

这两个wget命令都会导致wget: bad address错误。

但是,当我不应用此网络策略时,相同的wget命令正在工作&给出以下结果来自相同的结束符:

i.

代码语言:javascript
复制
        wget https://www.google.com
        Connecting to www.google.com (172.217.167.164:443)
        wget: note: TLS certificate validation not implemented
        saving to 'index.html'
        index.html           100% |******************************************************| 15264  0:00:00 ETA
       'index.html' saved

ii.

代码语言:javascript
复制
wget http://drive.google.com/drive/u/0/my-drive
Connecting to drive.google.com (142.250.192.46:80)
Connecting to drive.google.com (142.250.192.46:443)
wget: note: TLS certificate validation not implemented
Connecting to accounts.google.com (142.250.192.77:443)
saving to 'my-drive'
my-drive             100% |******************************************************| 92019  0:00:00 ETA
'my-drive' saved

iii. Telnet to google.com IP 172.217.167.16480 & 443端口

代码语言:javascript
复制
#telnet 172.217.166.164 80
Connected to 172.217.166.164
^]q
# telnet 172.217.166.164 443
Connected to 172.217.166.164
^]

iv.与drive.com IP 142.250.192.46类似,80 & 443端口正在发生

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-06 19:34:01

您在文章中提到的

  • networkPolicy只允许443上的https/通信量,但您没有在其中提到任何东西来拒绝http(端口80)流量。

  • 有两种实现方法:

代码语言:javascript
复制
- Setup a default deny policy for egress

任一

代码语言:javascript
复制
- create another egress policy where you deny egress on port 80
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68271660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档