본문 바로가기

kubernetes(cka)

[cka, kubernetes] network 사전학습

네트워킹 기초 요약

네트워크의 기본 개념

  • 스위칭: 같은 네트워크 내의 시스템 간 통신을 가능하게 함. 스위치는 네트워크 내에서 패킷을 전달하는 장치입니다.
  • 라우팅: 서로 다른 네트워크를 연결하고 통신을 가능하게 함. 라우터는 여러 네트워크를 연결하고 패킷을 올바른 네트워크로 전달합니다.
  • 게이트웨이: 다른 네트워크로의 출입구 역할을 함. 네트워크의 경계에 위치하여 트래픽을 다른 네트워크로 보내는 역할을 합니다.
  • 인터페이스: 네트워크 연결을 위한 물리적 또는 가상 장치입니다.

주요 명령어

  • ip link: 호스트의 인터페이스 목록 확인 및 수정
  • ip addr: 인터페이스에 할당된 IP 주소 확인
  • ip route: 라우팅 테이블 확인 및 수정

라우터 설정

라우터를 통해 서로 다른 네트워크 간의 통신을 설정합니다.

  • 네트워크 A와 B를 라우터를 통해 연결
  • ip route add 명령어로 라우팅 경로 추가
  • 패킷 포워딩을 활성화하여 네트워크 간의 통신을 허용
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

DNS 기초 요약

DNS의 기본 개념

  • DNS: 도메인 이름을 IP 주소로 변환하는 시스템입니다.
  • /etc/hosts 파일: 호스트 이름과 IP 주소의 로컬 매핑을 저장하는 파일입니다.
  • /etc/resolv.conf 파일: 시스템의 DNS 서버 설정 파일입니다.
  • /etc/nsswitch.conf 파일: 호스트 이름 조회 순서를 정의하는 파일입니다.

주요 설정 및 명령어

  • /etc/hosts 파일 설정: 로컬 호스트 이름과 IP 주소 매핑
    echo "192.168.1.11 db" >> /etc/hosts
  • /etc/resolv.conf 파일 설정: DNS 서버 설정
    echo "nameserver 192.168.1.100" >> /etc/resolv.conf
  • /etc/nsswitch.conf 파일 설정: 호스트 이름 조회 순서 설정
    hosts: files dns

DNS 서버 설정

  • 모든 호스트가 중앙 DNS 서버를 사용하도록 설정합니다.
  • 공용 DNS 서버(예: 8.8.8.8)를 통해 외부 사이트를 조회합니다.

도메인 이름 체계

  • 루트 도메인: . (모든 도메인의 시작점)
  • 최상위 도메인(TLD): .com, .net, .edu, .org
  • 서브도메인: www.google.com, maps.google.com

/etc/resolv.conf 파일의 검색 도메인 설정

  • 검색 도메인 설정
    echo "search mycompany.com" >> /etc/resolv.conf

DNS 레코드 유형

  • A 레코드: IPv4 주소 매핑
  • AAAA 레코드: IPv6 주소 매핑
  • CNAME 레코드: 이름에서 이름으로 매핑

네트워크 네임스페이스 기초 요약

네트워크 네임스페이스란?

네트워크 네임스페이스는 컨테이너와 같은 환경에서 네트워크 격리를 구현하기 위해 사용됩니다. 네임스페이스는 시스템 내에서 각 네트워크를 분리하여 독립적인 네트워크 스택을 제공하며, 이는 각 네트워크가 서로 간섭하지 않도록 합니다.

네트워크 네임스페이스 생성 및 확인

  • 네트워크 네임스페이스 생성
    ip netns add red
    ip netns add blue
  • 네트워크 네임스페이스 목록 확인
    ip netns

네트워크 인터페이스 확인

  • 호스트의 네트워크 인터페이스 확인
    ip link
  • 네임스페이스 내부에서 네트워크 인터페이스 확인
    ip netns exec red ip link

네트워크 연결 설정

네트워크 네임스페이스 간의 연결을 위해 가상 이더넷 페어(Virtual Ethernet Pair)를 생성합니다.

  • 가상 이더넷 페어 생성
    ip link add veth-red type veth peer name veth-blue
  • 네임스페이스에 인터페이스 연결
    ip link set veth-red netns red
    ip link set veth-blue netns blue

IP 주소 할당 및 인터페이스 활성화

  • IP 주소 할당
    ip netns exec red ip addr add 192.168.15.1/24 dev veth-red
    ip netns exec blue ip addr add 192.168.15.2/24 dev veth-blue
  • 인터페이스 활성화
    ip netns exec red ip link set veth-red up
    ip netns exec blue ip link set veth-blue up
    ip netns exec red ip link set lo up
    ip netns exec blue ip link set lo up

네트워크 연결 테스트

  • Ping 테스트
    ip netns exec red ping 192.168.15.2

가상 브리지 생성 및 네임스페이스 연결

여러 네임스페이스를 연결하기 위해 가상 브리지(Bridge)를 생성합니다. 가상 브리지는 네트워크 스위치와 유사하게 작동하여 여러 네임스페이스 간의 통신을 가능하게 합니다.

  • 가상 브리지 생성
    ip link add name br0 type bridge
    ip link set br0 up
  • 네임스페이스 연결
    ip link add veth-red type veth peer name veth-red-br
    ip link set veth-red netns red
    ip link set veth-red-br master br0
    ip link set veth-red-br up
    ip netns exec red ip link set veth-red up
    ip netns exec red ip addr add 192.168.15.1/24 dev veth-red

호스트와 네임스페이스 간 통신 설정

호스트와 네임스페이스 간의 통신을 위해 호스트 인터페이스에 IP 주소를 할당하고, 라우팅 설정을 통해 네트워크를 구성합니다.

  • 호스트 인터페이스에 IP 주소 할당
    ip addr add 192.168.15.5/24 dev br0
  • 라우팅 설정
    ip netns exec blue ip route add default via 192.168.15.5

NAT 설정

네트워크 주소 변환(NAT)을 통해 네임스페이스에서 외부 네트워크로의 통신을 설정합니다.

  • NAT 설정
    iptables -t nat -A POSTROUTING -s 192.168.15.0/24 -o eth0 -j MASQUERADE

외부에서 네임스페이스로의 포트 포워딩 설정

외부 네트워크에서 네임스페이스로의 특정 포트 트래픽을 포워딩하려면 iptables 명령어를 사용하여 포트 포워딩 규칙을 설정합니다.

  • 포트 포워딩 설정
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.15.2:80
    iptables -A FORWARD -p tcp -d 192.168.15.2 --dport 80 -j ACCEPT

 

---

Docker 네트워킹 기초

네트워킹 옵션

  1. None 네트워크
    • 컨테이너가 네트워크에 연결되지 않음.
    • 외부와의 통신 불가, 다른 컨테이너와도 통신 불가.
  2. Host 네트워크
    • 컨테이너가 호스트 네트워크에 연결됨.
    • 네트워크 격리가 없으며, 호스트와 컨테이너가 동일한 네트워크를 공유.
    • 포트 매핑 없이 컨테이너의 애플리케이션이 호스트 포트에서 접근 가능.
  3. Bridge 네트워크
    • 내부 프라이빗 네트워크가 생성되어 호스트와 컨테이너가 연결됨.
    • 기본 주소: 172.17.0.0
    • 각 디바이스가 자체 내부 프라이빗 네트워크 주소를 가짐.

Bridge 네트워크

  • 브리지(Bridge)란?
    • 브리지는 여러 네트워크 세그먼트를 연결하여 하나의 네트워크처럼 작동하게 만드는 가상 네트워크 장치입니다.
    • Docker의 브리지 네트워크는 컨테이너 간 통신을 가능하게 하며, 네트워크 격리를 통해 보안을 유지합니다.
  • Docker의 브리지 네트워크
    • Docker가 호스트에 설치될 때 기본적으로 Bridge 네트워크를 생성.
    • Docker에서 Bridge 네트워크는 호스트에서 Docker0이라는 이름으로 생성.
    • 호스트의 인터페이스 Docker0은 IP 주소 172.17.0.1을 가짐.
    • 컨테이너 생성 시 Docker는 해당 컨테이너에 네트워크 네임스페이스를 생성.

네트워크 네임스페이스

  • Docker는 네트워크 네임스페이스를 통해 컨테이너와 호스트의 네트워크를 격리.
  • ip netns 명령어로 네임스페이스 목록 확인 가능.
  • Docker가 컨테이너를 브리지 네트워크에 연결할 때, 가상 케이블(virtual cable)을 생성하여 한쪽 끝은 컨테이너에, 다른 쪽 끝은 브리지 네트워크에 연결.

네트워크 연결 설정

  • ip link 명령어로 호스트의 인터페이스 확인 가능.
  • ip link 명령어를 네임스페이스와 함께 실행하여 네임스페이스 내부의 인터페이스 확인 가능.

포트 매핑

  • 컨테이너의 포트를 호스트의 포트에 매핑하여 외부 접근 가능.
  • 예: 호스트의 포트 8080을 컨테이너의 포트 80에 매핑.
  • 이는 IP 테이블의 NAT 규칙을 통해 설정됨.
 
 
---