지니데비 기록 자세히보기

데브옵스/Orchestration

[Kubernetes] 58. Linux Networking Basic (1)

지니데비 2025. 1. 8. 14:23
728x90

 

Switch & Router

각기 다른 PC는 switch를 통해 연결되고 이 로컬 네트워크를 LAN이라고 한다. (switch에 할당된 IP가 Gateway 역할을 한다. 이를 공인IP라고도 한다.) 다른 네트워크에 있는 PC가 통신하기 위해 필요한 것이 router이다. 각각 다른 네트워크의 switch(A LAN과 B LAN)를 router가 연결하며, 라우팅 테이블에 출발지와 도착지가 등록되어 있어야 통신이 가능하다. 통신이 가능한 네트워크는 WAN이다.

# network interface 명칭
ip link

# ip 주소 할당
ip addr add 192.168.1.10/24[목적지 cidr(네트워크 대역)] dev eth0[network interface 명칭]

# 시스템 재부팅 시에도 설정 유지
vi /etc/network/interfaces

---

# routing table 확인
route(== ip route)

# 출발지에서 목적지로 패킷을 보내기 위한 routing table 추가
ip route add 192.168.1.10/24[목적지 cidr(네트워크 대역)] via 192.169.2.1[출발지 Gateway IP] (public network)
ip route add default via [출발지 Gateway IP] (private network)
route

 

A LAN(public network), B LAN, C LAN(private network)이 있고 B LAN이 중간에서 각각의 LAN과 router가 2개로 연결될 수도 있다.

 

 

리눅스에서는 하나의 PC에 각기 다른 network interface가 있을 수 있고, 보안 상의 이유로 각기 다른 network interface 끼리 네트워크 패킷 전달이 안 된다.

# 다른 네트워크로 패킷 전달 가능한지 여부 확인
cat /proc/sys/net/ipv4/ip_forward
0(default) # 전달 불가

# 1로 수정하면 패킷 전달 가능 (시스템 재부팅 시 초기화)
echo 1 > /proc/sys/net/ipv4/ip_forward
1

# 시스템 재부팅 시에도 패킷 전달 가능하도록 파라미터 수정
vi /etc/sysctl.conf
...
net.ipv4.ip_forward = 1
...

 

 

DNS

동일한 네트워크 안에서 ip 대신 domain name으로 통신할 수 있다. 

ping 192.168.1.11

vi /etc/hosts
192.168.1.11    db
192.168.1.11    www.google.com

ping db
ssh db
curl http://www.google.com

호스트 파일에 도메인을 설정해도 실제 hostname과 같을 필요는 없다. 또한 동일한 IP에 각기 다른 도메인을 설정할 수 있다. 이를 Name Resolution이라고 한다.

 

통신할 항목이 너무 많아지면 각각의 로컬 PC에서 중복으로 관리할 항목이 많아지므로 중앙에서 관리할 단일 서버로 옮긴 것이 DNS(Domain Name Server)이다.

cat /etc/resolv.conf
nameserver 192.168.1.100 # 내가 임의로 만든 DNS 서버
nameserver 8.8.8.8 # 구글에서 호스팅하는 DNS 서버

 

호스트는 먼저 로컬에 있는 /etc/hosts 파일을 먼저 보고 다음으로 nameserver(DNS)를 본다. 로컬에 있는 hosts파일을 먼저 보고 없는 것은 DNS에서 찾는다. (default)

cat /etc/nsswitch.conf
...
hosts    files dns
...

우선순위는 /etc/nsswitch.conf 파일에 정의되어 있고, 변경도 가능하다.

 

Domain Names

www.google.com에서 Root는 "." Top레벨은 ".com" Sub레벨은 "google","drive","www","maps","apps" 등이 있다.

만약 DNS에 등록된 Sub도메인이 여러개이고 Sub도메인만으로 통신을 하고싶다면 아래와 같이 /etc/resolv.conf 파일에 search 파라미터 옆에 도메인을 등록한다.

cat /etc/resolv.conf
nameserver   192.168.1.100
search       mycompany.com  prod.mycompany.com

(DNS서버에서) cat /etc/hosts
192.168.1.10   web.mycompany.com
192.168.1.11   db.mycompany.com
192.168.1.12   nfs.mycompany.com
...


ping web
ping web.mycompany.com (or ping web.prod.mycompany.com)

 

Record Types

레코드 타입 설명 예시
A 도메인 이름을 IPv4 주소에 매핑 example.com. IN A 192.168.0.1
AAAA 도메인 이름을 IPv6 주소에 매핑 example.com. IN AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334
CNAME 도메인 별칭을 다른 도메인에 매핑 www.example.com. IN CNAME example.com.
MX 이메일 서버를 지정 example.com. IN MX 10 mail.example.com.
TXT 도메인에 텍스트 정보 추가 example.com. IN TXT "v=spf1 include:_spf.google.com ~all"
SRV 특정 서비스를 제공하는 서버의 위치 지정 _sip._tcp.example.com. IN SRV 10 60 5060 sipserver.example.com.
NS 도메인에 대한 네임 서버 지정 example.com. IN NS ns1.example.com.
PTR IP 주소를 도메인 이름으로 변환 1.0.168.192.in-addr.arpa. IN PTR example.com.
SOA 도메인의 권한 정보 (주 네임 서버, 관리자 이메일 등) example.com. IN SOA ns1.example.com. admin.example.com. 2023111401 3600 1800 1209600 86400
CAA SSL 인증서 발급을 특정 인증 기관으로 제한 example.com. IN CAA 0 issue "letsencrypt.org"

 

 

nslookup www.google.com
Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: www.google.com Address: 142.250.64.68

ping www.google.com
Pinging www.google.com [142.250.64.68] with 32 bytes of data: Reply from 142.250.64.68: bytes=32 time=10ms TTL=115

dig www.google.com
;; ANSWER SECTION: www.google.com. 21599 IN A 142.250.64.68 ;; Query time: 10 msec ;; SERVER: 8.8.8.8#53(8.8.8.8)

 

명령어 역할 및 목적 주요 차이점
nslookup 도메인 이름에 대응하는 IP 주소(또는 반대)를 조회. DNS 서버 정보를 확인. 단순한 DNS 조회용 툴. 기본적으로 A 레코드만 조회.
ping 네트워크 연결 상태 및 응답 시간 확인. 도메인의 IP로 ICMP 패킷을 보내 응답을 확인. 연결 상태 확인용. DNS 조회 후 실제로 네트워크 연결이 가능한지 확인. 데이터 전송 시간(왕복 시간, RTT)을 계산.
dig 도메인의 DNS 레코드를 상세히 조회. A, MX, CNAME, TXT 등 다양한 레코드 확인 가능. 고급 DNS 툴. 다양한 쿼리 옵션을 제공하며, NS, MX, TXT 같은 레코드도 요청 가능. 도메인의 DNS 설정 디버깅에 적합.

 

728x90
반응형