해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.
⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.
이 강의 시리즈에서는 네트워킹의 기본사항을 올바르게 이해합니다.
Networking Pre-Requisites
스위칭, 라우팅, 게이트웨이 등과 같은 기본 네트워킹 개념을 살펴봅니다. 그런 다음 DNS를 이해하고 CoreDNS에 대한 기본 이해를 얻습니다. Linux 시스템에서 DNS 설정을 구성하는 방법을 살펴봅니다. 그런 다음 Linux에서 네트워크 네임스페이스의 기본사항을 이해합니다. OSI 모델이나 네트워크 계층에 대한 이론으로 지루하게 배우지 않을 것입니다. 우리는 이 과정에서 이 섹션의 나머지 부분을 이해하기에 충분한 네트워킹을 닦고 있습니다.
이제 우리는 개념만 살펴보는 것이 아닙니다. 특히 Linux 관점에서 시스템에서 이러한 구성이 어떻게 구성되어 있는지 확인합니다. 따라서 많은 커맨드가 있을 것입니다. 우리는 이것을 시스템 관리자와 애플리케이션 개발자의 관점에서 보고 반드시 네트워크 엔지니어의 관점에서 볼 필요는 없습니다. 그런 식으로 나중에 우리 과정의 맥락에서 이에 대해 논의할 때 우리가 무엇을 하고 있는지, 정보를 찾을 위치, configuration 위치, 문제 해결 방법 등을 알 수 있습니다. 그리고 물론 항상 그렇듯이 이러한 내용이 너무 기초적인 것 같거나 이미 Linux 네트워킹에 익숙하다면 이 강의를 건너뛰고 바로 Kubernetes에 대한 강의로 넘어가도 됩니다.
Switching
그렇다면 네트워크란 무엇인가요? 우리는 두 대의 컴퓨터 A와 B, 랩톱, 데스크톱, 클라우드의 VM을 가지고 있습니다. 시스템 A는 어떻게 B에 도달합니까? 우리는 그것들을 스위치에 연결하고 스위치는 두 시스템을 포함하는 네트워크를 생성합니다. 스위치에 연결하려면 호스트에 따라 물리적 또는 가상의 각 호스트에 인터페이스가 필요합니다. 호스트의 인터페이스를 보려면 ip link 커맨드를 사용합니다.
이 경우 스위치에 연결하는 데 사용할 eth0이라는 인터페이스가 있습니다. 이를 더 살펴보겠습니다. 주소가 192.168.1.0인 네트워크라고 가정해 보겠습니다. 동일한 네트워크에 있는 IP 주소로 시스템을 할당합니다. 이를 위해 ip addr 커맨드를 사용합니다.
링크가 작동되고 IP 주소가 할당되면 컴퓨터는 이제 스위치를 통해 서로 통신할 수 있습니다. 스위치는 네트워크 내에서만 통신할 수 있습니다. 즉, 네트워크의 호스트에서 패킷을 수신하여 동일한 네트워크 내의 다른 시스템으로 전달할 수 있습니다.
Routing
주소 192.168.2.0에 시스템 C와 D를 포함하는 또 다른 네트워크가 있다고 가정합니다. 시스템의 IP 주소는 192.168.2.10, 192.168.2.11입니다. 한 네트워크의 시스템이 다른 네트워크의 시스템에 어떻게 도달할 수 있을까요? IP 192.168.1.11를 사용하는 시스템 B는 어떻게 IP 2.10인 시스템 C에 도달할 수 있을까요? 여기서 라우터가 필요해집니다. 라우터는 두 네트워크를 함께 연결하는 데 도움이 되는 지능형 장치입니다. 따라서 네트워크 포트가 많은 또 다른 서버로 생각하면 됩니다. 두 개의 개별 네트워크에 연결되므로 각 네트워크에 하나씩 두 개의 IP가 할당됩니다. 첫 번째 네트워크에서 IP 주소 192.168. 1. 1를 할당합니다. 그리고 두 번째 네트워크에는 IP 2.1을 할당합니다. 이제 두 네트워크 간의 통신을 가능하게 하는 라우터가 두 네트워크에 연결되었습니다.
Gateway
시스템 B가 시스템 C로 패킷을 보내려고 할 때 라우터가 네트워크에서 패킷을 보낼 위치를 어떻게 알 수 있을까요? 라우터는 네트워크의 장치일 뿐입니다. 이를 위해서는 게이트웨이 또는 route로 시스템을 구성합니다. 네트워크가 방이라면 게이트웨이는 다른 네트워크나 인터넷으로 가는 외부 세계로 통하는 문입니다. 시스템은 문을 통해 어디로 가야 하는지 알아야 합니다.
시스템의 기존 라우팅 configuration을 보려면 route 커맨드를 실행하십시오. 커널의 라우팅 테이블을 표시합니다. 그리고 그 안에는 보시다시피 현재로서는 라우팅 configuration이 없습니다. 따라서 이 상태에서 시스템 B는 시스템 C에 도달할 수 없습니다. 192.168. 1. 0 범위 내에서 동일한 네트워크 내의 다른 시스템에만 도달할 수 있습니다.
네트워크 2.0의 시스템에 도달하도록 시스템 B의 게이트웨이를 구성하려면 ip route add 커맨드를 실행하고 192.168.1.1의 문 또는 게이트웨이를 통해 192.168. 2.0에 도달할 수 있도록 지정합니다.
route 커맨드를 다시 실행하면 192.168.2.0에 도달하기 위한 route가 추가되었음을 알 수 있습니다. 이제 이것은 모든 시스템에서 구성되어야 한다는 점을 기억하세요.
예를 들어, 시스템 C가 시스템 B로 패킷을 보내려면 시스템 C의 라우팅 테이블에 route를 추가하여 IP 주소 2.1로 구성된 라우터를 통해 1.0 네트워크에 액세스해야 합니다.
이제 이러한 시스템이 인터넷에 액세스해야 한다고 가정합니다. 172.217.194.0인터넷상의 네트워크에서 Google에 액세스해야 한다고 합시다. 따라서 라우터를 인터넷에 연결한 다음, 라우팅 테이블에 새 route를 추가하여 모든 트래픽을 네트워크 172.217.194으로 라우팅합니다.
인터넷에는 다양한 네트워크에 다양한 사이트가 있습니다. 동일한 라우터 IP 주소를 라우팅 테이블에 추가하는 대신, 경로를 모르는 네트워크에 대해 이 라우터를 default 게이트웨이로 사용한다고 간단히 말할 수 있습니다. 이렇게 하면 기존 네트워크 외부의 네트워크에 대한 모든 요청이 이 특정 라우터로 이동합니다.
따라서 이와 같은 간단한 설정에서는 default 게이트웨이가 라우터의 IP 주소로 설정된 단일 라우팅 테이블 항목만 있으면 됩니다. default라는 단어 대신 0.0.0.0이라고 표현해도 됩니다. 이는 모든 IP 대상을 의미합니다. 0.0.0.0 게이트웨이 필드 항목은 게이트웨이가 필요하지 않음을 나타냅니다. 예를 들어, 이 경우 시스템 C는 192. 168. 2. 0 네트워크에서는 자체 네트워크에 있기 때문에 게이트웨이가 필요하지 않습니다. 그러나 네트워크에 여러 개의 라우터가 있다고 가정해봅시다. 하나는 인터넷용이고 다른 하나는 내부 개인 네트워크용입니다.
그러면 각 네트워크에 대해 두 개의 별도 항목이 있어야 합니다. 내부 개인 네트워크에 대한 항목 하나와, 공용 네트워크를 포함한 다른 모든 네트워크에 대한 default 게이트웨이가 있는 다른 항목입니다. 따라서 시스템에서 인터넷에 연결하는 데 문제가 있는 경우 이 라우팅 테이블과 default 게이트웨이 configuration을 시작으로 살펴보는 것이 좋습니다.
이제 Linux 호스트를 라우터로 설정하는 방법을 살펴보겠습니다. 간단한 설정부터 시작하겠습니다. A, B, C 세 개의 호스트가 있습니다. A와 B는 네트워크(192.168.1.0)에 연결되어 있습니다. B와 C는 192.168.2.0로 연결되어 있습니다. 따라서 호스트 B는 두 개의 인터페이스 168.1과 168.2을 사용하여 두 네트워크에 모두 연결됩니다. A의 IP는 192.168.1.5입니다. C에는 192.168.2.5가 있습니다. 그리고 B는 두 네트워크 1.6과 2.6 모두에 IP를 가지고 있습니다. A가 C와 대화하게 하려면 어떻게 해야 할까요? 기본적으로 A에서 핑 2.5를 시도하면 네트워크에 연결할 수 없다고 표시됩니다. 그리고 이제 우리는 그 이유를 알고 있습니다. 호스트 A는 192,168.2. 네트워크에 도달하는 방법을 모릅니다. 우리는 호스트 A에게 네트워크 2의 문 또는 게이트웨이가 호스트 B를 통과한다고 알려주어야 합니다. 라우팅 테이블 항목을 추가하여 이를 수행합니다. 192.168.1.6게이트웨이를 통해 네트워크 192.168.2 에 액세스하기 위한 라우트를 추가합니다. 패킷이 호스트 C를 통과하는 경우 호스트 C는 호스트 A에 응답을 다시 보내야 합니다.
호스트 C가 192.168.1에 있는 호스트 A에 도달하려고 할 때, 동일한 문제에 직면하게 됩니다. 따라서 라우터 역할을 하는 호스트 B를 통해 호스트 A에 도달할 수 있음을 호스트 C에게 알려주어야 합니다. 따라서 호스트 C의 라우팅 테이블에 유사한 항목을 추가합니다. 이번에는 네트워크 192.168.1.0에 도달하려면 192.168.2.6에 있는 호스트 B와 대화하라고 말합니다. 지금 핑을 시도하면 더 이상 네트워크에 연결할 수 없다는 오류 메시지가 표시되지 않습니다. 이는 라우팅 항목이 옳다는 것을 의미합니다.
그러나 우리는 여전히 어떤 응답도 받지 못합니다. default로 Linux에서는 패킷이 한 인터페이스에서 다음 인터페이스로 전달되지 않습니다. 예를 들어 호스트 B의 eth0에서 수신된 패킷은 eth1을 통해 다른 곳으로 전달되지 않습니다. 보안상의 이유 때문입니다. 예를 들어 eth0이 개인 네트워크에 연결되어 있고 eth1이 공용 네트워크에 연결되어 있는 경우, 명시적으로 허용하지 않는 한 공용 네트워크의 어느 누구도 개인 네트워크로 메시지를 쉽게 보낼 수 없습니다.
그러나 지금 예제의 경우 둘 다 사설 네트워크이고 둘 사이의 통신을 가능하게 하는 것이 안전하다는 것을 알고 있으므로 호스트 B가 한 네트워크에서 다른 네트워크로 패킷을 전달하도록 허용할 수 있습니다. 호스트가 인터페이스 간에 패킷을 전달할 수 있는지 여부는 파일 proc/sys/net/ipv4/ip_forward에서 이 시스템의 설정에 따라 결정됩니다. default로 이 파일의 값은 0으로 설정되어 있으며, 이는 전달이 없음을 의미합니다. 이것을 1로 설정하면 핑이 통과하는 것을 볼 수 있습니다. 이제 이 값을 설정하는 것만으로는 재부팅 후에도 변경 사항이 지속되지 않는다는 점을 기억하십시오. 변경사항이 재부팅 후에도 지속되기 위해서는 etc/sys/control.conf파일 에서 동일한 값을 수정해야 합니다.
이 강의에서 배운 몇 가지 핵심 커맨드를 돌아보겠습니다. 다음 강의에 유용할 것입니다.
ip link는 호스트의 수정 인터페이스를 나열하는 것입니다. ip addr 커맨드는 해당 인터페이스에 할당된 IP 주소를 확인하는 것입니다. ip addr add 커맨드는 인터페이스에 IP 주소를 설정하는 데 사용됩니다. 이제 이러한 커맨드를 사용하여 변경한 사항은 다시 시작할 때까지만 유효합니다. 이러한 변경 사항을 유지하려면 etc/network/interfaces 파일에서 설정해야 합니다. ip route 또는 단순히 route 커맨드를 사용하여 라우팅 테이블을 볼 수 있습니다. 그리고 ip route add 커맨드는 라우팅 테이블에 항목을 추가하는 데 사용됩니다. 마지막으로 라우터로 구성된 호스트로 작업하는 경우 호스트에서 IP 전달이 활성화되어 있는지 확인하는 커맨드를 기억하십시오. cat /proc/sys/net/ipv4/ip_forward입니다.
'MLOps > Doker & Kubernetes' 카테고리의 다른 글
Udemy CKA 강의 정리 200: Prerequisite - CoreDNS (0) | 2023.01.24 |
---|---|
Udemy CKA 강의 정리 199: Prerequisite - DNS (0) | 2023.01.24 |
Udemy CKA 강의 정리 197: Download Presentation Deck (0) | 2023.01.23 |
Udemy CKA 강의 정리 196: Networking - Section Introduction (0) | 2023.01.23 |
Udemy CKA 강의 정리 193: Storage Class (0) | 2023.01.23 |
댓글