

BIOS/UEFI
부트 로더(Boot Loader)
e 키를 누르면 설정 파일의 내용이 출력되고 설정 값을 변경하여 변경된 값으로 커널을 실행할 수 있음/boot/grub2/grub.cfg/etc/default/grub커널(Kernel)
: 하드웨어와 소프트웨어 사이의 중계자
init
**# 다 주석 처리되어 있음을 확인 가능
$ sudo vi /etc/inittab**
# inittab is no longer used.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# 이제 여기 가서 설정해라
**# To set a default target, run:
# systemctl set-default TARGET.target
#**

default.target
: 시스템 전체의 직접 또는 간접적인 부모 프로세스
init 과 systemd 의 부팅 절차 차이
: 그림의 init 과 systemd 아래부터
# 시스템에 로드된 타겟 유닛들
**$ systemctl list-units -t target**
UNIT LOAD ACTIVE SUB DESCRIPTION >
basic.target loaded active active Basic System
cryptsetup.target loaded active active Local Encrypted Volumes
getty.target loaded active active Login Prompts
integritysetup.target loaded active active Local Integrity Protected Vol>
local-fs-pre.target loaded active active Preparation for Local File Sy>
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network-online.target loaded active active Network is Online
network-pre.target loaded active active Preparation for Network
network.target loaded active active Network
nfs-client.target loaded active active NFS client services
nss-user-lookup.target loaded active active User and Group Name Lookups
paths.target loaded active active Path Units
remote-fs-pre.target loaded active active Preparation for Remote File S>
remote-fs.target loaded active active Remote File Systems
rpc_pipefs.target loaded active active rpc_pipefs.target
rpcbind.target loaded active active RPC Port Mapper
slices.target loaded active active Slice Units
sockets.target loaded active active Socket Units
sshd-keygen.target loaded active active sshd-keygen.target
swap.target loaded active active Swaps
sysinit.target loaded active active System Initialization
timers.target loaded active active Timer Units
veritysetup.target loaded active active Local Verity Protected Volumes
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
24 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
lines 1-31/31 (END)
# 현재 레벨 3 멀티유저 타겟을 사용 중?임을 알 수 있음?
$ who -r
run-level 3 2025-08-28 00:13
**$ systemctl get-default**
multi-user.target
# 현재 타겟을 지우고 새로운 타겟으로 설정
**$ sudo systemctl set-default graphical.target**
Removed "/etc/systemd/system/default.target".
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
# 현재 타겟이 바뀐 것을 확인 가능
# GUI 환경을 제공하는 타겟. 그러나 우리는 ssh 로 CLI 접속했으므로? GUI 뜨지않음
**$ systemctl get-default**
graphical.target
# 다시 멀티 유저 타겟으로 변경
**$ sudo systemctl set-default multi-user.target**
Removed "/etc/systemd/system/default.target".
Created **symlink** /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.
**$ systemctl get-default**
multi-user.target
→ symlink ~: 심볼릭 링크로 디폴트 타겟이 멀티 유저 타겟을 가리키고 있음을 알 수 있음
emergency.target: 가능한 최소한의 환경을 제공하는 긴급 쉘을 제공
rescue.target: 단일 사용자 환경을 제공하는 복구 쉘
부트 로더 커널 항목에서 카운터 중단
: 방향키 이동
부팅할 커널 목록에서 편집 모드로 진입
: e 키
linux 로 시작하는 줄
Ctrl + X 를 눌러 시작
→ root 패스워드 복구 가능한 모드 emegency mode 진입
tty0
: 시스템의 기본 가상 콘솔 장치
: 일반적으로 모니터에 표시되는 화면
ttyS0
: 시리얼 포트를 통한 콘솔 연결을 의미
: 직렬 통신 포트(COM 포트)를 통해 시스템에 접근할 때 사용
KVM
: 터미널 장비
KVM은 리눅스 커널 모듈로, 리눅스 위에서 하드웨어 가상화를 제공해 가상 머신(VM)을 구동할 수 있게 합니다.
QEMU와 함께 쓰이는 경우가 많으며, VM 안의 콘솔 출력(부팅 메시지, 로그인 프롬프트 등)을 호스트의 터미널/창에 매핑합니다.
VM 내부의 "가상 콘솔"은 보통 tty0이나 ttyS0에 매핑됩니다.
tty0tty0 = 현재 활성 가상 콘솔을 의미하는 특수 디바이스입니다.
tty0은 그 중 "현재 사용자가 보고 있는 콘솔"에 대한 alias 역할을 합니다. (즉, /dev/tty0에 쓰면 지금 사용자가 보고 있는 콘솔 화면에 출력됩니다.)
ttyS0ttyS0는 첫 번째 시리얼 포트(serial port) 를 의미합니다. (전통적으로 COM1)
서버, 임베디드 시스템, 혹은 VM에서는 "시리얼 콘솔"로 많이 활용됩니다.
커널 부팅 옵션에 console=ttyS0 같은 걸 주면, 모든 부팅 메시지와 로그인 프롬프트가 이 시리얼 포트로 출력됩니다.
VM 환경에서는 호스트가 이 포트를 파일이나 터미널로 연결해, virsh console 같은 명령으로 VM 내부에 접근할 수 있습니다.
정리하면:
KVM은 VM을 실행할 때 "콘솔을 어디로 보낼지"를 설정할 수 있습니다.
VM의 "가상 콘솔"은 보통 tty0 (그래픽/텍스트 기반 가상 콘솔)이나 ttyS0 (시리얼 콘솔)로 매핑됩니다.
예를 들어:
console=tty0 → VM 내부의 출력이 가상 콘솔 화면(그래픽 창)에 보임.console=ttyS0 → VM 내부의 출력이 시리얼 포트로 전달되고, 호스트에서 virsh console 같은 걸로 볼 수 있음.그래서 KVM에서 VM을 실행할 때,
- GUI 창에서 화면을 보고 싶으면 tty0 기반,
- 터미널에서 텍스트 기반 접근을 하고 싶으면 ttyS0 기반을 선택하는 방식이에요.
✅ 요약:
tty0은 현재 활성 가상 콘솔(주로 화면/키보드).
ttyS0은 첫 번째 시리얼 포트(텍스트 전송/원격 관리용).
KVM은 이 둘 중 어디를 콘솔로 쓸지 선택해서, VM의 부팅 메시지와 셸을 호스트에 연결해 줍니다.
현재 tty0 에서 GUI 를 보고 있지만, 실행되면 ttyS0 으로 넘기려고 시도
그러나 직렬 포트에 꽂혀있는 게 없으므로 자꾸 실패하다가 이후 과정이 생략되고 그냥 로그인 화면이 자꾸 뜨게 됨

→ root 패스워드 복구 가능한 모드로 진입
# 루트 파일 시스템 읽기쓰기(read-write)로 다시 마운트
**switch_root:/# mount -o remount,rw /sysroot**
**switch_root:/# chroot /sysroot**
# root 패스워드 지정개ㅐㅅ
****# 자동 레이블(label) 부여 파일 생성
# SELinux 를 사용하면 파일마다 레이블이 부여됨
# 하지만 chroot 명령을 사용하여 루트 디렉토리를 변경하게 되면
# 파일에 대한 레이블 정보가 전부 제거됨
# 따라서 파일에 대한 레이블을 재지정해야 하는데, 많은 파일을 사용자가 개별적으로 지정 불가능
# 이때 /.autorelabel 파일을 빈 파일로 생성하면 시스템이 부팅될 때 이 파일을 발견하고
# 파일에 대한 레이블을 자동으로 부여함
# 파일에 대한 레이블이 종료되면 해당 파일은 삭제되며 root 패스워드가 복구됨
**sh-5.1# passwd
sh-5.1# touch /.autorelabel**
# root 패스워드 변경 완료 후 빠져 나감
**sh-5.1# exit**
exit
**switch_root:/# exit**
logout
...
# 로그인 성공
user01 login: root
Password:
...
[root@user01 ~]#
rpm: 저수준의 설치 도구
: 종속성으로 인해서 패키지 설치가 진행되지 않거나, 설치가 완료되어도 정상적으로 실행되지 않을 수 있음
-q 옵션
: 쿼리 옵션
: 패키지에게 쿼리를 전송할 때 사용
-q 쿼리 옵션과 함께 사용할 수 있는 옵션# 설치된 패키지 전부 확인
**$ rpm -q -a**
...
# 설치된 패키지 중에 ssh 관련 패키지 검색
**$ rpm -q -a | grep ssh**
libssh-config-0.10.4-13.el9.noarch
libssh-0.10.4-13.el9.x86_64
openssh-8.7p1-43.el9.x86_64
openssh-clients-8.7p1-43.el9.x86_64
openssh-server-8.7p1-43.el9.x86_64
**$ sudo yum install httpd -y**
Last metadata expiration check: 2:32:08 ago on Thu 28 Aug 2025 01:22:14 AM UTC.
Dependencies resolved.
...
**$ rpm -q -a | grep httpd**
httpd-tools-2.4.62-4.el9.x86_64
httpd-filesystem-2.4.62-4.el9.noarch
httpd-core-2.4.62-4.el9.x86_64
rocky-logos-httpd-90.16-1.el9.noarch
httpd-2.4.62-4.el9.x86_64
# 해당 파일이나 디렉토리가 포함된 패키지 확인
**$ rpm -q -f /usr/sbin/httpd**
httpd-core-2.4.62-4.el9.x86_64
# 관련 문서 파일 목록 확인
**$ rpm -q -d httpd**
/usr/share/man/man5/httpd.conf.5.gz
/usr/share/man/man8/apachectl.8.gz
/usr/share/man/man8/fcgistarter.8.gz
/usr/share/man/man8/htcacheclean.8.gz
/usr/share/man/man8/htcacheclean.service.8.gz
/usr/share/man/man8/httpd.8.gz
/usr/share/man/man8/httpd.service.8.gz
/usr/share/man/man8/httpd.socket.8.gz
/usr/share/man/man8/httpd@.service.8.gz
/usr/share/man/man8/rotatelogs.8.gz
/usr/share/man/man8/suexec.8.gz
# 파일 목록 확인
**$ rpm -q -l httpd**
/etc/httpd/conf.modules.d/00-brotli.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/usr/lib/.build-id
/usr/lib/.build-id/aa
/usr/lib/.build-id/aa/e7688c9bd8cbd9b14f3146d77f264aef0a022c
/usr/lib/.build-id/e2
/usr/lib/.build-id/e2/6b5348a09a9e62cd8c1647bfe541159f67d017
/usr/lib/systemd/system/htcacheclean.service
/usr/lib/systemd/system/httpd.service
...
# 자세한 정보 확인
**$ rpm -q -i httpd**
Name : httpd
Version : 2.4.62
Release : 4.el9
Architecture: x86_64
Install Date: Thu 28 Aug 2025 03:54:30 AM UTC
Group : Unspecified
Size : 60681
License : ASL 2.0
Signature : RSA/SHA256, Mon 28 Apr 2025 07:47:37 PM UTC, Key ID 702d426d350d275d
Source RPM : httpd-2.4.62-4.el9.src.rpm
Build Date : Mon 28 Apr 2025 07:42:21 PM UTC
Build Host : pb-5e4fff10-3e93-4424-980d-55df20763bed-b-x86-64
Packager : Rocky Linux Build System (Peridot) <releng@rockylinux.org>
Vendor : Rocky Enterprise Software Foundation
URL : https://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
yum: 고수준의 설치 도구.
: 의존성, 종속성 문제를 알아서 처리해줌
: 최신 패키지를 쉽게 찾아볼 수 있음
: 패키지들을 저장해놓은 하나의 서버
: YUM 은 저장소에 접근해서 원하는 패키지에 대한 정보를 받아오거나 패키지를 다운로드받아 설치
→ yum 명령을 사용해 YUM 저장소에 접근하려면 저장소의 정보를 저장하고 있는 설정 파일이 필요
# repo file: YUM 저장소에 연결할 수 있도록 설정한 파일
**$ ls -l /etc/yum.repos.d**
total 20
-rw-r--r--. 1 root root 6610 Nov 1 2024 rocky-addons.repo
-rw-r--r--. 1 root root 1165 Nov 1 2024 rocky-devel.repo
-rw-r--r--. 1 root root 2387 Nov 1 2024 rocky-extras.repo
-rw-r--r--. 1 root root 3417 Nov 1 2024 rocky.repo
# repo file 확인
**$ cat /etc/tum.repos.d/rocky.repo**
cat: /etc/tum.repos.d/rocky.repo: No such file or directory
[vagrant@user01 ~]$ cat /etc/yum.repos.d/rocky.repo
# rocky.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for Rocky updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
**[baseos]**
name=Rocky Linux $releasever - BaseOS
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever$rltype
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
countme=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
...
**[appstream]**
name=Rocky Linux $releasever - AppStream
mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=AppStream-$releasever$rltype
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
countme=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
...
**$ yum repolist**
repo id repo name
appstream Rocky Linux 9 - AppStream
baseos Rocky Linux 9 - BaseOS
extras Rocky Linux 9 - Extras
# 로컬 컴퓨터가 아니라 yum 저장소에서 정보를 가져옴
**$ yum info httpd**
Rocky Linux 9 - BaseOS 235 kB/s | 2.5 MB 00:10
Rocky Linux 9 - AppStream 811 kB/s | 9.5 MB 00:12
Rocky Linux 9 - Extras 3.0 kB/s | 17 kB 00:05
Installed Packages
Name : httpd
Version : 2.4.62
Release : 4.el9
Architecture : x86_64
Size : 59 k
Source : httpd-2.4.62-4.el9.src.rpm
Repository : @System
From repo : appstream
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and
: extensible web server.
# repo 파일이 없으면 어떻게 되는지 확인
# 안전한 곳에 우선 백엄
**$ sudo cp /etc/yum.repos.d/*.repo /tmp/
$ ls -l /tmp**
total 20
-rw-r--r--. 1 root root 6610 Aug 28 06:07 rocky-addons.repo
-rw-r--r--. 1 root root 1165 Aug 28 06:07 rocky-devel.repo
-rw-r--r--. 1 root root 2387 Aug 28 06:07 rocky-extras.repo
-rw-r--r--. 1 root root 3417 Aug 28 06:07 rocky.repo
# 레포 파일 제거
# 이제 저장소가 어디있는지 모름
**$ sudo rm /etc/yum.repos.d/*.repo
$ sudo ls -l /etc/yum.repos.d/**
total 0
# 캐싱되어있는 정보가 뜸
**$ sudo yum info httpd**
Installed Packages
Name : httpd
Version : 2.4.62
Release : 4.el9
Architecture : x86_64
Size : 59 k
Source : httpd-2.4.62-4.el9.src.rpm
Repository : @System
From repo : appstream
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and
: extensible web server.
# 캐시 파일 확인
**$ ls -la /var/cache/dnf/**
total 14716
drwxr-xr-x. 5 root root 4096 Aug 28 06:09 .
drwxr-xr-x. 14 root root 176 Aug 28 03:54 ..
drwxr-xr-x. 4 root root 56 Aug 28 03:54 appstream-25485261a76941d3
-rw-r--r--. 1 root root 6798614 Aug 28 01:22 appstream-filenames.solvx
-rw-r--r--. 1 root root 2880685 Aug 28 01:22 appstream.solv
-rw-r--r--. 1 root root 1609132 Aug 28 01:22 appstream-updateinfo.solvx
drwxr-xr-x. 3 root root 40 Aug 28 01:21 baseos-522ed8e2b2f761ff
-rw-r--r--. 1 root root 708444 Aug 28 01:21 baseos-filenames.solvx
-rw-r--r--. 1 root root 1845442 Aug 28 01:22 baseos.solv
-rw-r--r--. 1 root root 430325 Aug 28 01:21 baseos-updateinfo.solvx
-rw-r--r--. 1 root root 2 Aug 28 06:09 expired_repos.json
drwxr-xr-x. 3 root root 40 Aug 28 01:22 extras-90dfbd6ba528f77b
-rw-r--r--. 1 root root 3215 Aug 28 01:22 extras-filenames.solvx
-rw-r--r--. 1 root root 21336 Aug 28 01:22 extras.solv
-rw-r--r--. 1 root root 0 Aug 28 05:09 last_makecache
-rw-r--r--. 1 root root 745472 Aug 28 03:54 packages.db
-rw-r--r--. 1 root root 2 Aug 28 03:54 tempfiles.json
# 캐시 파일 삭제
**$ sudo yum clean all**
25 files removed
# repo file 을 찾을 수 없어 오류가 뜸
**$ sudo yum info httpd**
Error: No Matching packages to ~
# 저장소에 있는 apache 의 모든 정보
# 여러 다른 버전 확인 가능
**$ yum search apache**
Last metadata expiration check: 0:24:19 ago on Thu 28 Aug 2025 05:50:30 AM UTC.
====================== Name & Summary Matched: apache ======================
ant-apache-bcel.noarch : Optional apache bcel tasks for ant
ant-apache-bsf.noarch : Optional apache bsf tasks for ant
ant-apache-oro.noarch : Optional apache oro tasks for ant
ant-apache-regexp.noarch : Optional apache regexp tasks for ant
ant-apache-resolver.noarch : Optional apache resolver tasks for ant
ant-apache-xalan2.noarch : Optional apache xalan2 tasks for ant
apache-commons-logging.noarch : Apache Commons Logging
pcp-pmda-apache.x86_64 : Performance Co-Pilot (PCP) metrics for the Apache
: webserver
=========================== Name Matched: apache ===========================
...
# yum list 여러 옵션
**$ yum list**
all extras obsoletes updates
available installed recent
# 설치된 패키지 목록 확인
**$ yum list installed | grep ssh**
libssh.x86_64 0.10.4-13.el9 @anaconda
libssh-config.noarch 0.10.4-13.el9 @anaconda
openssh.x86_64 8.7p1-43.el9 @anaconda
openssh-clients.x86_64 8.7p1-43.el9 @anaconda
openssh-server.x86_64 8.7p1-43.el9 @anaconda
yum update vs. yum upgradeyum update
: 패키지 업데이트
yum upgrade
: 업데이트 + 더 깔끔하게 정리
dnfyum vs. dnfyum 공식 문서 첫 줄에 속도적인 차이만 있을 뿐 다른 차이는 없다고 써있음
인터넷 검색 혹은 ai 에게 물어보면 의존성 처리에서 차이가 있다고 하지만 과연 진짜 있는지 공식문서를 참고하는 것이 좋음
아주 중요!
**# ip a == ip address show
$ ip a**
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 08:00:27:ed:ab:98 brd ff:ff:ff:ff:ff:ff
**inet 10.0.2.15/24** brd 10.0.2.255 scope global **dynamic noprefixroute enp0s3**
valid_lft 77194sec preferred_lft 77194sec
inet6 fd17:625c:f037:2:a00:27ff:feed:ab98/64 scope global dynamic mngtmpaddr
valid_lft 86342sec preferred_lft 14342sec
inet6 fe80::a00:27ff:feed:ab98/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:40:fa:8f brd ff:ff:ff:ff:ff:ff
**inet 192.168.56.11/24** brd 192.168.56.255 scope global noprefixroute enp0s8
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe40:fa8f/64 scope link
valid_lft forever preferred_lft forever
새로운 vagrant 가상 머신 생성(ip 주소 설정 x) 후
**$ ip a**
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 08:00:27:ed:ab:98 brd ff:ff:ff:ff:ff:ff
**inet 10.0.2.15/24** brd 10.0.2.255 scope global **dynamic noprefixroute** enp0s3
valid_lft 86197sec preferred_lft 86197sec
inet6 fd17:625c:f037:2:a00:27ff:feed:ab98/64 scope global dynamic mngtmpaddr
valid_lft 86198sec preferred_lft 14198sec
inet6 fe80::a00:27ff:feed:ab98/64 scope link
valid_lft forever preferred_lft forever
$ ping 8.8.8.8
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=255 time=39.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=255 time=37.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=255 time=43.5 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=255 time=37.6 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=255 time=36.7 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=255 time=37.2 ms
hostonly network ip 주소는 없지만 외부와 통신은 됨
그러나 NAT network 가 있기에 ㅔㅑ가능(버츄얼 박스에서 처리)
그러나 호스트와 vm 사이에는 통신 불가
dynamic noprefixroute
: 동적 ip 할당. DHCP 서버로부터 할당 받아서 사용.
**$ ifconfig**
**enp0s3**: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
**inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255**
inet6 fe80::a00:27ff:feed:ab98 prefixlen 64 scopeid 0x20<link>
inet6 fd17:625c:f037:2:a00:27ff:feed:ab98 prefixlen 64 scopeid 0x0<global>
ether 08:00:27:ed:ab:98 txqueuelen 1000 (Ethernet)
# 수신한 패킷
**RX packets 1098 bytes 125756 (122.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0**
# 전송한 패킷
**TX packets 892 bytes 135644 (132.4 KiB)
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 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
**$ ifconfig**
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
...
# 아무것도 안했는데
# 수신한 패킷, 전송한 패킷 수 증가했음을 확인 가능
RX packets 1160 bytes 130258 (127.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 943 bytes 140642 (137.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
# ifconfig 가 없다면
# sudo yum install net-tools
# -> ifconfig, route, netstatm, arp, hostname
현재 리눅스에서는 ip~ 의 명령을 사용하기를 권장
# 목적지까지 가는 라우터 경로를 출력
# 특정 패킷을 보내서 라우팅 경로를 보는 식이라
# 해당 패킷이 라우터의 게이트웨이를 빠져나가지 못하고 있음
**$ tracepath 8.8.8.8**
1?: [LOCALHOST] pmtu 1500
1: _gateway 0.558ms
1: _gateway 0.461ms
2: no reply
3: no reply
4: no reply
5: no reply
6: no reply
7: no reply
8: no reply
9: no reply
10: no reply
11: no reply
12: no reply
13: no reply
14: no reply
15: no reply
16: no reply
17: no reply
18: no reply
19: no reply
20: no reply
21: no reply
22: no reply
23: no reply
24: no reply
25: no reply
26: no reply
27: no reply
28: no reply
29: no reply
30: no reply
Too many hops: pmtu 1500
Resume: pmtu 1500
# 윈도우 터미널
PS C:\Users\DS 14> tracert 8.8.8.8
최대 **30홉** 이상의
dns.google [8.8.8.8](으)로 가는 경로 추적:
1 2 ms 2 ms 3 ms 192.168.0.1
2 * 2 ms * 118.218.200.1
3 2 ms 2 ms 2 ms 100.73.21.97
4 3 ms 4 ms 9 ms 10.44.249.10
5 5 ms 3 ms 5 ms 10.222.18.132
6 3 ms 4 ms 4 ms 10.222.9.89
7 3 ms 3 ms 2 ms 10.222.25.241
8 43 ms 37 ms 39 ms 209.85.149.104
9 34 ms 35 ms 36 ms 209.85.245.105
10 35 ms 34 ms 35 ms 108.170.227.93
11 36 ms 36 ms 36 ms dns.google [8.8.8.8]
추적을 완료했습니다.
traceroute
: 목적지까지 가기 위해 거치는 라우터의 정보 및 개수 출력
TTL(Time to Live)
홉
: 거쳐가는 라우터의 개수

# 윈도우 터미널
PS C:\Users\DS 14> tracert 8.8.8.8
최대 **30홉** 이상의
dns.google [8.8.8.8](으)로 가는 경로 추적:
# TTL = 1 로 설정하여 첫번째 라우터에서 송신 패킷이 죽고
# 라우터 정보를 리턴받음(수신함)
1 2 ms 2 ms 3 ms 192.168.0.1
# TTL = 2 로 설정하여 두번째 라우터에서 송신 패킷이 죽고
# 라우터 정보를 리턴받음(수신함)
2 * 2 ms * 118.218.200.1
# 반복
3 2 ms 2 ms 2 ms 100.73.21.97
4 3 ms 4 ms 9 ms 10.44.249.10
5 5 ms 3 ms 5 ms 10.222.18.132
6 3 ms 4 ms 4 ms 10.222.9.89
7 3 ms 3 ms 2 ms 10.222.25.241
8 43 ms 37 ms 39 ms 209.85.149.104
9 34 ms 35 ms 36 ms 209.85.245.105
10 35 ms 34 ms 35 ms 108.170.227.93
11 36 ms 36 ms 36 ms dns.google [8.8.8.8]
추적을 완료했습니다.
Port Unreachable 을 응답(오류 메세지)Time Exceeded가 오고, 이걸 hop별로 기록: 네트워크 설정을 동적으로 관리할 수 있게 해주는 데몬 서비스
집, 카페, 학원 등만 다녀도 네트워크 환경이 계속 바뀌므로
동적으로 네트워크를 관리하는 것이 꼭 필요하고 중요함
→ 동적으로 네트워크 설정을 변경하는 것이 필요
# 네트워크 관리자(NetworkManager) 설치
**$ sudo yum -y install NetworkManager**
Last metadata expiration check: 0:34:17 ago on Thu 28 Aug 2025 06:56:31 AM UTC.
Package NetworkManager-1:1.48.10-8.el9_5.x86_64 is already installed.
Dependencies resolved.
============================================================================
Package Arch Version Repository Size
============================================================================
Upgrading:
NetworkManager x86_64 1:1.52.0-5.el9_6 baseos 2.3 M
NetworkManager-libnm x86_64 1:1.52.0-5.el9_6 baseos 1.9 M
NetworkManager-team x86_64 1:1.52.0-5.el9_6 baseos 28 k
NetworkManager-tui x86_64 1:1.52.0-5.el9_6 baseos 237 k
Transaction Summary
============================================================================
Upgrade 4 Packages
Total download size: 4.4 M
Downloading Packages:
(1/4): NetworkManager-tui-1.52.0-5.el9_6.x8 47 kB/s | 237 kB 00:05
(2/4): NetworkManager-1.52.0-5.el9_6.x86_64 468 kB/s | 2.3 MB 00:05
(3/4): NetworkManager-libnm-1.52.0-5.el9_6. 370 kB/s | 1.9 MB 00:05
(4/4): NetworkManager-team-1.52.0-5.el9_6.x 234 kB/s | 28 kB 00:00
----------------------------------------------------------------------------
Total 795 kB/s | 4.4 MB 00:05
Rocky Linux 9 - BaseOS 1.6 MB/s | 1.7 kB 00:00
Importing GPG key 0x350D275D:
Userid : "Rocky Enterprise Software Foundation - Release key 2022 <releng@rockylinux.org>"
Fingerprint: 21CB 256A E16F C54C 6E65 2949 702D 426D 350D 275D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Upgrading : NetworkManager-libnm-1:1.52.0-5.el9_6.x86_64 1/8
Running scriptlet: NetworkManager-1:1.52.0-5.el9_6.x86_64 2/8
Upgrading : NetworkManager-1:1.52.0-5.el9_6.x86_64 2/8
Running scriptlet: NetworkManager-1:1.52.0-5.el9_6.x86_64 2/8
Upgrading : NetworkManager-tui-1:1.52.0-5.el9_6.x86_64 3/8
Upgrading : NetworkManager-team-1:1.52.0-5.el9_6.x86_64 4/8
Cleanup : NetworkManager-tui-1:1.48.10-8.el9_5.x86_64 5/8
Cleanup : NetworkManager-team-1:1.48.10-8.el9_5.x86_64 6/8
Running scriptlet: NetworkManager-1:1.48.10-8.el9_5.x86_64 7/8
Cleanup : NetworkManager-1:1.48.10-8.el9_5.x86_64 7/8
Running scriptlet: NetworkManager-1:1.48.10-8.el9_5.x86_64 7/8
Cleanup : NetworkManager-libnm-1:1.48.10-8.el9_5.x86_64 8/8
Running scriptlet: NetworkManager-libnm-1:1.48.10-8.el9_5.x86_64 8/8
Verifying : NetworkManager-libnm-1:1.52.0-5.el9_6.x86_64 1/8
Verifying : NetworkManager-libnm-1:1.48.10-8.el9_5.x86_64 2/8
Verifying : NetworkManager-1:1.52.0-5.el9_6.x86_64 3/8
Verifying : NetworkManager-1:1.48.10-8.el9_5.x86_64 4/8
Verifying : NetworkManager-tui-1:1.52.0-5.el9_6.x86_64 5/8
Verifying : NetworkManager-tui-1:1.48.10-8.el9_5.x86_64 6/8
Verifying : NetworkManager-team-1:1.52.0-5.el9_6.x86_64 7/8
Verifying : NetworkManager-team-1:1.48.10-8.el9_5.x86_64 8/8
Upgraded:
NetworkManager-1:1.52.0-5.el9_6.x86_64
NetworkManager-libnm-1:1.52.0-5.el9_6.x86_64
NetworkManager-team-1:1.52.0-5.el9_6.x86_64
NetworkManager-tui-1:1.52.0-5.el9_6.x86_64
Complete!