Calico 네트워크 정책을 사용하여 클래식 클러스터에서 트래픽 제어
Calico 정책을 사용하여 특정 IP 주소 간에 네트워크 트래픽을 허용하는 방법에 대해 알아봅니다.
다음 단계는 Classic LoadBalancers가 있는 Classic 클러스터에 대한 단계입니다.
기본적으로 Kubernetes NodePort, LoadBalancer 및 Ingress 서비스는 모든 공용 및 사설 클러스터 네트워크 인터페이스에서 앱을 사용할 수 있도록 합니다. allow-node-port-dnat
기본 Calico 정책은 NodePort, 네트워크 로드 밸런서(NLB) 및 Ingress 애플리케이션 로드 밸런서(ALB) 서비스로부터 해당 서비스가 노출하는 앱 팟(Pod)으로의 수신 트래픽을
허용합니다. Kubernetes는 대상 네트워크 주소 변환(DNAT)을 사용하여 서비스 요청을 올바른 팟(Pod)으로 전달합니다.
그러나 보안상의 이유 때문에 사용자는 특정 소스 IP 주소에서 네트워킹 서비스로의 트래픽만 허용해야 할 수 있습니다. Calico 의 Pre-DNAT 정책을 사용하여 특정 IP 주소와의 트래픽을 허용하거나 차단할 수 있습니다. Kubernetes가 일반 DNAT를 사용하여 트래픽을 팟(Pod)에 전달하기 전에 적용되므로, 사전-DNAT 정책은 특정 트래픽이 앱에 도달하지 못하도록 차단합니다. Calico 사전-DNAT 정책을 작성하는 경우, 사용자는 소스 IP 주소를 허용할지 아니면 차단할지를 선택할 수 있습니다. 대부분의 시나리오에서 특정 트래픽을 허용하면 알려진 허용된 소스 IP 주소의 트래픽을 제외한 모든 트래픽이 차단되기 때문에 가장 안전한 구성을 제공합니다. 특정 트래픽을 거부하면 일반적으로 소규모 IP 주소 세트의 공격을 방지하는 등의 시나리오에서만 유용합니다.
이 시나리오에서 사용자는 PR 회사의 네트워킹 관리자 역할을 수행하고 앱에 도달하는 일부 비정상적인 트래픽을 감지합니다. 이 튜토리얼의 학습에서는 샘플 웹 서버 앱 작성, 네트워크 로드 밸런서(NLB) 서비스를 사용한 앱 노출, 그리고 허용 목록 및 차단 목록 Calico 정책을 모두 사용한 원치 않는 비정상 트래픽으로부터의 앱 보호 과정을 안내합니다.
목표
- 상위 사전-DNAT 정책을 작성하여 모든 노드 포트로의 모든 수신 트래픽을 차단하는 방법을 알아봅니다.
- 하위 사전-DNAT 정책을 작성하여 특정 소스 IP 주소가 NLB 공인 IP 및 포트에 액세스할 수 있게 하는 방법을 알아봅니다. 하위 정책은 상위 정책을 대체합니다.
- 하위 사전-DNAT 정책을 작성하여 특정 소스 IP 주소가 NLB 공인 IP 및 포트에 액세스하지 못하게 하는 방법을 알아봅니다.
대상
이 튜토리얼은 앱에 대한 네트워크 트래픽을 관리하고자 하는 네트워크 관리자와 소프트웨어 개발자용으로 작성되었습니다.
전제조건
- 세 개 이상의 작업자 노드가 있는 클래식 클러스터를 작성하십시오. 단일 작업자 노드 클러스터에 이 튜토리얼을 완료하는 데 필요한 리소스가 없습니다. 이 튜토리얼은 VPC 클러스터에서 사용할 수 없습니다.
- 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
- Calico CLI를 설치하고 구성하십시오.
- IBM Cloud에 대해 다음의 IBM Cloud Kubernetes Service IAM 액세스 정책이 있는지 확인하십시오.
앱을 배치하고 NLB를 사용하여 이를 노출
첫 번째 학습에서는 다중 IP 주소와 포트에서 앱이 노출되는 방법과 트래픽이 클러스터로 유입되는 위치를 보여줍니다.
튜토리얼 전체에서 사용할 샘플 웹 서버 앱을 배치하여 시작하십시오. echoserver
웹 서버는 클라이언트에서 클러스터로 설정된 연결에 대한 데이터를 보여주며, PR 회사의 클러스터에 대한 액세스를 테스트할 수 있습니다. 그런 다음, 네트워크 로드 밸런서(NLB) 1.0 서비스를 작성하여 앱을 노출하십시오. NLB 1.0 서비스는 NLB 서비스 IP 주소 및 작업자 노드의 노드 포트 모두에서 앱이 사용
가능하도록 합니다.
1과가 끝날 때, 웹 서버 앱은 공용 노드 포트와 공용 NLB에 의해 인터넷에 노출됩니다.
-
샘플 웹 서버 앱을 배치하십시오. 웹 서버 앱에 연결되면 앱이 연결에서 수신된 HTTP 헤더로 응답합니다.
kubectl apply -f https://raw.githubusercontent.com/IBM-Cloud/kube-samples/master/deploy-apps-clusters/webserver.yaml
-
웹 서버 앱 팟(Pod)의 상태가
Running
인지 확인하십시오.kubectl get pods -o wide
출력 예
NAME READY STATUS RESTARTS AGE IP NODE webserver-855556f688-6dbsn 1/1 Running 0 1m 172.30.xxx.xxx 10.176.48.78 webserver-855556f688-76rkp 1/1 Running 0 1m 172.30.xxx.xxx 10.176.48.78 webserver-855556f688-xd849 1/1 Running 0 1m 172.30.xxx.xxx 10.176.48.78
-
앱을 공용 인터넷에 노출하려면 텍스트 편집기에서
webserver-lb.yaml
이라고 하는 NLB 1.0 서비스 구성 파일을 작성하십시오.apiVersion: v1 kind: Service metadata: labels: run: webserver name: webserver-lb spec: type: LoadBalancer selector: run: webserver ports: - name: webserver-port protocol: TCP port: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise.
-
NLB를 배치하십시오.
kubectl apply -f filepath/webserver-lb.yaml
-
컴퓨터에서 NLB에 의해 노출된 앱에 공용으로 액세스할 수 있는지 확인하십시오.
-
NLB의 공인 EXTERNAL-IP 주소를 가져오십시오.
kubectl get svc -o wide
출력 예
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR webserver-lb 172.21.xxx.xxx 169.xx.xxx.xxx 80:31024/TCP 2m run=webserver
-
치트 시트 텍스트 파일을 작성하고 이 텍스트 파일에 NLB IP를 복사하십시오. 치트 시트는 향후 학습에서 값을 보다 빨리 사용할 수 있도록 도움을 줍니다.
-
NLB에 대한 외부 IP에 공용으로 액세스할 수 있는지 확인하십시오.
curl --connect-timeout 10 <loadbalancer_IP>:80
다음 출력 예에서는 NLB가
169.1.1.1
공인 NLB IP 주소에 앱을 노출함을 확인합니다.webserver-855556f688-76rkp
앱 팟이 curl 요청을 수신했습니다.Hostname: webserver-855556f688-76rkp Pod Information: -no pod information available- Server values: server_version=nginx: 1.13.3 - lua: 10008 Request Information: client_address=10.176.XX.XX method=GET real path=/ query= request_version=1.1 request_scheme=http request_uri=http://169.1.1.1:8080/ Request Headers: accept=*/* host=169.1.1.1 user-agent=curl/7.54.0 Request Body: -no body in request-
-
-
컴퓨터에서 노드 포트에 의해 노출된 앱에 공용으로 액세스할 수 있는지 확인하십시오. NLB 서비스는 NLB 서비스 IP 주소 및 작업자 노드의 노드 포트 모두에서 앱이 사용 가능하도록 합니다.
-
NLB가 작업자 노드에 지정한 노드 포트를 가져오십시오. 노드 포트는 30000 - 32767 범위에 있습니다.
kubectl get svc -o wide
다음의 출력 예에서 노드 포트는
31024
입니다.NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR webserver-lb 172.21.xxx.xxx 169.xx.xxx.xxx 80:31024/TCP 2m run=webserver
-
클래식 클러스터에 대해 작업자 노드의 공인 IP 주소를 가져오십시오. VPC 클러스터의 경우에는 대신 사설 IP 주소를 가져오십시오.
ibmcloud ks worker ls --cluster <cluster_name>
출력 예
ID Public IP Private IP Machine Type State Status Zone Version kube-dal10-cr18e61e63c6e94b658596ca93d087eed9-w1 169.xx.xxx.xxx 10.176.48.67 u3c.2x4.encrypted normal Ready dal10 1.32_1513* kube-dal10-cr18e61e63c6e94b658596ca93d087eed9-w2 169.xx.xxx.xxx 10.176.48.79 u3c.2x4.encrypted normal Ready dal10 1.32_1513* kube-dal10-cr18e61e63c6e94b658596ca93d087eed9-w3 169.xx.xxx.xxx 10.176.48.78 u3c.2x4.encrypted normal Ready dal10 1.32_1513*
-
뒷부분의 학습에서 사용하기 위해 작업자 노드 및 노드 포트의 공인 IP를 텍스트 치트 시트에 복사하십시오.
-
노드 포트를 통해 작업자 노드의 공인 IP 주소에 액세스할 수 있는지 확인하십시오. 참고: VPC 클러스터의 작업자 노드에 공용 IP 주소가 없으면 VPN 연결 등을 통해 사설 VPC 네트워크에 연결된 경우에만 NodePort를 통해 앱에 액세스할 수 있습니다. 그런 다음 작업자 노드의 개인용 IP 주소 및 NodePort를 사용할 수 있습니다.
<worker_private_IP>:<NodePort>
curl --connect-timeout 10 <worker_IP>:<NodePort>
다음 출력 예는 앱에 대한 요청이 작업자 노드에 대한 사설 IP 주소
10.1.1.1
및31024
노드 포트를 통해 수신됨을 확인합니다.webserver-855556f688-xd849
앱 팟(Pod)에서 curl 요청을 수신했습니다.Hostname: webserver-855556f688-xd849 Pod Information: -no pod information available- Server values: server_version=nginx: 1.13.3 - lua: 10008 Request Information: client_address=1.1.1.1 method=GET real path=/ query= request_version=1.1 request_scheme=http request_uri=http://10.1.1.1:8080/ Request Headers: accept=*/* host=10.1.1.1:31024 user-agent=curl/7.60.0 Request Body: -no body in request-
-
이 시점에서 앱은 다중 IP 주소 및 포트에서 노출됩니다. 이러한 IP 중 대부분은 클러스터에 대해 내부적이며 사설 네트워크를 통해만 액세스가 가능합니다. 공용 노드 포트 및 공용 NLB 포트만 공용 인터넷에 노출됩니다.
그 다음에는 공용 트래픽을 차단하는 Calico 정책의 작성과 적용을 시작할 수 있습니다.
모든 노드 포트로의 모든 수신 트래픽 차단
PR 회사의 클러스터를 보호하려면 앱을 노출 중인 NLB 서비스와 노드 포트에 대한 공용 액세스를 모두 차단해야 합니다. 노드 포트에 대한 액세스 차단부터 시작하십시오.
레슨 2의 마지막 부분에서는 웹 서버 앱이 공개 NLB를 통해서만 인터넷에 노출됩니다.
-
텍스트 편집기에서, 임의의 소스 IP에서 모든 노드 포트로의 수신 TCP 및 UDP 트래픽을 거부하는
deny-nodeports.yaml
이라고 하는 상위 사전-DNAT 정책을 작성하십시오.apiVersion: projectcalico.org/v3 kind: GlobalNetworkPolicy metadata: name: deny-nodeports spec: applyOnForward: true preDNAT: true ingress: - action: Deny destination: ports: - 30000:32767 protocol: TCP source: {} - action: Deny destination: ports: - 30000:32767 protocol: UDP source: {} selector: ibm.role=='worker_public' order: 1100 types: - Ingress
-
정책을 적용하십시오.
-
Linux:
calicoctl apply -f filepath/deny-nodeports.yaml
-
Windows 및 OS X:
calicoctl apply -f filepath/deny-nodeports.yaml --config=filepath/calicoctl.cfg
출력 예
Successfully applied 1 'GlobalNetworkPolicy' resource(s)
-
-
치트 시트의 값을 사용하여 작업자 노드 공인 IP 주소 및 노드 포트에 공용으로 액세스할 수 없는지 확인하십시오.
curl --connect-timeout 10 <worker_IP>:<NodePort>
작성한 Calico 정책이 노드 포트로의 트래픽을 차단하므로 연결 제한시간이 초과됩니다.
curl: (28) Connection timed out after 10016 milliseconds
-
이전 학습에서 작성한 LoadBalancer의 externalTrafficPolicy를
Cluster
에서Local
(으)로 변경하십시오.Local
을(를) 사용하면 다음 단계에서 LoadBalancer의 외부 IP를 curl할 때 시스템의 소스 IP가 보존됩니다.kubectl patch svc webserver-lb -p '{"spec":{"externalTrafficPolicy":"Local"}}'
-
치트 시트의 값을 사용하여 NLB 외부 IP 주소에 여전히 공용으로 액세스할 수 있는지 확인하십시오.
curl --connect-timeout 10 <loadbalancer_IP>:80
출력 예
Hostname: webserver-855556f688-76rkp Pod Information: -no pod information available- Server values: server_version=nginx: 1.13.3 - lua: 10008 Request Information: client_address=1.1.1.1 method=GET real path=/ query= request_version=1.1 request_scheme=http request_uri=http://<loadbalancer_IP>:8080/ Request Headers: accept=*/* host=<loadbalancer_IP> user-agent=curl/7.54.0 Request Body: -no body in request-
출력의
Request Information
섹션에서 소스 IP 주소의 예로client_address=1.1.1.1
을 들 수 있습니다. 소스 IP 주소는 curl을 실행하기 위해 사용 중인 시스템의 공인 IP입니다. 혹은 프록시나 VPN을 통해 인터넷에 연결 중인 경우, 프록시나 VPN은 시스템의 실제 IP 주소를 숨길 수 있습니다. 두 경우 모두 NLB는 시스템의 소스 IP 주소를 클라이언트 IP 주소로 인식합니다. -
시스템의 소스 IP 주소(이전 단계 출력의
client_address=1.1.1.1
)를 향후 학습에서 사용할 치트 시트에 복사하십시오.
좋습니다! 이 시점에서 앱은 공용 NLB 포트에서만 공용 인터넷에 노출됩니다. 공용 노드 포트로의 트래픽은 차단되어 있습니다. 클러스터가 원하지 않는 트래픽으로부터 클러스터가 일부 잠금 상태입니다.
그 다음에는 특정 소스 IP의 트래픽만 허용하는 Calico 정책을 작성하고 적용할 수 있습니다.
특정 IP에서 NLB로 수신 트래픽 허용
이제 PR 회사의 클러스터에 대한 트래픽을 완전히 차단하고 자체 컴퓨터의 IP 주소만 허용하여 액세스를 테스트하기로 결정합니다.
먼저, 노드 포트 외에 앱을 노출 중인 NLB로의 모든 수신 트래픽을 차단해야 합니다. 그리고 시스템의 IP 주소를 허용하는 정책을 작성할 수 있습니다. 학습 3의 끝 부분에 나오는 공용 노드 포트 및 NLB에 대한 모든 트래픽이 차단되고 허용된 시스템 IP의 트래픽만 허용됩니다.
-
텍스트 편집기에서, 임의의 소스 IP에서 NLB IP 주소 및 포트로의 모든 수신 TCP 및 UDP 트래픽을 거부하는
deny-lb-port-80.yaml
이라고 하는 상위 사전-DNAT 정책을 작성하십시오.<loadbalancer_IP>
을(를) 치트 시트의 NLB 공용 IP 주소로 바꾸십시오.apiVersion: projectcalico.org/v3 kind: GlobalNetworkPolicy metadata: name: deny-lb-port-80 spec: applyOnForward: true preDNAT: true ingress: - action: Deny destination: nets: - <loadbalancer_IP>/32 ports: - 80 protocol: TCP source: {} - action: Deny destination: nets: - <loadbalancer_IP>/32 ports: - 80 protocol: UDP source: {} selector: ibm.role=='worker_public' order: 800 types: - Ingress
-
정책을 적용하십시오.
-
Linux:
calicoctl apply -f filepath/deny-lb-port-80.yaml
-
Windows 및 OS X:
calicoctl apply -f filepath/deny-lb-port-80.yaml --config=filepath/calicoctl.cfg
-
-
치트 시트의 값을 사용하여, 이제 공용 NLB IP 주소에 액세스할 수 없는지 확인하십시오. 작성한 Calico 정책이 NLB로의 트래픽을 차단하므로 연결 제한시간이 초과됩니다.
curl --connect-timeout 10 <loadbalancer_IP>:80
-
텍스트 편집기에서, 사용자 시스템의 IP에서 NLB IP 주소 및 포트로의 트래픽을 허용하는
allowlist.yaml
이라고 하는 하위 사전-DNAT 정책을 작성하십시오. 치트 시트의 값을 사용하여<loadbalancer_IP>
을(를) NLB의 공용 IP 주소로 바꾸고<client_address>
을(를) 시스템 소스 IP의 공용 IP 주소로 바꾸십시오. 시스템 IP가 기억나지 않으면curl ifconfig.co
를 실행할 수 있습니다.apiVersion: projectcalico.org/v3 kind: GlobalNetworkPolicy metadata: name: allowlist spec: applyOnForward: true preDNAT: true ingress: - action: Allow destination: nets: - <loadbalancer_IP>/32 ports: - 80 protocol: TCP source: nets: - <client_address>/32 selector: ibm.role=='worker_public' order: 500 types: - Ingress
-
정책을 적용하십시오.
-
Linux:
calicoctl apply -f filepath/allowlist.yaml
-
Windows 및 OS X:
calicoctl apply -f filepath/allowlist.yaml --config=filepath/calicoctl.cfg
시스템의 IP 주소가 이제 허용됩니다.
-
-
치트 시트의 값을 사용하여, 이제 공용 NLB IP 주소에 액세스할 수 있는지 확인하십시오.
curl --connect-timeout 10 <loadbalancer_IP>:80
-
다른 IP 주소가 있는 다른 시스템에 대한 액세스 권한이 있는 경우에는 해당 시스템에서 NLB로의 액세스를 시도하십시오.
curl --connect-timeout 10 <loadbalancer_IP>:80
시스템의 IP 주소가 허용되지 않으므로 연결 제한시간이 초과됩니다.
이 시점에서 공용 노드 포트 및 NLB로의 모든 트래픽은 차단됩니다. 허용된 시스템 IP의 트래픽만 허용됩니다.
특정 IP에서 NLB로의 수신 트래픽 거부
이전 학습에서는 모든 트래픽과 허용된 일부 IP만 차단했습니다. 해당 시나리오는 일부 제어된 소스 IP 주소에 대해서만 액세스를 제한하고자 할 때 테스트 용도로 적합합니다. 그러나 PR 회사에는 공용으로 널리 사용 가능해야 하는 앱이 있습니다. 사용자는 일부 IP 주소에서 보이는 비정상적인 트래픽을 제외한 모든 트래픽이 허용되도록 보장해야 합니다. 소규모 IP 주소 세트의 공격 방지에 도움이 될 수 있으므로, 거부 목록은 이와 같은 시나리오에 유용합니다.
이 학습에서는 자체 시스템의 소스 IP 주소의 트래픽을 차단하십시오. 학습 4의 끝에서 공용 노드 포트로의 모든 트래픽은 차단되며 공용 NLB로의 모든 트래픽은 허용됩니다. 특정 시스템 IP에서 NLB로의 트래픽만 차단됩니다.
-
이전 학습에서 작성된 허용 목록 정책을 정리하십시오.
- Linux:
calicoctl delete GlobalNetworkPolicy deny-lb-port-80
calicoctl delete GlobalNetworkPolicy allowlist
- Windows 및 OS X:
calicoctl delete GlobalNetworkPolicy deny-lb-port-80 --config=filepath/calicoctl.cfg
calicoctl delete GlobalNetworkPolicy allowlist --config=filepath/calicoctl.cfg
이제 임의의 소스 IP에서 NLB IP 주소 및 포트로의 모든 수신 TCP 및 UDP 트래픽이 다시 허용됩니다.
- Linux:
-
사용자 시스템의 소스 IP 주소에서 NLB IP 주소 및 포트로의 모든 수신 TCP 및 UDP 트래픽을 거부하려면 텍스트 편집기에서
blocklist.yaml
이라고 하는 하위 사전-DNAT 정책을 작성하십시오. 치트 시트의 값을 사용하여<loadbalancer_IP>
을(를) NLB의 공용 IP 주소로 바꾸고<client_address>
을(를) 시스템 소스 IP의 공용 IP 주소로 바꾸십시오.apiVersion: projectcalico.org/v3 kind: GlobalNetworkPolicy metadata: name: blocklist spec: applyOnForward: true preDNAT: true ingress: - action: Deny destination: nets: - <loadbalancer_IP>/32 ports: - 80 protocol: TCP source: nets: - <client_address>/32 - action: Deny destination: nets: - <loadbalancer_IP>/32 ports: - 80 protocol: UDP source: nets: - <client_address>/32 selector: ibm.role=='worker_public' order: 500 types: - Ingress
-
정책을 적용하십시오.
-
Linux:
calicoctl apply -f filepath/blocklist.yaml
-
Windows 및 OS X:
calicoctl apply -f filepath/blocklist.yaml --config=filepath/calicoctl.cfg
시스템의 IP 주소가 이제 차단됩니다.
-
-
치트 시트의 값을 사용하여, 사용자 시스템의 IP가 차단되어 사용자 시스템에서 NLB IP에 액세스할 수 없음을 확인하십시오.
curl --connect-timeout 10 <loadbalancer_IP>:80
이 시점에서 공용 노드 포트로의 모든 트래픽은 차단되며 공용 NLB로의 모든 트래픽은 허용됩니다. 특정 시스템 IP에서 NLB로의 트래픽만 차단됩니다.
수고하셨습니다! 소스 IP를 차단하는 Calico 사전-DNAT 정책을 사용하여 앱으로 유입되는 트래픽을 성공적으로 제어했습니다.
특정 IP에서 NLB로의 차단된 트래픽 로깅
이전 학습에서는 시스템 IP에서 NLB로의 트래픽을 차단했습니다. 이 학습에서 거부된 트래픽 요청을 로깅하는 방법을 알아볼 수 있습니다.
이 예시 시나리오에서, 귀하가 근무하는 홍보 회사는 네트워크 정책 중 하나에 의해 지속적으로 거부되는 비정상적인 트래픽에 대한 로깅 추적을 설정하기를 원합니다. 잠재적인 보안 위협을 모니터하기 위해, 사용자는 차단 목록 정책이 NLB IP에 대해 시도된 조치를 거부할 때마다 기록하도록 로깅을 설정합니다.
-
log-denied-packets
라고 하는 Calico NetworkPolicy를 작성하십시오. 이 로그 정책은 이 정책을 Calico Iptables 규칙 체인에 추가하는blocklist
정책과 동일한 선택기를 사용합니다. 보다 낮은 순서 번호(예:300
)를 사용하여 차단 목록 정책 전에 이 규칙이 Iptables 규칙 체인에 추가되도록 보장할 수 있습니다. IP의 패킷은blocklist
정책 규칙을 일치시키려고 시도하기 전에 이 정책으로 로깅되고 거부됩니다.apiVersion: projectcalico.org/v3 kind: GlobalNetworkPolicy metadata: name: log-denied-packets spec: applyOnForward: true preDNAT: true ingress: - action: Log destination: nets: - <loadbalancer_IP>/32 ports: - 80 protocol: TCP source: nets: - <client_address>/32 - action: Log destination: nets: - <loadbalancer_IP>/32 ports: - 80 protocol: UDP source: nets: - <client_address>/32 selector: ibm.role=='worker_public' order: 300 types: - Ingress
-
정책을 적용하십시오.
-
Linux:
calicoctl apply -f /log-denied-packets.yaml
-
Windows 및 OS X:
calicoctl apply -f /log-denied-packets.yaml --config=<filepath>/calicoctl.cfg
-
-
시스템 IP의 요청을 NLB IP로 전송하여 로그 항목을 생성하십시오. 이 요청 패킷은 거부되기 전에 로깅됩니다.
curl --connect-timeout 10 <loadbalancer_IP>:80
-
/var/log/syslog
경로에 작성된 로그 항목을 확인하십시오. 로그 항목이 다음과 유사하게 나타납니다.Sep 5 14:34:40 <worker_hostname> kernel: [158271.044316] calico-packet: IN=eth1 OUT= MAC=08:00:27:d5:4e:57:0a:00:27:00:00:00:08:00 SRC=192.XXX.XX.X DST=192.XXX.XX.XX LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=52866 DF PROTO=TCP SPT=42962 DPT=22 WINDOW=29200 RES=0x00 SYN URGP=0
양호! 차단된 트래픽을 더욱 쉽게 모니터할 수 있도록 로깅을 설정했습니다.
차단 목록 및 로그 정책을 정리하려면 다음을 수행하십시오.
- 차단 목록 정책을 정리하십시오.
- Linux:
calicoctl delete GlobalNetworkPolicy blocklist
- Windows 및 OS X:
calicoctl delete GlobalNetworkPolicy blocklist --config=filepath/calicoctl.cfg
- Linux:
- 로그 정책을 정리하십시오.
- Linux:
calicoctl delete GlobalNetworkPolicy log-denied-packets
- Windows 및 OS X:
calicoctl delete GlobalNetworkPolicy log-denied-packets --config=filepath/calicoctl.cfg
- Linux:
다음에 수행할 작업
- 네트워크 정책으로 트래픽 제어에 대해 자세히 읽으십시오.
- 클러스터 간의 트래픽을 제어하는 추가 예제 Calico 네트워크 정책의 경우 Calico 튜토리얼을 확인할 수 있습니다.