- VMnet
- 가상화 소프트웨어에서 가상 네트워크를 구성하는 데 사용되는 가상 네트워크 인터페이스
- 가상 머신(VM) 간의 네트워크 통신을 처리
- 가상 머신을 실제 물리적 네트워크에 연결하는 방법을 제공
- VMnet0 (Bridged Network) → 서버역할에 적합
- 가상 머신을 실제 물리적 네트워크와 브리지 연결하는 방식
- 가상 머신은 호스트 시스템과 동일한 네트워크에 연결
- 가상 머신은 호스트의 네트워크 인터페이스를 통해 외부 네트워크와 직접 통신 가능
- 가상 머신은 실제 네트워크에서 고유한 IP 주소를 부여
- 호스트와 외부 네트워크 장치(예: 라우터, 스위치)와 동일한 네트워크에 있는 것처럼 동작
- 물리적 네트워크와 직접 연결되므로 외부에서 가상 머신에 접근 가능
- VMnet1 (Host-Only Network) → 테스트나 개발 목적
- 가상 머신과 호스트 시스템 간의 전용 네트워크
- 외부와의 연결 없이 호스트와 가상 머신만 통신 가능
- 가상 머신은 호스트와만 통신할 수 있고, 외부 네트워크에는 접근할 수 없습니다.
- 물리적 네트워크와는 독립적이며, 보통 개발 또는 테스트 환경에서 사용됩니다.
- 가상 머신은 이 네트워크에서 고유한 IP 주소를 받으며, 호스트와만 통신합니다.
- VMnet2 ~ VMnet7 (Custom Networks)
- 사용자가 지정할 수 있는 가상 네트워크
- 각각 독립된 네트워크를 만들어 여러 개의 가상 머신을 서로 다른 네트워크에 연결할 수 있습니다.
- VMnet8 (NAT Network)
- 가상 머신이 NAT(Network Address Translation)을 통해 외부 네트워크와 연결될 수 있도록 합니다.
- 가상 머신은 물리적 네트워크에 직접 연결되지 않고, 호스트 시스템의 IP를 통해 외부와 통신합니다.
- 가상 머신은 호스트와 동일한 네트워크를 사용하지만, 외부 네트워크와의 연결은 호스트 시스템을 통해 이루어집니다.
- 가상 머신은 외부 네트워크에 접근할 수 있지만, 외부에서 가상 머신으로의 직접적인 접근은 불가능합니다.
- NAT를 사용하면 IP 주소 충돌을 피할 수 있으며, 외부와의 연결에 대해 방화벽이나 포트 포워딩 등의 설정을 쉽게 할 수 있습니다.
- VMnet9 (NAT with DHCP)
- NAT 네트워크에 DHCP 서버 기능이 포함된 네트워크
- 가상 머신이 자동으로 IP 주소를 할당받을 수 있습니다.
- NAT 기능과 DHCP 기능을 결합하여, 가상 머신이 네트워크에 자동으로 연결되고 IP 주소를 자동으로 할당받을 수 있습니다.
- 외부와의 연결을 제공하면서, 각 가상 머신에 고유한 IP 주소를 자동으로 관리할 수 있습니다.
DHCP(Dynamic Host Configuration Protocol)
- 네트워크 장치에 IP 주소 및 기타 네트워크 설정을 자동으로 할당하는 프로토콜
- IP 주소 할당: DHCP 서버는 네트워크에 연결된 장치(예: 컴퓨터, 스마트폰, 가상 머신)에게 고유한 IP 주소를 할당합니다. 이때 IP 주소는 일정 기간 동안만 유효하며, 이를 "임대"라고 부릅니다.
- 서브넷 마스크, 기본 게이트웨이, DNS 서버 제공: DHCP는 단순히 IP 주소만 할당하는 것이 아니라, 해당 네트워크에서 필요한 서브넷 마스크, 기본 게이트웨이, DNS 서버 등의 정보를 자동으로 제공합니다. 이는 네트워크 통신에 필요한 중요한 설정들입니다.
DHCP 작동 방식:
- DHCP Discover: 네트워크에 새로운 장치가 연결되면, 해당 장치는 "DHCP Discover"라는 메시지를 네트워크로 전송합니다. 이 메시지는 IP 주소를 할당받고자 하는 요청입니다.
- DHCP Offer: DHCP 서버는 "DHCP Discover" 메시지를 수신하고, 사용 가능한 IP 주소와 함께 "DHCP Offer" 메시지를 보냅니다. 이 메시지에는 IP 주소뿐만 아니라 서브넷 마스크, 게이트웨이 등의 정보도 포함됩니다.
- DHCP Request: 네트워크 장치는 받은 "DHCP Offer" 중에서 하나를 선택하고, "DHCP Request" 메시지를 보내서 해당 IP 주소를 요청합니다.
- DHCP Acknowledgment: DHCP 서버는 "DHCP Request"를 확인한 후, IP 주소가 할당되었음을 확인하는 "DHCP Acknowledgment" 메시지를 보냅니다. 이때부터 장치는 할당된 IP 주소를 사용하게 됩니다.
터널링 (Tunneling)
- 프로토콜 변환: 한 프로토콜을 다른 프로토콜을 통해 안전하게 전송하는 방법
- IPv4와 IPv6 터널링: IPv4 네트워크에서 IPv6 패킷을 전송하기 위해 6to4 또는 Teredo와 같은 터널링 기술을 사용할 수 있습니다. 이는 IPv4 인프라에서 IPv6 패킷을 캡슐화하여 전송하는 방법입니다.
- 보안 터널링: 터널링은 VPN(Virtual Private Network)에서도 사용됩니다. VPN에서는 공용 인터넷을 통해 암호화된 터널을 만들어 원격 네트워크 간의 안전한 통신을 제공합니다.
주요 터널링 기술:
- 6to4 터널링: IPv6 패킷을 IPv4 네트워크를 통해 전송하는 기술. 이를 통해 IPv6 네트워크가 IPv4 인프라에서 통신할 수 있게 합니다.
- Teredo: NAT(Network Address Translation) 환경에서 IPv6 주소를 할당하고 IPv6 트래픽을 IPv4 네트워크를 통해 전달할 수 있도록 하는 터널링 기술.
- GRE 터널링 (Generic Routing Encapsulation): 여러 프로토콜을 캡슐화하여 하나의 IP 패킷으로 전송할 수 있도록 해주는 터널링 기술.
리눅스 파일 시스템
1. / (루트 디렉토리)
- 의미: 최상위 디렉토리입니다. 모든 파일과 디렉토리는 루트 디렉토리를 기준으로 트리 구조로 연결됩니다.
- 특징: 모든 다른 디렉토리나 파일은 / 디렉토리 아래에 위치하며, 이를 통해 시스템을 구성합니다.
2. /bin
- 의미: binary의 약자로, 시스템 부팅 및 운영에 필요한 기본적인 명령어들이 포함된 디렉토리입니다.
- 예시: ls, cp, mv, cat, pwd 등.
- 특징: 시스템의 기본적인 실행 파일이 이 디렉토리 안에 위치하며, 시스템 부팅 후 사용자나 시스템 관리자가 사용할 수 있는 기본 명령어들이 포함됩니다.
3. /sbin
- 의미: system binary의 약자로, 시스템 관리와 관련된 명령어들이 포함됩니다.
- 예시: shutdown, reboot, ifconfig, mount 등.
- 특징: 일반 사용자보다는 시스템 관리자(root)에게 필요한 명령어가 주로 위치합니다.
4. /etc
- 의미: 시스템의 **설정 파일(서비스를 위한 구성 파일)**이 위치하는 디렉토리
- 예시: passwd, fstab, hostname, sysctl.conf, cat 등.
- 특징: 시스템의 환경설정 파일들이 이곳에 저장되어 있으며, 시스템 동작을 설정하거나 수정하는 데 사용됩니다.
5. /home
- 의미: 사용자 홈 디렉토리가 위치하는 곳으로, 각 사용자별로 개별적인 공간을 제공합니다.
- 예시: /home/user1, /home/user2 등.
- 특징: 각 사용자는 자신만의 디렉토리(/home/username)를 가지고, 개인적인 파일 및 설정을 저장합니다.
6. /root
- 의미: 시스템의 관리자(root) 계정의 홈 디렉토리입니다.
- 예시: /root/ 디렉토리 내에 관리자가 사용하는 파일들이 저장됩니다.
- 특징: root 사용자의 환경 설정과 파일들이 저장되는 곳으로, 일반 사용자는 접근할 수 없습니다.
7. /lib
- 의미: 라이브러리 파일들이 저장되는 디렉토리입니다.
- 예시: libc.so, libpthread.so 등.
- 특징: 시스템과 응용 프로그램들이 실행될 때 필요한 동적 라이브러리 파일들이 포함됩니다.
8. /var
- 의미: **변동성(실시간으로 발생하는 데이터)**이 있는 데이터를 저장하는 디렉토리입니다. 주로 로그 파일, 데이터베이스, 캐시 파일 등이 포함됩니다.
- 예시: /var/log, /var/tmp, /var/spool 등.
- 특징: 시스템이 실행되면서 변할 수 있는 데이터를 저장하며, 주로 로그 파일이나 대기 중인 작업 데이터가 위치합니다.
9. /tmp
- 의미: 임시 파일을 저장하는 디렉토리입니다.
- 예시: 시스템 및 응용 프로그램들이 생성한 임시 파일들이 저장됩니다.
- 특징: 시스템 재부팅 시 파일들이 삭제될 수 있으며, 일반적으로 사용자나 시스템이 잠시 필요한 데이터를 저장하는 용도로 사용됩니다.
10. /usr
- 의미: 사용자 관련 파일들(실행파일)이 위치하는 디렉토리로, 프로그램과 라이브러리 파일들이 포함됩니다.
- 예시: /usr/bin, /usr/lib, /usr/share 등.
- 특징: 운영 체제의 사용자 관련 명령어와 애플리케이션이 위치하며, 시스템의 주요 구성 요소를 제공합니다.
11. /dev
- 의미: 시스템의 디바이스(물리 장치) 파일이 위치하는 디렉토리입니다.
- 예시: /dev/sda, /dev/tty, /dev/null 등.
- 특징: 하드웨어 장치와 관련된 파일들이 포함되며, 리눅스에서는 장치를 파일로 다룹니다. 예를 들어, /dev/sda는 첫 번째 하드 디스크를 나타냅니다. sr0 → ROM(롬)
12. /mnt
- 의미: 시스템에서 임시로 **디스크를 마운트(논리장치와 물리장치를 연결)**할 때 사용하는 디렉토리입니다.
- 예시: /mnt/cdrom, /mnt/usb 등.
- 특징: 외부 장치나 파일 시스템을 일시적으로 마운트할 때 사용되며, 실제로 데이터가 저장되는 곳은 아닙니다.
13. /media
- 의미: 시스템이 자동으로 마운트한 이동식 장치(USB 드라이브, CD-ROM 등)가 위치하는 디렉토리입니다.
- 예시: /media/usb, /media/cdrom 등.
- 특징: 외부 장치를 시스템에 연결했을 때, 이를 자동으로 마운트하는 디렉토리로 사용됩니다.
14. /proc
- 의미: 프로세스와 시스템 정보에 대한 가상 파일 시스템입니다.
- 예시: /proc/cpuinfo, /proc/meminfo, /proc/[PID] 등.
- 특징: 시스템 동작과 관련된 정보를 실시간으로 확인할 수 있는 디렉토리입니다. 예를 들어, /proc/cpuinfo는 CPU 정보를, /proc/meminfo는 메모리 정보를 제공합니다.
15. /sys
- 의미: 시스템의 커널 및 하드웨어 정보를 나타내는 가상 파일 시스템입니다.
- 예시: /sys/class, /sys/block, /sys/devices 등.
- 특징: 커널과 하드웨어 간의 상호작용을 다루며, 디바이스 드라이버 및 하드웨어 정보와 관련된 데이터를 제공합니다.
16. /opt
- 의미: 옵션 소프트웨어가 설치되는 디렉토리입니다.
- 예시: /opt/google, /opt/vmware 등.
- 특징: 특정 애플리케이션이나 서드파티 소프트웨어가 설치되는 디렉토리로, 기본 시스템 소프트웨어와는 별도로 관리됩니다.
17. /boot
- 의미: 시스템 부팅에 필요한 파일들이 저장되는 디렉토리입니다.
- 예시: /boot/grub, /boot/vmlinuz, /boot/initrd.img 등.
- 특징: 부트로더(예: GRUB) 설정 파일, 커널 이미지, 초기 RAM 디스크(initrd) 파일 등이 포함되어 있어, 시스템이 부팅될 때 필요한 중요한 파일들이 저장됩니다. 이 디렉토리는 시스템이 부팅될 때 먼저 접근되어야 하므로, 루트 파일 시스템의 다른 디렉토리와는 별도로 관리됩니다.
1. pwd
- 설명: 현재 작업 중인 디렉터리(폴더)의 경로를 출력하는 명령어입니다.
- 예시 출력: /home/user1 (현재 디렉터리 경로가 출력됩니다)
2. ls /home/user1/
- 설명: /home/user1/ 디렉터리 내의 파일 및 폴더 목록을 나열하는 명령어입니다.
- 예시 출력: file1.txt, file2.txt (디렉터리 내에 있는 파일들을 보여줍니다)
3. gedit a.txt
- 설명: gedit는 GUI 기반의 텍스트 편집기입니다. a.txt 파일을 열어 수정할 수 있습니다.
- 예시: 파일 편집을 위해 열고, 텍스트를 추가하거나 수정할 수 있습니다.
4. cat a.txt
- 설명: cat은 파일 내용을 출력하는 명령어입니다. a.txt 파일의 내용을 화면에 출력합니다.
- 예시: Hello World! (파일에 저장된 텍스트가 화면에 출력됩니다)
5. ls -l runlevel?.target
- 설명: ls -l은 디렉터리 내 파일들의 세부 정보를 리스트로 출력하는 명령어입니다. 여기서 runlevel?.target은 특정 런레벨과 관련된 시스템의 타겟 파일을 나타냅니다. ?는 런레벨 번호(예: 3, 5 등)를 의미합니다.
- 예시: ls -l /etc/systemd/system/runlevel3.target (런레벨 3과 관련된 타겟 파일의 정보 출력)
6. systemctl set-default multi-user.target
- 설명: systemctl은 systemd의 명령어로 시스템의 서비스를 관리합니다. set-default는 기본적으로 부팅할 런레벨(타겟)을 설정하는 명령입니다. 여기서는 multi-user.target을 기본 타겟으로 설정하여, 텍스트 기반 모드로 시스템이 부팅되도록 합니다.
- 예시: multi-user.target을 기본 타겟으로 설정하여, 그래픽 환경이 아닌 텍스트 모드로 부팅합니다.
7. systemctl set-default graphical.target
- 설명: systemctl set-default graphical.target은 시스템의 기본 런레벨을 graphical.target으로 설정하여, 부팅 시 GUI 모드로 시작되게 합니다.
- 예시: 이 명령어를 실행하면, 시스템이 자동으로 그래픽 사용자 인터페이스(GUI) 환경에서 부팅됩니다.
8. init 6
- 설명: init 6은 시스템을 재부팅하는 명령어입니다. init은 시스템의 런레벨을 설정하는 명령어로, 6은 시스템 재시작을 의미합니다.
- 예시: 시스템이 재부팅됩니다.
9. cat /etc/hostname
- 설명: cat은 파일 내용을 출력하는 명령어입니다. /etc/hostname 파일은 시스템의 호스트 이름(컴퓨터 이름)을 저장하는 파일로, 이를 통해 현재 시스템의 이름을 확인할 수 있습니다.
- 예시: rocky1 (시스템의 호스트 이름이 rocky1임)
10. cd /etc/sysconfig/network-scripts/
- 설명: cd는 디렉터리 변경 명령어입니다. /etc/sysconfig/network-scripts/로 이동하여 네트워크 설정 파일을 편집하거나 확인할 수 있습니다.
- 예시: 네트워크 설정 파일이 위치한 디렉터리로 이동합니다.
11. gedit ifcfg-ens160
- 설명: gedit를 사용하여 /etc/sysconfig/network-scripts/ifcfg-ens160 파일을 열고 편집하는 명령어입니다. 이 파일은 네트워크 인터페이스 설정을 포함하고 있습니다.
- 예시: 네트워크 인터페이스 카드(ens160)의 설정을 편집할 수 있습니다.
12. ip addr show
- 설명: ip addr show는 네트워크 인터페이스의 IP 주소와 관련된 정보를 표시하는 명령어입니다.
- 예시: 네트워크 인터페이스에 설정된 IP 주소가 출력됩니다.
13. ifconfig
- 설명: ifconfig는 네트워크 인터페이스의 상태를 표시하거나 설정하는 명령어입니다. ip addr show와 유사한 역할을 합니다.
- 예시: 네트워크 인터페이스 카드의 상태 및 IP 주소가 출력됩니다.
14. ip a
- 설명: ip a는 ip addr show와 동일한 명령어로, 네트워크 인터페이스의 IP 주소를 표시합니다.
- 예시: 네트워크 인터페이스에 설정된 IP 주소가 출력됩니다.
15. hostname -I
- 설명: hostname -I는 시스템에 설정된 IP 주소를 출력하는 명령어입니다.
- 예시: 192.168.1.10 (시스템의 IP 주소가 출력됩니다)
16. systemctl restart NetworkManager
- 설명: systemctl restart NetworkManager는 NetworkManager 서비스를 재시작하여 네트워크 설정을 새로 고칩니다. 네트워크 연결에 문제가 있을 때 사용합니다.
- 예시: 네트워크 설정이 재적용되며, 네트워크 연결이 갱신됩니다.
17. ifconfig ens160 down
- 설명: ifconfig ens160 down은 네트워크 인터페이스 ens160을 비활성화하는 명령어입니다. 즉, 이 인터페이스의 네트워크 연결을 끊습니다.
- 예시: 네트워크 인터페이스 ens160이 비활성화됩니다.
18. ifconfig ens160 up
- 설명: ifconfig ens160 up은 네트워크 인터페이스 ens160을 활성화하는 명령어입니다. 이 명령어는 네트워크 연결을 다시 시작합니다.
- 예시: 네트워크 인터페이스 ens160이 활성화됩니다.
19. ping 211.183.3.12 -c 3
- 설명: ping 명령어는 네트워크 연결을 테스트하는 도구입니다. 211.183.3.12 IP 주소에 3번의 패킷을 보내 연결 상태를 확인합니다.
- 예시: ping을 통해 해당 IP 주소와의 연결을 테스트합니다.
20. gedit /etc/hosts
- 설명: gedit로 /etc/hosts 파일을 열고 편집하는 명령어입니다. 이 파일은 호스트 이름과 IP 주소의 매핑을 정의합니다.
- 예시: 시스템의 호스트 이름과 IP 주소 간의 매핑을 수정할 수 있습니다. 내부용
~/.bashrc 파일의 주요 용도:
- 환경 변수 설정: 예를 들어 export PATH=$PATH:/some/directory와 같은 명령어로 환경 변수 설정.
- 별칭 설정: 예를 들어 alias ll='ls -l'과 같이 자주 사용하는 명령어에 별칭을 설정할 수 있습니다.
- 셸 프롬프트 커스터마이징: 셸 프롬프트를 원하는 형식으로 변경할 수 있습니다.
- 실행 명령 추가: 셸이 시작될 때 자동으로 실행할 명령어를 추가할 수 있습니다.
- gedit ~ → source ~
### 여러줄 입력해서 파일에 저장하는 방법 ###
[root@rocky2 network-scripts]# cat <<EOF > b.txt
> This is a multi-line
> string using EOF.
> EOF
[root@rocky2 network-scripts]# ls
b.txt hello.txt ifcfg-ens160
[root@rocky2 network-scripts]# cat b.txt
This is a multi-line
string using EOF.
touch lab1.sh && chmod 644 lab1.sh → 빈 파일 만들고 권한(rwx→421) 설정
#!/bin/bash
# desc.
echo -n "file name? : "
read fname
echo -n "directory name? : "
read rname
mkdir $rname && touch $rname/$fname
echo "-----------result-------------"
ls $rname
if [ $? -eq 0 ] # 직전 명령어 수행이 잘 이루어졌다면,
then
echo "finished"
else
echo "failed"
fi