CKA 공부 29일차
in Devops on Kubernetes
Networking
- k8s의 네트워크에 이해하기에 앞서, 네트워크에 필요한 사전 지식들을 공부해보자.
Networking Pre-Requisites
k8s의 네트워크를 이해하기에 앞서 우리는 먼저 네트워크에 대해 이해해야한다.
이러한 선행지식이 있어야 k8s가 어떻게 내부적인 네트워크를 구축했는지 이해할 수 있고, 이것이 시니어 개발자들이 말하는 기본기의 중요성이 아닐까 싶다.
결국 기본기가 튼튼한 개발자는 새로운 기술도 쉽게 학습할 수 있기 때문에 나는 기본적인 네트워크 지식을 공부하기로 결심했다.
Switching
A와 B라는 시스템이 서로 통신하기 위해서는 스위치가 필요하다.
스위치는 A와 B 시스템의 랜카드에 있는 정보를 연결한다.
스위치로 A와 B 시스템이 연결되면
ip addr
명령어를 사용하여 고유 IP 주소를 부여할 수 있다.이렇게 각자 고유의 IP까지 생성되고 스위치가 연결되어있다면 두 시스템은 스위치를 통해 상호 통신할 수 있게 된다.
Routing
만약 이러한 A, B 시스템과 마찬가지로 C, D의 시스템이 스위치로 상호 연결되어있고 자신만의 Ip Address를 보유하고 있다면 B와 C는 어떻게 통신할 수 있을까??
여기서 라우터가 등장한다.
라우터는 두개의 네트워크를 연결하는데 사용된다.
라우터는 스위치에 연결될 때 해당 네트워크의 IP를 할당받는다.
이렇게 연결된 라우팅을 통해 A,B 시스템에서 C,D 네트워크로 전송할 수 있는 것이다.
Gateway
그럼 B에서 C로 패킷을 보내려고 할 때 라우터는 어느 네트워크에 존재하게 될까?
사실 라우터는 그냥 장비일 뿐이다.
여기서 게이트웨이라는 개념이 등장한다.
네트워크가 방이라면, 게이트웨이는 문이다.
라우터 장비에 있는 게이트웨이에 명시된 IP 주소에 따라 라우트 장비로 들어오는 IP 대역을 지정할 수 있다.
그리고 라우팅 테이블에 Destination IP를 0.0.0.0으로 명시하면 어떤 퍼블릭 네트워크든 인터넷이 연결되어있는 어떤 곳으로도 패킷을 전송할 수 있다는 의미가 된다.
Private 네트워크의 이해
A와 B가 Private 네트워크로 서로 연결되어있고, B와 C가 Private 네트워크로 연결되어있다고 하자.
A가 C에게 패킷을 보내는 것은 불가능하다.
이를 위해 B 네트워크의 IP 주소를 각가의 Private 네트워크 주소 (A와 B가 연결된 네트워크와 B와 C가 연결된 네트워크)를 라우팅 테이블에 추가해두면 A와 C는 B를 통해 서로 통신할 수 있을 것이다.
그러나 실제로 이 작업 이후 A가 C로 핑을 날려보면 에러가 나온다.
그 이유는 보안적인 이슈때문에 그런데, 가령 B가 하나는 퍼블릭, 하나는 Private 네트워크와 연결되어있다면 퍼블릭 네트워크가 Private 네트워크로 패킷을 전송할 때 B가 매개체가 되어 전송될 것이다.
이를 막기 위해
/proc/sys/net/ipv4/ip_forward
를 확인해보면 기본값은 0으로 되어있는 것을 확인할 수 있다.이는 포워드 설정을 하지 않겠다는 의미이다.
1로 셋팅하면 이제 A는 B를 매개체로 하여 C로 패킷을 전달할 수 있게 된다.