네트워킹 기초 요약
네트워크의 기본 개념
- 스위칭: 같은 네트워크 내의 시스템 간 통신을 가능하게 함. 스위치는 네트워크 내에서 패킷을 전달하는 장치입니다.
- 라우팅: 서로 다른 네트워크를 연결하고 통신을 가능하게 함. 라우터는 여러 네트워크를 연결하고 패킷을 올바른 네트워크로 전달합니다.
- 게이트웨이: 다른 네트워크로의 출입구 역할을 함. 네트워크의 경계에 위치하여 트래픽을 다른 네트워크로 보내는 역할을 합니다.
- 인터페이스: 네트워크 연결을 위한 물리적 또는 가상 장치입니다.
주요 명령어
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 네트워킹 기초
네트워킹 옵션
- None 네트워크
- 컨테이너가 네트워크에 연결되지 않음.
- 외부와의 통신 불가, 다른 컨테이너와도 통신 불가.
- Host 네트워크
- 컨테이너가 호스트 네트워크에 연결됨.
- 네트워크 격리가 없으며, 호스트와 컨테이너가 동일한 네트워크를 공유.
- 포트 매핑 없이 컨테이너의 애플리케이션이 호스트 포트에서 접근 가능.
- 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 규칙을 통해 설정됨.
---

'kubernetes(cka)' 카테고리의 다른 글
[cka] Storage (PV, PVC) (0) | 2024.09.11 |
---|---|
[cka, kubernetes] CNI, cluster network (0) | 2024.06.09 |
[Kubernetes, cka] 15. Cluster Maintenance (0) | 2024.05.16 |
[Kubernetes, cka] 14. Init Containers / Self Healing application (0) | 2024.04.15 |
[Kubernetes, cka] 13. Env 설정 / ConfigMap 활용 / Secretes (0) | 2024.04.15 |