[네이버클라우드] AIaaS 개발자 과정/Linux

[네이버클라우드캠프] 2023.5.1 Linux(2) - 네트워크의 이해

_꼬마돌 2023. 5. 1. 21:15
반응형

네트워크의 이해

웹서비스 설정

공유 폴더와 /yes 디렉터리는 이전 수업에서 만들어두었다.
공유 폴더에 원하는 사진을 옮겨 놓고 진행했다.

root@kwc21:06:33:~# ai apache2                      #아파치2 설치. alias ai='apt -y install'

root@kwc21:18:01:~# systemctl start apache2         # 설치 완료 후, 아파치2 서비스 시작

root@kwc21:18:50:~# mount -t vboxsf win /yes        # 윈도우와 리눅스 사이의 공유 폴더 마운트

root@kwc21:20:13:~# cp /yes/my1.png .               # /yes 디렉터리에 있는 my1.png 파일을 현재 디렉터리로 복사

root@kwc21:20:21:~# ls                              # 현재 디렉터리에 있는 파일과 디렉터리 목록 출력
a  a.c  a2  a2.sh  d5  d6  my1.png  outdate  snap   

root@kwc21:20:22:~# cd /var/www/html                # /var/www/html 디렉터리로 이동

root@kwc21:20:33:/var/www/html# mv index.html old.html  # index.html 파일의 이름을 old.html로 변경
mv: 'old.html'을(를) 덮어쓸까요? y

root@kwc21:20:50:/var/www/html# vi index.html       # 편집기 실행

편집기에 아래와 같이 입력
  1 <meta charset='utf-8'>
  2 <body bgcolor=green text=white> <br><br> <h1><center>
  3 <hr> <br>
  4 Hello Naver Cloud Camp! <br><br>
  5 <hr><br><br>
  6 <img src='my1.png'>

127.0.0.1에 접속해보면 설정한 대로 웹서비스가 실행되는 것을 볼 수 있다.


Network 용어정리

  network   한 마디로 망.
  두 개 이상의 컴퓨터를 연결하여 자원과 정보를 공유할 수 있도록 하는 기술이다.
  LAN   Local Area Network의 약어로 지역 내의 작은 규모의 네트워크를 의미한다.
  internet   전 세계의 컴퓨터와 서버가 상호 연결된 거대한 컴퓨터 네트워크.
  LAN 과 LAN의 통신이다.
  protocol   컴퓨터나 전자기기끼리 서로 정보를 주고받기 위한 규칙의 집합.
  tcp/ip   인터넷 프로토콜 스위트 (Internet Protocol Suite) 중 하나.
  네트워크 기술에서 가장 일반적으로 사용되는 프로토콜 세트이다. 
  telent, ftp, mail 등 가장 많이 사용한다.
  gateway   컴퓨터 네트워크에서 두 개 이상의 네트워크를 연결하는 장치 또는 프로그램을 의미.
  다른 네트워크와 통신을 위한 관문이다.
  IP   Internet Protocol는 인터넷에서 데이터를 주고받기 위한 프로토콜 중 하나.
  각각의 기기가 인터넷에서 유일하게 식별될 수 있도록 주소를 부여하고,
  해당 기기간 데이터를 전송할 수 있게 해주는 역할을 한다.
  통신을 하기 위해 각각의 컴퓨터에 부여된 주소.
  Domain   인터넷 상의 컴퓨터나 서비스를 식별하는데 사용되는 이름체계.
  LAN의 이름이다.
  Hostname   네트워크에서 컴퓨터나 장치의 이름을 가리키는 용어.
  LAN에서 다른 host들과 구분하기 위한 이름이다.
  network 주소   네트워크에서 사용되는 IP주소 체게에서, 해당 네트워크의 시작 주소를 가리키는 말.
  LAN의 대표 IP (어떤 LAN을 통칭할 때 대표 IP)
  Domain을 IP로 변경해주는 시스템
  BroadCast   네트워크에서 메시지를 한 번에 모든 호스트에게 전송하는 기능 가리키는 용어.
  LAN 내의 모든 host들이 듣는 특별한 주소. 가장 큰 번호이다.
  DNS   Domain Name System의 약자.
  인터넷에서 사용되는 도메인 이름을 IP 주소로 변환해주는 시스템이다. 
  netmask   IP주소를 네트워크 ID와 호스트 ID로 나누기 위한 기술이다. 
  내부망과 외부망을 구분하며 LAN의 크기를 설정하는 값이다.
  ICMP   Internet Control Messgae Protocl의 약자.
  IP에서 사용되는 제어 메시지를 전달하기 위한 프로토콜이다. 
  host 서버와 Internet Gateway 사이에서 메시지를 제어하고 에러를 알려주는 프로토콜.
  RFC792에서 정의되고 ping 명령이 사용한다.
  설정 명령어   nmtui
  NetworkManager Text User Interface의 약자.
  Ubuntu Linux에서 사용할 수 있는 네트워크 설정 도구이다.
  터미널 창에서 실행할 수 있으며, 텍스트 기반으로 네트워크 인터페이스를 
  설정하고 관리할 수 있다.
  packet   컴퓨터 네트워크에서 데이터를 전송할 때 사용되는 단위.
  데이터는 일반적으로 큰 덩어리로 전송되지만, 패킷을 사용하면 데이터를 작은 
  조각으로 나누어 전송할 수 있다.
  공인 ip   인터넷 서비스 제공자 (ISP)로부터 할당받은 인터넷 주소이다.
  공인 IP는 전 세계적으로 고유한 IP주소이며, 인터넷을 통해 다른 장치와
  통신할 때 사용된다.
  사설 ip   사설 IP (private IP)는 인터넷에서 사용되는 IP 주소 대역과 구분되는 주소 대역으로, 
  로컬 네트워크(일반적으로 가정이나 회사의 내부 네트워크)에서 사용된다.
  NIC   Network Interface Card의 약자.
  컴퓨터 내부나 외부에서 네트워크와 연결하기 위한 인터페이스 카드이다. 
  NIC는 일반적으로 이더넷(Ethernet)이나 와이파이와 같은 
  표준 네트워크 프로토콜을 지원하며, 네트워크에 연결된 다른 컴퓨터나 장치와
  통신할 수 있도록 한다.
  traceroute   인터넷 상의 라우팅 경로와 라우터들 간의 시간을 측정하는 명령어.
  보통 네트워크 문제를 진단하고 해결하기 위해 사용된다.
  Router   두 개 이상의 컴퓨터 네트워크를 연결하기 위한 장비. 
  인터넷, 사내 네트워크, 외부 네트워크와 같은 다양한 네트워크를 연결하여
  데이터를 전송하는 역할을 한다.
  SWITCH   컴퓨터 네트워크에서 데이터 전송을 제어하는 장비이다.
  네트워크 상의 다양한 기기들이 데이터를 전송하고 받을 수 있도록 하며, 
  데이터 전송의 안정성과 속도를 보장한다.
  HUB   컴퓨터 네트워크에서 데이터 전송을 제어하는 장비이다.
  스위치와 마찬가지로 여러 대의 컴퓨터나 네트워크 기기를 하나의 네트워크에
  연결할 수 있다.
  하지만 스위치와는 달리, 허브는 전송받은 데이터를 각 포트에 연결된 모든 기기에게
  브로드캐스트한다.
  MAC address   컴퓨터 네트워크에서 각 네트워크 인터페이스에 할당된 고유한 식별자.
  네트워크 장비를 식별하고, 데이터를 올바른 목적지로 전송하는 데 사용된다.
  MAC 주소는 전 세계에서 유일한 값으로 할당되어 있다.
  subnetting   IP 주소를 작은 네트워크로 분할하는 것을 말한다.
  이를 통해 네트워크를 더 효율적으로 관리하고, 라우팅 효율성을 높일 수 있다.
Ubuntu Linux에서 'ifconfig'와 'ip addr'은 모두 네트워크 인터페이스 설정 정보를 출력하는 명령어이다.

ifconfig (apt install net-tools 로 설치해서 사용)

예전부터 사용되어왔고, 기본적인 네트워크 인터페이스 정보를 출력한다. 이 명령어는 네트워크 인터페이스 이름, MAC주소, IP주소, 넷마스크, MTU, 전송률 등의 정보를 출력한다. 그러나 최근에는 'ifconfig'가 더 이상 개발되지 않고 'ip' 명령어로 대체되었다.

ip addr

ifconfig 명령어보다 더욱 상세한 정보를 출력한다. 네트워크 인터페이스 이름, MAC주소, IP주소, 넷마스크, 브로드캐스트 주소, 상태 정보, 라우팅 테이블 등의 정보를 출력한다. 'ip' 명령어는 다양한 옵션을 제공하여 네트워크 인터페이스 설정을 더욱 세밀하게 제어할 수 있다. 

ping (apt install iputils-ping 으로 설치해서 사용)
ping은 네트워크 연결을 테스트하고 확인하기 위한 명령어이다. 보통 인터넷상의 다른 호스트(서버, 라우터, 컴퓨터 등)가 동작하는지 확인하거나, 두 개 이상의 컴퓨터간에 서로 연결되어 있는지를 확인할 때 사용된다. ping을 실행하면 해당 호스트에 ICMP(Internet Control Message Protocol) 패킷을 보내고, 이에 대한 응답을 받아서 네트워크 연결 상태를 확인한다. ping을 사용하여 연결 상태를 확인할 때는 해당 호스트의 IP주소나 도메인 이름을 사용한다.
j@kwc:~$ ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 00.0.0.00  netmask 000.000.000.0  broadcast 00.0.0.000       # inet: IPv4주소
        inet6 fe80::000:0000:0000:0000  prefixlen 64  scopeid 0x20<link>  # inet6: IPv6 주소
        ether 00:00:00:00:00:00  txqueuelen 1000  (Ethernet)              # ether: MAC 주소
        RX packets 903  bytes 548374 (548.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 571  bytes 88733 (88.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 106  bytes 8787 (8.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 106  bytes 8787 (8.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
j@kwc:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff                        # ether: Mac 주소
    inet 00.0.0.00/00 metric 100 brd 00.0.0.000 scope global dynamic enp0s3   # inet: IPv4 주소
       valid_lft 84993sec preferred_lft 84993sec
    inet6 0000::000:0000:0000:0000/00 scope link                              # inet6: IPv6 주소
       valid_lft forever preferred_lft forever
j@kwc:~$ ping 8.8.8.8         # 구글의 DNS서버 주소인 8.8.8.8에 ICMP 패킷을 보내 네트워크 연결 상태 확인
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=32.0 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=31.5 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=55 time=32.2 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=55 time=32.1 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=55 time=31.5 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=55 time=31.6 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=55 time=32.1 ms
64 bytes from 8.8.8.8: icmp_seq=8 ttl=55 time=31.5 ms
^C
--- 8.8.8.8 ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7011ms   # 8개의 패킷이 송신되었고, 모두 수신되었다.
rtt min/avg/max/mdev = 31.510/31.819/32.199/0.287 ms

 

Ubuntu Linux의 네트워크 구성 파일

이전까지는 '/etc/network/interfaces' 파일이 사용되었다.
Ubuntu 18.04 버전부터는 '/etc/netplan/00-installer-config.yaml' 파일이 사용되고 있다.
/etc/netplan/00-installer-config.yaml 파일은 Ubuntu 설치 과정 중에 사용자가 지정한 네트워크 설정을 포함하는 파일로, Ubuntu 설치시 자동으로 생성된다. 이 파일에는 Ubuntu 설치 과정에서 사용자가 선택한 네트워크 인터페이스, IP주소, 게이트웨이 등의 정보가 저장된다.
Netplan을 사용하여 네트워크 설정을 구성하는데 사용된다. Netplan은 YAML 파일을 사용하여 네트워크 인터페이스 및 브리지, VLAN, 맥주소 마스킹 등과 같은 네트워크 설정을 정의하는 네트워크 설정 도구이다. 

00-installer-config.yaml 파일을 열어본 모습

root@kwc:/etc/netplan# nl 00-installer-config.yaml
     1  # This is the network config written by 'subiquity'
     2  network:              # 네트워크 설정
     3    ethernets:          # 이더넷 인터페이스 설정
     4      enp0s3:           # 'enp0s3' 이더넷 인터페이스 설정
     5        dhcp4: true     # 해당 네트워크 인터페이스가 DHCP를 사용하여 IPv4 주소를 자동으로 할당받는 것을 허용하는 설정
     6    version: 2

 

nmap (apt install nmap으로 설치해서 사용)

네트워크 탐색 도구 중 하나로, 목표 호스트 또는 네트워크의 보안 취약점을 파악하는 데 사용된다. 
이 도구는 다양한 스캔 방법을 제공하며, 호스트나 네트워크의 서비스, 포트, 운영 체제, 버전 등의 정보를 수집할 수 있다. 또한 nmap은 포트 스캐닝, 운영 체제 탐지, 서비스 탐지, 버전 탐지, 스크립트 엔진 등의 기능을 지원한다. 
보안 전문가, 네트워크 관리자, 해커 등 다양한 분야에서 사용된다.

nmap으로 네이버의 네트워크 정보를 스캔해보았다. 네이버의 IP주소는 223.130.200.104이다.

 

traceroute (apt install traceroute로 설치해서 사용)

네트워크 상의 경로를 추적하고, 해당 경로에서 데이터 패킷이 전송되는 데 걸리는 시간을 측정하는 유틸이다.
이 명령어를 실행하면 출발지에서 목적지까지의 경로상에 있는 라우터들의 IP 주소 및 호스트 이름 등을 출력하고, 각 라우터를 거쳐 목적지에 도달하는 데까지 걸리는 시간(핑, latency)을 측정한다. 이를 통해 라우팅 문제나 네트워크 장애를 진단할 수 있다.

traceroute를 이용해 구글까지의 경로를 추적해보았다. * * *로 표시되는 건 ICMP 패킷에 대한 응답이 없기 때문이다.

 

IP_Class 구분 방법

Class 첫 필드 범위 실제 예
A 0~127 63 129 32 150
B 128~191 153 65 210 33
C 192~233 211 238 142 110
D      실제 사용하는 범위가 아님
사설 IP
어느 기관에도 공식적으로 부여되지 않은 IP. 어떤 곳에서도 내부망으로 이용이 가능하다.

A class   10.0.0.0       ~  10.255.255.255
B class   172.16.0.0   ~  172.32.255.255
C class   192.168.0.0 ~  192.168.225.255

A class   2^7   개 생성가능
B class   2^14 개 생성가능 ( 2^6 X 2^8 )
C class   2^21 개 생성가능 ( 2^5 X 2^8 X 2^8 )

 

내부망과 외부망을 구분하는 방법

목적지 주소와 netmask값을 AND (&&) 연산한다.
결과값과 Network 주소값을 비교하여 동일하면 내부망, 다르면 외부망.

 

Routing table 계산법

목적지 주소와 첫번째 레코드의 Genmask값을 AND (&&) 연산한다.
결과값과 그 레코드의 Destination값을 비교하여 일치하면 Packet을 그 레코드의 Interface로 보내고, 
일치하지 않으면 다음 레코드의 Genmask값과 목적지 주소를 AND 연산한다. 

Genmask
라우팅 테이블의 네트워크 마스크 정보를 나타내는 필드.
라우팅 테이블은 패킷을 전송하기 위해 목적지 IP 주소를 사용하여 다음에 전달할 경로를 결정하는 데 사용된다.
이때 각 경로는 대상 네트워크를 식별하기 위한 IP 주소와 해당 네트워크의 마스크 정보를 포함한다.

Genmask는 대상 네트워크의 마스크 정보를 비트 단위로 표시한다.
예를 들어, 255.255.255.0 마스크는 /24로 표시되고, 
11111111.11111111.11111111.00000000 으로 표현된다.

 

Netmask

IP주소의 서브넷 마스크를 나타내는데 사용되며, Netmask를 이용하여 상대가 외부 network인지 구분할 수 있다.
IP주소는 네트워크ID와 호스트ID로 구성되는데, 서브넷 마스크는 IP주소에서 네트워크 ID를 식별하는 데 사용된다.

서브넷 마스크는 네트워크 주소와 호스트 주소를 구분하는 비트 패턴을 나타내며, 이진수로 표현된다.
예를 들어, 255.255.255.0은 11111111.11111111.11111111.00000000과 같은 이진수로 표현된다.이진수에서 1은 네트워크 ID를 나타내며, 0은 호스트 ID를 나타낸다.
따라서 255.255.255.0은 IP 주소의 마지막 8비트를 호스트 ID로 사용하고 나머지 비트를 네트워크 ID로 사용한다는 것을 의미한다.

상대 IP가 들어오면 Netmask와 IP를 AND 연산하여 대표 네트워크가 같으면 내부 network, 다르면 외부 network로 구분한다.

 

반응형