Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

네트워크와 프로세스 본문

운영체제/Linux - CentOs

네트워크와 프로세스

세레프 2023. 3. 6. 08:08

네트워크

 서버는 고정 IP를 사용해야 한다. 왜냐하면, 유동 IP를 사용하게 되면, 외부에서의 서버 진입을 할 수 없게 된다. 따라서 서버를 운영하는 운영체제(Linux server, windows server)는 고정 IP를 사용해야 한다. 그렇다면 어떻게 고정 IP를 사용하는 것일까?

 

IP주소의 이해

 IP주소통신을 위해 사용하는 식별번호로, 기기를 식별하기 위해 사용하는 특수한 번호이다. 이 IP주소도 분류가 되는데, IP주소를 부여하는 장소에 따른 분류(공인IP 주소와 사설IP주소), IP주소의 변화 여부에 따른 분류(고정IP주소와 유동IP주소)가 있다.

 

 공인IP주소인터넷 서비스 제공업체에 의해 회사나 개인에게 부여하는 IP주소이며, 사설IP주소AP(Address point, 공유기)에서  NAT기술을 이용하여, 공인 IP주소를 개인 디바이스가 사용할 수 있게 변환하여 부여한 IP주소이다. 

 즉, 인터넷 서비스 제공업체에서 회사나 개인에게 공인 IP주소를 부여하면, 공유기에서 NAT기술을 이용하여 사설IP주소로 변환하여 개인 디바이스에 부여하는 형식으로 사용된다.

 그래서 사설IP주소는 같지만 공인IP주소가 다르게 변환되기에 서로 다른 IP주소가 되며, 사설IP주소를 사용하는 서버 같은 네트워크의 사설 IP주소를 부여받은 운영체제가 아니면 접근이 불가능하다.

 

 고정IP주소 IP주소가 변하지 않고 영구적으로 기기에 부여 받는다. 이러한 IP주소는 서버운영할 때 필요하다. 만약 서버의 IP주소가 변동이 되면, 서버에 접속할 때마다 매번 IP주소를 변경하여 접속해야 한다. 반대로 IP주소를 할당 받는 경우가 있는데, 이것을 유동IP주소라 한다. 이런 유동IP주소는 클라이언트가 주로 사용하는데, 클라이언트는 운영체제의 접속을 목적으로 하고 있기때문에, IP주소가 변동되어도 상관이 없는 것이다.

 

즉, 서버 공인IP주소를 부여받은 뒤, 고정IP주소로 지정해야하며, 일반회사나 주택은 공인 IP주소를 NAT기술을 이용하여 사설IP주소로 변환한 뒤, 운영체제에서 고정IP주소를 사용할 지, 유동IP주소를 사용할 지 결정한다. 만약 고정IP주소를 사용하도록 설정이 되어 있으면, 해당 IP주소를 영구적으로 사용하지만, 유동IP주소를 사용하도록 설정이 되어 있으면, AP에 있는 DHCP서버에 요청해서 IP주소를 받아오는 형식으로 운영체제에 부여된다. 

 

 그렇다면, HostOS에 설치되어 있는 가상머신의 경우, 그 안에 설치되어 있는 GuestOS는 IP주소를 어떻게 부여받을까? 가상머신안에 NAT기술과 DHCP 서버가 자체적으로 있다. 그래서 공유기를 사용하지 않고 자체적으로 IP주소를 부여하는 것이다.

 

 네트워크 관리 명령어

  • ifconfig : ip를 확인하고 변경, 기능정지할 때 사용하는 명령어

 ens33은 네트워크 장치명이며, IP주소는 "192.168.158.128", Netmask는 "255.255.255.0" 인 것을 확인 할 수 있다. 만약 ens33의 IP주소를 수동적으로 변경하거나 네트워크 비활성화,활성화 하는 경우에는 다음과 같은 구조로 명령어를 작성하면 된다.

  • ifconfig ens33 [변경할 IP주소] : ens33의 IP주소를 변경하는 명령어 구조

ifconfig  ens33 192.168.10.100 입력

  • ifconfig ens33 down : ens33을 비활성화 명령구조

  • ifconfig ens33 up : ens33을 활성화 명령구조

 

고정IP주소 변경

 유동IP주소를 고정IP주소로 변경하기 위해서는 "/etc/sysconfig/network-scripts"에 있는 "ifcfg-ens33"파일을 수정해야 한다. 이때 "ifcfg-ens33"파일은 OS의 ens33(네트워크 장치) 환경설정 파일로, 네트워크에 대한 설정이 모여있는 파일이다.

 위의 그림은 ens33 환경설정 파일에 들어온 사진으로, 우리는 4번째 줄을 유심히 봐야 한다. 4번째 줄은 부팅 시, IP주소를 고정IP주소로 사용할 것인지, DHCP서버에서 IP주소를 부여 받을 것인지 결정하는 줄이다.

 "dhcp"는 부팅할때마다 dhcp에게 IP주소를 부여받는 동적 IP주소를 사용하겠다는 것이라면 "static"은 IP주소를 고정해서 사용하겠다는 고정IP주소의 사용을 말한다. 따라서 "dhcp"대신 "static"을 작성하고 고정할 IP주소, NETMASK, GATEWAY, DNS를 추가하면 된다. 이때, IP주소를 정할 때, 네트워크 주소(앞의 3개)은 "subnet ip"와 다르면 안된다

이때, 파일에 큰따옴표가 있는 경우가 있는데, 그럴경우에는 큰따옴표를 적어야 한다. 작성이 끝나면 제대로 적용이 됐는지 확인하야 하는데, 네트워크 활성화를 통해 확인 할 수 있다.

  • systemctl start network : 네트워크를 시작하는 명령어
  • systemctl restart network : 네트워크를 재시작하는 명령어
  • systemctl stop network :네트워크를 멈추는 명령어

 이처럼 고정IP주소가 설정 되었으면, 이제 네트워크 연결상태를 확인해 봐야 한다. 확인하는 방법은 다른 IP주소에게 신호를 보내고 신호를 받는 과정으로 확인하면 된다.

  • ping [옵션] [IP 주소] : 다른 IP주소와 신호를 주고 받게 하는 명령어
옵션
-c [숫자] : 횟수설정, 설정 안하면 무한정으로 출력, 무한정으로 출력시 "Ctrl + C"로 탈출가능

 

네트워크 통계 확인

  • netstat [옵션] : 네트워크 접속 정보, 네트워크 인터페이스의 통계 정보 등, 네트워크 관련 통계를 출력하는 명령어로, 서버에 접속한 접속자의 접속상태와 접속자 IP주소를 확인 할 수 있다.
옵션
-n (number port) : IP주소
-t (tcp) : 프로토콜이 tcp인 접속자
-u (udp) : 프로토콜이 udp인 접속자
-a : 모두 출력

 만약 해당 IP주소에 접속자가 생긴다면, 네트워크 접속 통계는 어떻게 변화하는 것일까?

  • ssh -l [사용자명] [IP주소] : IP주소에 있는 서버로 사용자가 접속하는 명령어 

  다른 컴퓨터에서 root 계정으로 "192.168.158.200"에 접속하였으며, "192.168.158.200"을 가진 서버에서의 네트워크 접속통계는 변화는 다음과 같다.

 위의 터미널을 보면, IP주소가 "192.168.158.129"인 사용자가 접속한 것을 확인 할 수 있다. 이때, 상태를 보면 "Established"인 것을 확인 할 수 있다.

 즉, 접속당하는 서버에서 "netstat"를 통해 사용자의 접속를 지속적으로 모니터링 할 수 있으며, 접속하지 않은 상태인 "Listen", 접속되어 있는 상태인 "Established" 을 통해 확인 할 수 있다.

 

 


프로세스

 프로세스실행중인 파일을 말하며, 중앙처리장치(CPU)가 보조기억장치(HDD/SSD)에서 프로그램 파일을 꺼내어 주기억장치(메모리 카드)에 올려놓고 해석한다. 프로세스에는 화면에 출력하면서 실행하는 ForeGround 프로세스가 있고, 화면에 출력되지 않은 상태에서 실행하는 BackGround 프로세스가 있다.

 

프로세스 상태 확인 명령어

  • ps [옵션]  : 프로세스의 상태를 보여주는 명령어로, 포그라운드 프로세스를 출력한다.
옵션 예시
-a :  사용자가 실행한 명령어 프로세스 출력 

-u : 자세한 내용 출력

-x : 백그라운드 프로세스까지 출력
ps -aux : 모든 프로세스 출력

 "ps -aux"를 명령하면 모든 프로세스가 출력되는데, 가장 맨 첫줄이 PID가 1인 "systemd"이다. systemd는 모든 프로세스를 관리하는 프로세스로, 최고의 우선 순위를 가진다.

속성
USER PID %CPU %MEM VSZ RSS STAT START TIME COMMAND
 출력한 사용자 명 파일 번호 cpu점유율 메모리점유율 가상메모리 실질 메모리 운영상태 실행 시작 시간 사용시간 명령어   or 파일 위치 디렉토리

위의 표는 "ps -aux"를 명령 했을때 나오는 속성이다. 이때 운영상태는 프로세스의 여러상태를 표현하는데, "-R"은 실행중, "-S"은 수면상태 ," -T"는 정지상태, "-Z"는 좀비 프로세스(종료되어 있었는데 남아있는 프로세스) 를 뜻한다.

 

  • pstree : 모든 프로세스의 상태를 트리형식으로 보여주는 명령어
[root@client ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─VGAuthService
        ├─abrt-dbus───3*[{abrt-dbus}]
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─4*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─boltd───2*[{boltd}]
        ├─chronyd
        ├─colord───3*[{colord}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon───{dbus-daemon}]
        ├─dbus-launch
        ├─dconf-service───2*[{dconf-service}]
        ├─dnsmasq───dnsmasq
        ├─escd───{escd}
        ├─evolution-addre─┬─evolution-addre───6*[{evolution-addre}]
        │                 └─5*[{evolution-addre}]
        ├─evolution-calen─┬─evolution-calen───10*[{evolution-calen}]
        │                 └─5*[{evolution-calen}]
        ├─evolution-sourc───4*[{evolution-sourc}]
        ├─firewalld───{firewalld}
        ├─fprintd───{fprintd}
        ├─fwupd───5*[{fwupd}]
        ├─gdm─┬─X───3*[{X}]
        │     ├─gdm-session-wor─┬─gnome-session-b─┬─abrt-applet───2*[{abrt-appl+
        │     │                 │                 ├─evolution-alarm───6*[{evolu+
        │     │                 │                 ├─gnome-shell─┬─ibus-daemon─┬+++
        │     │                 │                 │             │             ├+++
        │     │                 │                 │             │             └+++
        │     │                 │                 │             └─14*[{gnome-sh+
        │     │                 │                 ├─gnome-software───7*[{gnome-+
        │     │                 │                 ├─gsd-a11y-settin───3*[{gsd-a+
        │     │                 │                 ├─gsd-account───4*[{gsd-accou+
        │     │                 │                 ├─gsd-clipboard───2*[{gsd-cli+
        │     │                 │                 ├─gsd-color───4*[{gsd-color}]
        │     │                 │                 ├─gsd-datetime───3*[{gsd-date+
        │     │                 │                 ├─gsd-disk-utilit───3*[{gsd-d+
        │     │                 │                 ├─gsd-housekeepin───4*[{gsd-h+
        │     │                 │                 ├─gsd-keyboard───4*[{gsd-keyb+
        │     │                 │                 ├─gsd-media-keys───4*[{gsd-me+
        │     │                 │                 ├─gsd-mouse───3*[{gsd-mouse}]
        │     │                 │                 ├─gsd-power───4*[{gsd-power}]
        │     │                 │                 ├─gsd-print-notif───3*[{gsd-p+
        │     │                 │                 ├─gsd-rfkill───3*[{gsd-rfkill+
        │     │                 │                 ├─gsd-screensaver───3*[{gsd-s+
        │     │                 │                 ├─gsd-sharing───4*[{gsd-shari+
        │     │                 │                 ├─gsd-smartcard───5*[{gsd-sma+
        │     │                 │                 ├─gsd-sound───3*[{gsd-sound}]
        │     │                 │                 ├─gsd-wacom───3*[{gsd-wacom}]
        │     │                 │                 ├─gsd-xsettings───4*[{gsd-xse+
        │     │                 │                 ├─nautilus-deskto───4*[{nauti+
        │     │                 │                 ├─seapplet
        │     │                 │                 ├─ssh-agent
        │     │                 │                 ├─tracker-extract───14*[{trac+
        │     │                 │                 ├─tracker-miner-a───4*[{track+
        │     │                 │                 ├─tracker-miner-f───4*[{track+
        │     │                 │                 ├─tracker-miner-u───4*[{track+
        │     │                 │                 └─4*[{gnome-session-b}]
        │     │                 └─2*[{gdm-session-wor}]
        │     └─3*[{gdm}]
        ├─gnome-keyring-d───3*[{gnome-keyring-d}]
        ├─gnome-shell-cal───6*[{gnome-shell-cal}]
        ├─gnome-terminal-─┬─bash───pstree
        │                 ├─gnome-pty-helpe
        │                 └─4*[{gnome-terminal-}]
        ├─goa-daemon───4*[{goa-daemon}]
        ├─goa-identity-se───3*[{goa-identity-se}]
        ├─gsd-printer───3*[{gsd-printer}]
        ├─gssproxy───5*[{gssproxy}]
        ├─gvfs-afc-volume───4*[{gvfs-afc-volume}]
        ├─gvfs-goa-volume───3*[{gvfs-goa-volume}]
        ├─gvfs-gphoto2-vo───3*[{gvfs-gphoto2-vo}]
        ├─gvfs-mtp-volume───3*[{gvfs-mtp-volume}]
        ├─gvfs-udisks2-vo───3*[{gvfs-udisks2-vo}]
        ├─gvfsd─┬─gvfsd-burn───3*[{gvfsd-burn}]
        │       ├─gvfsd-trash───3*[{gvfsd-trash}]
        │       └─3*[{gvfsd}]
        ├─gvfsd-fuse───5*[{gvfsd-fuse}]
        ├─ibus-portal───3*[{ibus-portal}]
        ├─ibus-x11───2*[{ibus-x11}]
        ├─imsettings-daem───3*[{imsettings-daem}]
        ├─irqbalance
        ├─ksmtuned───sleep
        ├─libvirtd───16*[{libvirtd}]
        ├─lsmd
        ├─lvmetad
        ├─mission-control───4*[{mission-control}]
        ├─nautilus───4*[{nautilus}]
        ├─packagekitd─┬─yumBackend.py
        │             └─3*[{packagekitd}]
        ├─pcscd───3*[{pcscd}]
        ├─polkitd───6*[{polkitd}]
        ├─2*[pulseaudio───2*[{pulseaudio}]]
        ├─rngd
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─2*[sendmail]
        ├─smartd
        ├─sshd
        ├─systemd-hostnam
        ├─systemd-journal
        ├─systemd-localed
        ├─systemd-logind
        ├─systemd-udevd
        ├─tracker-store───7*[{tracker-store}]
        ├─tuned───4*[{tuned}]
        ├─udisksd───5*[{udisksd}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd───2*[{vmtoolsd}]
        ├─vmtoolsd───3*[{vmtoolsd}]
        ├─wpa_supplicant
        └─xdg-permission-───3*[{xdg-permission-}]

 

프로세스 상태 실시간 출력 명령어

  • top [옵션] : 프로세스의 상태를 2초마다 실시간으로 출력하는 명령어로, 탈출할 땐 단축키 q로 탈출할 수 있다.

 이때 속성을 보면 "PR"과 "NI"가 있는데, "PR"은 우선순위로, 수치가 낮을 수록 우선순위가 높으며, 실행 우선순위를 결정한다. "NI"은 나이스값으로 사용자가 우선순위를 조정할 때 사용하며, 우선순위를 높히고 싶을 때에는 nice값 줄이면 된다.

  •  nice -[값] [파일,명령어] : 파일또는 명령의 나이스값 조정한 후에 파일 실행하는 명령어로 ,실행 시 우선순위 결정함
예시
nice --10 vi : 나이스 값을 -10으로 변경한 후, vi파일 실행
  •  renice [값] [PID] : PID 가진 프로세스의 나이스값 변경하는 명령어로, 실행중에 우선순위 변경할 수 있음

 

프로세스 종료

  • kill [옵션] [PID] : PID를 가진 프로세스의 상태를 조정하는 명령어
  • killall [옵션] [프로세스 이름] : 프로세스 이름을 가진 프로세스의 상태 조정하는 명령어
자주 사용하는 옵션 예시
-1: 재시작

-9: 강제종료

-15 : 정상종료
kill -1 7893 : PID가 7893인 프로세서를 재시작

killall -9 bash : bash(터미널)을 강제종료

 

프로세스 스케줄링

  • crontab [옵션] : 시간을 설정하여 해당 시간에 파일("chmod 777 [파일]"로 접근권한이 변경된 파일) 내에 있는 명령을 실행하는 명령어
옵션 시간 설정 구조 시간 설정 주의사항
-l : 스케줄 목록 출력

-e : 편집

-r : 스케줄 삭제
[분] [시] [일] [월] [요일] [실행 파일] 분 범위 : 0~59 , 시 범위 : 0~23 , 일 범위 : 1~31,
월 범위 : 1~12 , 요일 범위 : 0~6 or 1~7

이때, 일요일을 표현할 때에는 0or7로 표현

 

사용 예시
crontab -e: 시간을 설정하기 위한 vi 편집기를 출력    =>  20 18 * * * /home/test.sh : 매일 18시 20분에 test.sh파일의 내용 실행

 

'운영체제 > Linux - CentOs' 카테고리의 다른 글

소유권과 허가권  (0) 2023.03.13
사용자 계정 관리  (1) 2023.03.12
디스크, 파티션 관리  (1) 2023.03.05
데이터 관리 기본 명령어  (1) 2023.02.27
디렉토리, 파일 기본 명령어  (0) 2023.02.26
Comments