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 설정 디버깅에 적합. |
'데브옵스 > Orchestration' 카테고리의 다른 글
[Kubernetes] 61. CNI, Networking cluster nodes (0) | 2025.01.08 |
---|---|
[Kubernetes] 60. Docker Networking Basic (0) | 2025.01.08 |
[Kubernetes] 57. Storage Class (0) | 2025.01.08 |
[Kubernetes] 56. Volumes, Persistent Volumes, Persistent Volume Claims (0) | 2025.01.08 |
[Kubernetes] 55. Container Storage Interface (CSI) (0) | 2025.01.08 |