리눅스

[Linux:수업 2주차] Rocky Linux 네트워크 및 기본 명령어 정리

palantirops 2026. 1. 13. 16:52

네트워크 관리

1. IP 주소 확인 및 관리

기본 확인 명령어

# 네트워크 인터페이스 확인
ip addr show
ip a

# 특정 인터페이스 확인
ip addr show dev ens160

출력 예시:

2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    inet 192.168.4.128/24 brd 192.168.4.255 scope global dynamic

2. IP Route (라우팅 테이블)

개념: 네트워크 패킷이 목적지까지 가는 경로를 설정하는 명령어

목적 명령어 설명

조회 ip route show 현재 설정된 모든 경로 확인
추가 ip route add 10.0.0.0/24 via 192.168.1.1 특정 네트워크 대역의 경로 추가
기본 게이트웨이 ip route add default via 192.168.1.1 기본 게이트웨이 설정 (모르는 주소는 여기로)

라우팅 테이블 관리

# 라우팅 테이블 확인
ip route show

# 게이트웨이 추가
sudo ip route add default via 192.168.1.1 dev ens160

3. NetworkManager CLI (nmcli) - 권장 도구

특징: IP 주소를 완전히 변경할 수 있으며, 재부팅 후에도 설정이 유지됨

연결 상태 확인

# 모든 연결 확인
nmcli connection show

# 활성화된 장치 확인
nmcli device status

# 특정 인터페이스 상세 정보
nmcli device show ens160

IP 주소 변경하기 (고정 IP 설정)

전체 설정을 한 번에 변경:

sudo nmcli con mod ens160 \
  ipv4.addresses 192.168.4.100/24 \
  ipv4.gateway 192.168.4.2 \
  ipv4.dns 168.126.63.1 \
  ipv4.method manual

# 네트워크 재시작
sudo nmcli con down ens160 && sudo nmcli con up ens160

# 확인
ip a

각 항목 설명:

항목 설명 예시

ipv4.addresses 설정할 IP 주소/서브넷 마스크 192.168.4.100/24
ipv4.gateway 게이트웨이 (공유기) 주소 192.168.4.2
ipv4.dns DNS 서버 주소 168.126.63.1 (KT), 8.8.8.8 (Google)
ipv4.method IP 할당 방식 manual (고정), auto (DHCP)

DHCP로 변경 (자동 IP 할당)

sudo nmcli connection modify ens160 ipv4.method auto
sudo nmcli connection up ens160

주의사항:

  • IP 변경 시 SSH 연결이 끊어지므로 새 IP로 재접속 필요
  • 게이트웨이는 ip route | grep default 명령어로 확인 가능
  • 192.168.4.1은 보통 공유기가 사용하므로 피할 것 (충돌 위험)

네트워크 포트 확인

netstat vs ss

명령어 설명 비고

netstat 전통적인 네트워크 상태 확인 도구 구버전
ss 최신 네트워크 상태 확인 도구 (권장) 더 빠르고 효율적

자주 사용하는 옵션

# 모든 네트워크 연결 확인
netstat | less

# TCP 포트 리스닝 상태 확인
netstat -ntl
# -n: 숫자로 표시
# -t: TCP만
# -l: LISTEN 상태만

# ss로 동일한 작업
ss -ntl

# 특정 포트 확인 (예: 80번)
ss -ntlp | grep 80

주요 포트 번호:

포트 서비스

22 SSH
80 HTTP (웹서버)
443 HTTPS
3306 MariaDB/MySQL
9090 Cockpit (웹 관리 도구)

Cockpit 웹 관리 도구

Cockpit 시작 및 접속

# Cockpit 소켓 활성화 및 시작 (권장)
sudo systemctl enable --now cockpit.socket

# 상태 확인
sudo systemctl status cockpit.socket

# 포트 확인 (9090번 포트)
ss -ntlp | grep 9090

브라우저 접속:

https://192.168.4.128:9090

https를 사용해야 하며, 보안 경고가 나오면 "계속 진행" 선택

방화벽 설정

# 방화벽 상태 확인
sudo systemctl status firewalld

# 방화벽 중지 및 비활성화
sudo systemctl stop firewalld
sudo systemctl disable firewalld

웹 서버 관리 (Nginx)

Nginx 설치 및 시작

# Nginx 설치
sudo dnf install nginx -y

# Nginx 시작
sudo systemctl start nginx

# 부팅 시 자동 시작 설정
sudo systemctl enable nginx

# 상태 확인
sudo systemctl status nginx

# 포트 확인 (80번)
ss -ntlp | grep 80

Apache와 Nginx 충돌 해결

문제: 둘 다 80번 포트를 사용하려고 해서 충돌 발생

해결 방법 1 - Apache 중지:

# Apache 중지
sudo systemctl stop httpd
sudo systemctl disable httpd

# Nginx 재시작
sudo systemctl restart nginx

해결 방법 2 - Nginx 포트 변경:

# 설정 파일 수정
sudo vi /etc/nginx/nginx.conf

# 'listen 80;' 부분을 'listen 8080;'으로 변경

# Nginx 재시작
sudo systemctl restart nginx

브라우저 접속:

  • 기본: http://192.168.4.128
  • 포트 변경 시: http://192.168.4.128:8080

Vi 에디터 사용법

모드 개념

  • 명령 모드 (기본): 커서 이동, 삭제, 복사 등
  • 입력 모드: 텍스트 입력
  • 명령행 모드: 저장, 종료, 검색 등

1. 커서 이동

키 동작

h 왼쪽
j 아래
k
l 오른쪽
0 또는 ^ 줄 맨 앞
$ 줄 맨 뒤
gg 문서 맨 처음
G 문서 맨 마지막
숫자G 해당 줄로 이동

2. 입력 모드 전환

키 동작

i 현재 커서 위치에서 입력
I 줄 맨 앞에서 입력
a 커서 다음 위치에서 입력
A 줄 맨 끝에서 입력
o 아래에 새 줄 추가 후 입력
O 위에 새 줄 추가 후 입력
ESC 명령 모드로 돌아가기

3. 삭제 및 수정

명령 동작

x 커서 위치 문자 삭제
dd 현재 줄 삭제
dw 단어 삭제
r문자 한 글자 치환
u 실행 취소 (Undo)
U 현재 줄 전체 취소

4. 저장 및 종료

명령 동작

:w 저장
:q 종료
:wq 저장 후 종료
:q! 저장하지 않고 강제 종료
ZZ 저장 후 종료 (명령 모드에서)

5. 검색 및 치환

명령 동작

/패턴 아래 방향 검색
?패턴 위 방향 검색
n 다음 검색 결과
N 이전 검색 결과
:%s/old/new/g 전체 문서에서 old를 new로 치환
:%s/old/new/gc 치환 전 확인

6. 환경 설정

명령 동작

:set number 줄 번호 표시
:set nonumber 줄 번호 숨기기
:set ts=4 탭 간격 4칸
:set autoindent 자동 들여쓰기

Vi 대신 Nano 사용하기:

# Nano 에디터로 파일 열기
nano 파일명

# Ctrl + X: 종료
# Ctrl + O: 저장
# Ctrl + K: 줄 삭제

 


 

기본 명령어 총정리

시스템 관리

# 시스템 정보
uname -a          # 시스템 정보
hostname          # 호스트명
uptime            # 가동 시간

# 사용자 관리
whoami            # 현재 사용자
who               # 로그인 사용자
id                # 사용자 ID 정보

# 시스템 종료/재시작
shutdown -h now   # 즉시 종료
reboot            # 재시작

서비스 관리 (systemctl)

# 서비스 시작/중지/재시작
sudo systemctl start 서비스명
sudo systemctl stop 서비스명
sudo systemctl restart 서비스명

# 상태 확인
sudo systemctl status 서비스명

# 부팅 시 자동 시작
sudo systemctl enable 서비스명
sudo systemctl disable 서비스명

# 활성화 + 시작 (한 번에)
sudo systemctl enable --now 서비스명

자주 사용하는 팁

1. 터미널 단축키

단축키 동작

Ctrl + C 실행 중인 명령 중단
Ctrl + Z 프로세스 일시 중지
Ctrl + D 로그아웃 (exit와 동일)
Ctrl + L 화면 정리 (clear와 동일)
Tab 자동 완성

2. 명령어 이력

# 명령어 기록 보기
history

# 이전 명령어 재실행
!!

# 특정 번호 명령어 실행
!번호

3. 파이프와 리다이렉션

# 파이프 (명령어 연결)
ps aux | grep nginx

# 출력 저장
ls -l > 파일명

# 출력 추가
echo "내용" >> 파일명

 

 

 


 

1. 웹 서버 및 네트워크 기본 설정

Nginx 설정 파일 위치

# HTML 파일 기본 경로
cd /var/www/html

# Nginx 설정 파일
/etc/nginx/nginx.conf

고정 IP 설정 방법

sudo nmcli con mod ens160 ipv4.addresses 192.168.4.128/24
sudo nmcli con mod ens160 ipv4.gateway 192.168.4.1
sudo nmcli con mod ens160 ipv4.dns "8.8.8.8 8.8.4.4"
sudo nmcli con mod ens160 ipv4.method manual
sudo nmcli con up ens160

IP 주소가 자동으로 변경되는 이유

  • DHCP 임대 시간이 만료되어 IP가 자동으로 재할당됨
  • DHCP 모드에서는 라우터가 일정 시간마다 IP를 새로 배정
  • 해결책: 고정 IP 설정으로 변경 방지

Root 계정 전환

sudo su -
sudo -i

Nginx 상태 확인

sudo systemctl status nginx

2. GRUB (부트로더) 이해하기

GRUB의 개념

GRUB(GRand Unified Bootloader)은 컴퓨터가 켜지자마자 만나는 시스템의 안내 데스크입니다. 하드웨어(BIOS/UEFI)가 깨어난 후, 운영체제를 하드디스크에서 메모리로 로딩하여 실행하는 역할을 담당합니다.

GRUB의 핵심 역할

  1. 멀티 부팅 선택: 윈도우와 리눅스가 함께 설치된 경우 어떤 OS로 부팅할지 선택
  2. 커널 로딩: 리눅스 커널을 메모리에 올리고 제어권 이양
  3. 부팅 옵션 수정: 시스템 문제 발생 시 부팅 방식 변경 가능

GRUB2 특징

  • 최신 리눅스 배포판(CentOS 7/8, Ubuntu 등)에서 사용
  • 설정 파일: /boot/grub2/grub.cfg
  • 보안 강화: grub2-set-password로 암호 설정 가능

GRUB 사용이 필요한 상황

1. 비밀번호 복구 (긴급 수리)

# 부팅 시 e를 눌러 GRUB 편집
# linux16 라인 끝에 추가:
rd.break
# 또는
init=/bin/bash

# 복구 모드 진입 후:
mount -o remount,rw /
chroot /
passwd root
touch /.autorelabel
exit
reboot

2. SELinux 비활성화 (비밀번호 복구 시 필요)

vi /etc/sysconfig/selinux
# SELINUX=disabled로 설정

3. GRUB 패스워드 설정 (보안 강화)

grub2-set-password
grub2-mkconfig -o /boot/grub2/grub.cfg

3. 부팅 과정 3단계

단계 이름 역할 비유

1번 주자 GRUB 하드디스크에서 리눅스를 찾아 깨우는 역할 문지기/안내데스크
2번 주자 systemd 모든 서비스와 프로그램을 관리하는 총대장 총괄 매니저
3번 (상태) Target 시스템을 어떤 모드로 운영할지 정한 목적지 영업 모드 (주간/야간)

4. 런레벨과 Target

전통적인 런레벨 (SysV init)

runlevel  # 현재 런레벨 확인

런레벨 설명

0 시스템 종료 (halt)
1 단일 사용자 모드 (관리자 유지보수)
2 멀티 사용자 모드 (네트워크 없음)
3 멀티 사용자 모드 (네트워크 포함, CLI 전용)
4 예약된 사용자 정의 모드
5 멀티 사용자 모드 + GUI (X 윈도우)
6 시스템 재부팅 (reboot)

런레벨 변경

sudo init 3  # CLI 모드로 전환

systemd Target (현대 방식)

# 현재 타겟 확인
systemctl get-default

# 타겟 변경 (즉시 적용)
systemctl isolate multi-user.target

# 부팅 시 기본 타겟 변경
systemctl set-default graphical.target

SysV init vs systemd 비교

구분 SysV init systemd

구조 직렬 실행 (순차적) 병렬 실행 (의존성 관리)
설정 파일 /etc/inittab, /etc/rc.d/ /etc/systemd/system/
런레벨 0~6 (고정 숫자) 다양한 Target (유연)
부팅 속도 느림 빠름
서비스 제어 service, chkconfig systemctl
현재 상태 확인 runlevel systemctl get-default

프로세스 트리 확인

pstree | head

5. 사용자 계정 관리

패스워드 파일 확인

head -n 5 /etc/passwd
grep user1 /etc/shadow

해시 알고리즘

  • 데이터를 해시 알고리즘에 통과시켜 일정한 크기의 값 추출
  • 데이터 무결성 체크에 사용 (MD5, SHA)
  • 단방향 알고리즘으로 해시값으로부터 평문 복원 불가능

/etc/skel 디렉토리

새로운 사용자를 위한 모델하우스

/etc/skel은 새 사용자 계정 생성 시 홈 디렉토리에 복사되는 기본 파일들이 저장된 곳입니다.

주요 파일들:

  • .bashrc: 로그인 시 실행되는 개인용 설정 (alias 등)
  • .bash_profile: 환경 변수 설정
  • .bash_logout: 로그아웃 시 실행되는 작업

보안 관점:

  • 백도어 삽입 위험: /etc/skel/.bashrc에 악성 스크립트 삽입 시 모든 신규 사용자에게 영향
  • 권한 설정 확인 필요

확인 예시:

ls -a /etc/skel
ls -a /home/user3

6. 환경 변수 PATH 설정

PATH에 디렉토리 추가

export PATH=$PATH:$HOME/lab
echo $PATH

설정 이유:

  • 설정 전: 전체 경로 입력 필요 (/root/lab/hack.sh)
  • 설정 후: 어디서든 파일명만으로 실행 가능 (hack.sh)

7. 계정 상태 점검

항목 명령

계정 정보 확인 cat /etc/passwd
암호 상태 확인 passwd -S user01
그룹 확인 id user01
암호 정책 확인 chage -l user01
sudo 로그 확인 tail -f /var/log/secure

암호 사용 기간 설정

chage -l username  # 현재 설정 확인

sudoers 설정

visudo  # 안전한 편집 방법

설정 예시:

user2 ALL=/sbin/shutdown -h +10, /usr/bin/systemctl

특정 사용자에게 특정 명령어만 root 권한으로 실행 허용


8. 프로세스(Process) 관리

Process의 개념

  • 시스템에서 동작하는 모든 프로그램
  • 모든 프로세스는 고유한 PID(Process ID) 보유
  • 커널과 관리자는 PID를 통해 프로세스 관리 및 추적

데몬(Daemon)

  • 커널 상에서 백그라운드 모드로 작동
  • 요청이 있을 때만 동작하는 프로세스
  • CPU 부하는 적지만 메모리 자원 차지
  • 데몬이 많으면 시스템이 느려지거나 다운될 수 있음

메모리 상태 확인

free -h

프로세스 확인

ps -ef | head
pgrep sleep

프로세스 생성 방식

  • exec: 프로그램 동작 시 해당 프로세스로 변경
  • fork: 자식 프로세스를 생성하여 동작

9. 시그널(Signal)

주요 시그널

kill -l  # 모든 시그널 목록 확인

시그널 이름 번호 명령 설명

SIGHUP 1 HUP 프로세스 재실행
SIGINT 2 INT (Ctrl+C) 프로세스 종료
SIGKILL 9 KILL 커널이 강제 종료
SIGTERM 15 TERM 데이터 저장 후 정상 종료
SIGTSTP 20 TSTP (Ctrl+Z) 작업 중단 (종료 아님)

10. 프로세스 우선순위 및 백그라운드 작업

nice - 우선순위 설정

nice -n 값 명령어
  • 기본값: 10
  • 값이 작을수록 높은 우선순위

백그라운드 작업 관리

jobs       # 백그라운드 작업 목록
fg         # 포그라운드로 전환
bg         # 백그라운드로 전환

nohup - 로그아웃 후에도 작업 유지

nohup tar zcvf usr_bin.tar.gz /usr/bin &

의미: 로그아웃해도 작업이 완료될 때까지 계속 실행

결과 파일:

-rw-------. 1 root root 25K nohup.out
-rw-r--r--. 1 root root 52M usr_bin.tar.gz

tar 명령어 옵션:

  • z: gzip 압축
  • c: 아카이브 생성
  • v: 진행 상황 출력
  • f: 파일명 지정

오늘 공부 후기

  1. 명령어는 직접 쳐보면서 익히기
  2. 시스템 로그 확인 습관화 (/var/log/)
  3. 테스트 환경(가상머신)에서 먼저 실습
  4. 백업 후 중요한 설정 변경하기
  5. 문서화 습관 들이기