본문 바로가기
Linux

리눅스 과정 3일차

by Mostlove 2025. 2. 26.
728x90
반응형

 

      1. 호스트명 변경🛠 Ubuntu & Rocky Linux 네트워크 설정 및 DNS 관리 요약
        1️⃣ 네트워크 설정 파일Ubuntu
        네트워크 설정 파일:또는 Netplan 사용 (Ubuntu 18.04 이상)Rocky Linux (CentOS 포함)
        네트워크 설정 파일:(ens160은 네트워크 인터페이스 이름이며, 환경에 따라 다를 수 있음)
        2️⃣ 인터넷 접속 불가 문제 (DNS 설정)DNS 설정 확인 (공통)예제:💡 위와 같이 Google DNS (8.8.8.8, 8.8.4.4) 또는 사용 중인 네트워크의 DNS 서버 주소를 추가하면 인터넷 접속 문제 해결 가능.
        echo "nameserver 8.8.8.8" > /etc/resolv.conf echo "nameserver 1.1.1.1" >> /etc/resolv.conf
        하지만 Ubuntu의 NetworkManager가 자동으로 DNS를 변경할 수도 있으므로, 고정 설정이 필요할 수도 있음.
        3️⃣ 호스트명 및 로컬 IP 매핑 설정호스트 설정 파일예제:위와 같이 설정하면 myserver라는 이름으로 192.168.100.100 서버에 접속할 수 있음.
        4️⃣ Ubuntu의 NetworkManager 설정 (DNS 문제 해결)📌 해결 방법: NetworkManager에서 고정 DNS 설정
        1. NetworkManager 설정 파일 열기
        sudo nano /etc/NetworkManager/NetworkManager.conf
        1. 아래 내용을 추가하거나 수정:
        [main] dns=none
        1. NetworkManager 재시작
         
        sudo systemctl restart NetworkManager
        이제 NetworkManager가 자동으로 DNS를 변경하지 않도록 설정됨.
        5️⃣ 가상머신(VM) 클론 시 네트워크 설정 주의점수정해야 할 요소
      sudo hostnamectl set-hostname new-hostname
      또는 /etc/hostname 파일을 직접 수정 가능.
      1. IP 주소 변경
      • Ubuntu는 /etc/network/interfaces 또는 /etc/netplan/*.yaml
      • Rocky Linux는 /etc/sysconfig/network-scripts/ifcfg-ens160 수정
      1. MAC 주소 충돌 해결
        클론된 VM의 네트워크 설정을 확인하고 새로운 MAC 주소를 생성해야 할 수도 있음.
       
      ip link show

      📌 전체 요약
      1. Ubuntu와 Rocky의 네트워크 설정 파일을 알고 있어야 한다.
        • Ubuntu: /etc/network/interfaces 또는 /etc/netplan/*.yaml
        • Rocky: /etc/sysconfig/network-scripts/ifcfg-ens160
      2. 인터넷 접속 불가 시 DNS 설정 확인
        • /etc/resolv.conf 파일에서 nameserver 설정을 확인
        • 필요하면 nameserver 8.8.8.8 추가
      3. 호스트명 및 로컬 IP 매핑
        • /etc/hosts 파일에서 설정 가능
      4. Ubuntu의 NetworkManager가 DNS를 자동으로 변경하면 설정을 고정해야 함.
        • /etc/NetworkManager/NetworkManager.conf 수정 (dns=none)
      5. VM을 클론할 때 호스트명과 네트워크 설정을 변경해야 한다.
        • IP 주소, 호스트명, MAC 주소 확인 및 수정 필요.
    • Rocky Linux나 Ubuntu 같은 가상머신(VM)은 클론(Clone) 기능을 사용하여 복제할 수 있음.
      하지만 클론된 VM은 고유한 네트워크 설정을 유지하지 않기 때문에 수정이 필요함.
    • Ubuntu의 NetworkManager위치 변경 시 자동으로 네트워크 및 DNS를 변경하는 기능을 제공한다.
      하지만 이 기능이 의도치 않게 DNS 설정을 변경하면서 인터넷 접속 문제가 발생할 수 있다.
    • ping myserver
    • 192.168.100.100 myserver
    • /etc/hosts
    • 호스트명을 설정하면 IP 대신 이름(hostname) 으로 서버에 접속할 수 있다.
    • DNS 설정 변경 (Ubuntu & Rocky)
    • nameserver 8.8.8.8 nameserver 8.8.4.4
    • cat /etc/resolv.conf
    • 도메인 주소를 IP로 변환하는 DNS 설정이 잘못되면 인터넷 접속이 안 될 수 있음.
      이 경우 DNS 서버 정보를 확인해야 한다.
    • /etc/sysconfig/network-scripts/ifcfg-ens160
    • /etc/netplan/*.yaml
    • /etc/network/interfaces
    • 운영체제에 따라 네트워크 설정 파일의 경로와 형식이 다르다.
    • 서버에서 네트워크를 설정하고 유지하기 위해 네트워크 설정 파일 및 DNS 설정을 정확히 이해해야 한다.

 

 

🔹 서버 서비스 생성 및 설정 방법 요약

서버에서 특정 서비스를 실행하려면 아래 6가지 단계가 필요하다.


1️⃣ 필요한 서비스 패키지 설치

해당 서비스가 없다면 패키지를 설치해야 한다.
예: Apache 웹 서버(httpd) 설치

yum -y install httpd

💡 -y 옵션은 설치 과정에서 사용자 확인 없이 자동 진행하도록 해줌.


2️⃣ 서비스 설정 파일 수정 (필요시)

각 서비스는 설정 파일을 통해 동작 방식을 조정할 수 있다.

  • Apache의 기본 설정 파일 위치:
    /etc/httpd/conf/httpd.conf
  • 예를 들어 기본 포트를 8080으로 변경하려면:
    vi /etc/httpd/conf/httpd.conf
    mathematica
     
    Listen 80Listen 8080 (수정)
    그리고 저장 후 재시작해야 적용됨.

3️⃣ 서비스 실행 및 자동 실행 설정

서비스를 실행하고, 서버 재부팅 후에도 자동으로 실행되도록 설정한다.

서비스 실행 (즉시 실행)

service httpd start

또는 systemd 기반 명령어 사용 (CentOS 7 이상)

systemctl enable httpd.service # 부팅 시 자동 실행 설정 systemctl start httpd # 서비스 즉시 실행

4️⃣ 방화벽 및 SELinux 설정

서비스가 정상 작동하려면 방화벽에서 해당 포트를 열어야 함.

방화벽에서 포트 개방 (80번 포트 예시)

firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload

SELinux 설정 (Rocky Linux 등에서 필요할 수 있음)

setenforce 0 # SELinux 임시 비활성화

SELinux가 활성화된 상태에서는 웹 서버가 정상적으로 실행되지 않을 수 있음. 설정을 영구적으로 변경하려면 /etc/selinux/config 파일 수정 필요.


5️⃣ 서비스 정상 실행 확인

현재 실행 중인 서비스 및 포트 확인

netstat -ntlp | grep 80

또는 ss 명령어 사용 (netstat 대체)

ss -ntlp | grep 80

이 명령어를 실행했을 때, httpd 서비스가 80 포트에서 LISTEN 상태여야 정상 동작 중임.


6️⃣ 클라이언트에서 서비스 접속 테스트

이제 클라이언트(웹 브라우저)에서 접속하여 서비스가 정상 작동하는지 확인한다.

웹 브라우저에서 서버 접속

http://192.168.100.100

(192.168.100.100 → 서버의 IP 주소로 변경)

💡 기본 포트(80번)가 아니라 8080으로 변경한 경우

http://192.168.100.100:8080

📌 추가 부연 설명

  1. 서비스 자동 실행 설정은 필수
    • 서버 재부팅 후에도 자동으로 실행되도록 systemctl enable 명령어를 사용.
    • 수동으로 실행(systemctl start)만 하면 재부팅 후에는 서비스가 꺼진 상태가 됨.
  2. 방화벽 설정이 안 되어 있으면 외부에서 접근 불가
    • 서버 내부에서는 서비스가 정상 동작하더라도, 방화벽에서 포트를 열어주지 않으면 외부에서 접근할 수 없음.
  3. SELinux 문제 해결
    • SELinux가 활성화된 상태에서는 웹 서버가 파일을 읽는 것이 제한될 수 있음.
    • setenforce 0으로 일시적으로 비활성화할 수 있지만, 영구적으로 끄려면 /etc/selinux/config에서 SELINUX=disabled로 변경 후 재부팅 필요.

📌 전체 프로세스 요약

bash
복사편집
yum -y install httpd                                        # 1️⃣ Apache 설치
vi /etc/httpd/conf/httpd.conf                           # 2️⃣ 설정 파일 수정 (필요시)
systemctl enable httpd.service                      # 3️⃣ 자동 실행 설정
systemctl start httpd                                      # 3️⃣ 서비스 실행
firewall-cmd --permanent --add-port=80/tcp # 4️⃣ 방화벽 열기
firewall-cmd --reload                                     # 4️⃣ 방화벽 적용
setenforce 0                                                  # 4️⃣ SELinux 비활성화 (필요시)
netstat -ntlp | grep 80                                    # 5️⃣ 서비스 확인
firefox http://192.168.100.100                       # 6️⃣ 클라이언트에서 접속 테스트

* Linux에서 
'명령어_1 ; 명령어_2' 하면 두 개의 명령어를 각각 한번에 실행해준다. 앞의 명령어에 오류가 있어도 별개의 뒤의 명령어는 실행된다. 
'명령어_1 && 명령어_2' 하면 앞의 명령어를 실행한 뒤 뒤의 명령어를 실행한다. 앞에 명령어에서 오류가 있으면 뒤의 명령어가 실행되지 않는다. 

 

🔹 Runlevel 상세 설명 및 사용법

1️⃣ Runlevel이란?

  • 리눅스 시스템이 어떤 상태(모드)로 부팅될지 결정하는 설정값
  • CLI(명령어 콘솔)와 GUI(그래픽 모드) 간의 전환 가능
  • 현재는 systemd를 사용하는 최신 리눅스 배포판에서 target(systemd target) 방식으로 대체됨

2️⃣ Runlevel별 기능 및 용도

Runlevel설명용도

0 시스템 종료 shutdown -h now 와 동일
1 단일 사용자 모드 관리자(root)용, 시스템 유지보수, 패스워드 초기화 등
2 멀티유저 모드 (네트워크 없음) 거의 사용하지 않음
3 멀티유저 모드 (네트워크 포함) 일반적인 CLI(콘솔) 모드, 서버 운영에 주로 사용
4 미사용 특별한 설정 없이는 사용되지 않음
5 GUI 모드 그래픽 환경(GNOME, KDE 등) 으로 부팅
6 시스템 재부팅 reboot 명령어와 동일

3️⃣ Runlevel 확인 및 변경 방법

현재 Runlevel 확인

runlevel

또는

who -r

Runlevel 변경 (일시적 변경)

init <숫자>

예) GUI 모드(5)로 변경

init 5

부팅 시 기본 Runlevel 설정 변경 (영구적 변경)

  1. /etc/inittab 파일 수정
vi /etc/inittab
  1. 다음 부분 수정
    id:3:initdefault:
    3이면 CLI 모드, 5면 GUI 모드
  2. 저장 후 재부팅

4️⃣ Systemd 기반 Runlevel 전환 (최신 리눅스 배포판용)

CentOS 7 이상에서는 systemd를 사용하므로 target 방식으로 변경해야 함.

현재 target 확인

systemctl get-default

target 변경 (영구적 변경)
CLI 모드(3)로 변경

systemctl set-default multi-user.target

GUI 모드(5)로 변경

systemctl set-default graphical.target

즉시 변경 (재부팅 없이 적용)

systemctl isolate multi-user.target # CLI 모드로 변경 systemctl isolate graphical.target # GUI 모드로 변경

📌 추가 참고 사항

  • 예전엔 runlevel을 많이 사용했지만, 현재는 systemd가 기본이라 target 방식을 사용
  • CLI 환경에서 GUI로 진입하려면 X Window 시스템(GNOME, KDE 등)이 설치되어 있어야 함
  • GUI 설치 상태 확인
    bash
    복사편집
    yum grouplist
    만약 GUI가 설치되지 않았다면, GNOME을 설치 후 GUI로 변경 가능
    bash
    복사편집
    yum groupinstall "GNOME Desktop" systemctl set-default graphical.target

이제 runlevel과 systemd target을 활용해 원하는 부팅 모드를 설정할 수 있다

🔹 MBR(마스터 부트 레코드) 및 GRUB 백업 요약

  • MBR(512KB, 디스크의 첫 번째 섹터)에는 부팅 정보가 저장됨
    • 부팅 로더(GRUB2), 파티션 정보, 부트 스트랩 코드 포함
    • 시스템 부팅 문제(바이러스, 손상) 발생 시 복구 가능
  • 백업 방법
    • dd 명령어를 사용하여 MBR 및 파티션 정보 백업
    • sfdisk로 파티션 테이블을 백업
  • MBR 구조
    • 446Byte: 부트스트랩 코드
    • 64Byte: 파티션 테이블
    • 2Byte: 시그니처 해시코드
  • 관련 명령어
    • dd → 디스크 전체 복사
    • fdisk → 파티션 정보 확인
    • sfdisk → 파티션 테이블 백업 & 복원

📌 systemd에서 서비스 파일 생성 및 관리 (Tomcat 예시)

특정 서비스를 systemd에서 관리할 수 있도록 별도의 서비스 파일을 생성할 수 있다.


1️⃣ 서비스 파일 생성 (tomcat.service)

서비스 파일을 /usr/lib/systemd/system/ 디렉터리에 생성하면 systemctl을 이용해 서비스 관리를 할 수 있다.

nano /usr/lib/systemd/system/tomcat.service

tomcat.service 예제

[Unit] Description=tomcat8 After=network.target syslog.target [Service] Type=forking Environment=JAVA_HOME=/usr/local/centos/jdk1.8 User=root Group=root ExecStart=/usr/local/centos/tomcat/bin/startup.sh ExecStop=/usr/local/centos/tomcat/bin/shutdown.sh Umask=0022 RestartSec=10 Restart=always [Install] WantedBy=multi-user.target

🔹 [Unit]: 서비스 설명 및 실행 순서 지정
🔹 [Service]: 실행 유형, 환경 변수, 실행 명령어, 재시작 설정 등 지정
🔹 [Install]: 부팅 시 실행되도록 설정


2️⃣ 서비스 활성화 및 실행

서비스 파일을 만든 후, 다음 명령어로 활성화 및 실행하면 된다.

systemctl enable tomcat.service # 부팅 시 자동 실행 systemctl start tomcat # Tomcat 서비스 시작

📌 요약

  1. /usr/lib/systemd/system/에 **서비스 파일(~.service)**을 생성
  2. [Unit], [Service], [Install] 섹션을 정의하여 서비스 실행 방법 설정
  3. systemctl enable tomcat.service 로 부팅 시 자동 실행 설정
  4. systemctl start tomcat 로 서비스 실행

*  필요 없는 소프트웨어를 삭제해보자. 만일 firstboot(OR smartd)가 필요 없다면 
① which firstboot 해서 파일의 저장 위치 /usr/sbin/firstboot를 보고,  
② rm –rf /usr/sbin/firstboot식으로 삭제하면 된다.

1️⃣ WINE: Linux에서 Windows 프로그램 실행

  • Linux의 실행파일은 .bin, Windows 실행파일은 **.exe, .com, .bat**이다.
  • Windows 실행파일을 Linux에서 실행하려면 WINE을 설치 후 사용한다.
    bash
    복사편집
    wine <파일명>.exe # Windows 실행 파일 실행

💡 주의점

  • WINE은 Windows 프로그램을 완벽하게 실행하지 못할 수도 있음.
  • GUI 프로그램의 경우 실행이 불안정할 가능성이 있음.

2️⃣ Linux 부팅 과정

Linux 머신이 부팅되는 과정은 다음과 같다.

🔹 부팅 과정 상세

  1. BIOS(Post 과정) 실행
    • 마더보드 ROM-BIOS가 자동으로 실행됨.
    • CPU, RAM, 키보드, 마우스 등의 장치를 점검 후 초기화 진행.
  2. 부트로더(GRUB2) 실행
    • BIOS 종료 후, 부팅 순서에 따라 GRUB2가 실행됨.
    • GRUB2는 운영체제를 선택하고 커널을 메모리에 로드.
  3. 커널 로드 및 초기화 프로세스(init) 진행
    • init 프로세스 실행.
    • systemd 기반 배포판에서는 **systemd**가 실행됨.
    • /etc/fstab 설정에 따라 블록 장치를 마운트.
    • /etc/rc.local에서 설정된 초기 작업 수행.
  4. 로그인 화면 출력
    • GUI 환경(runlevel 5) 또는 CLI 환경(runlevel 3)으로 부팅 완료.

💡 확인 방법

cat /etc/rc.d/rc.sysinit # 부팅 과정 확인

3️⃣  Linux 서비스 관리 (systemd)

Linux에서는 systemd를 이용해 서비스를 관리할 수 있다.

💡 서비스 파일 생성 예시 (tomcat.service)

nano /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Tomcat Service
After=network.target syslog.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/centos/jdk1.8
User=root
Group=root
ExecStart=/usr/local/centos/tomcat/bin/startup.sh
ExecStop=/usr/local/centos/tomcat/bin/shutdown.sh
Umask=0022
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target

💡 서비스 활성화 및 실행

systemctl enable tomcat.service # 부팅 시 자동 실행 systemctl start tomcat # Tomcat 실행
 

원격 접속 방법

Linux 원격 접속 방법은 CLI 및 GUI 방식이 있다.

접속 방식설명
telnet, ssh CLI 기반 원격 접속 (보안상 ssh 권장)
vnc GUI 기반 원격 접속
Putty, SuperPutty, XShell Windows에서 원격 접속용 프로그램

💡 SSH 서버 설치 및 실행 (Rocky Linux)

bash
복사편집
yum -y install openssh-server systemctl enable sshd systemctl start sshd

💡 Windows에서 Putty 사용

  • Windows에서 Putty.exe 실행 후 IP 입력 → SSH 접속.

 

반응형

'Linux' 카테고리의 다른 글

리눅스 과정5일차  (0) 2025.02.26
리눅스 과정 4일차  (0) 2025.02.26
리눅스 과정 2일차  (1) 2025.02.25
리눅스 과정 1일차  (0) 2025.02.25
VMware  (0) 2025.02.18