티스토리 뷰

1강 : Package manager

패키지란? 시스템을 구성하는 파일의 묶음. 미리 컴파일이 끝난 것. pre-built파일들.

strace_4.5.20_2.3_amd64.deb

strace : package이름

4.5.20_2.3 : version & release

amd64 : arch.

redhat계열 : yum

deb : Debian계열 : apt 

 

dpkg -l strace : strace 패키지 리스트 확인

dpkg -s <package> : 패키지 상태 확인.

Status가 install ok installed이면 완전히 설치된 것. install ok unpacked이면 완전히 설치된 것이 아니다. 설치과정에서 실패한 경우.

어떤 파일이 어느 패키지에 속해있는지 반대로 검색할 때 대문자 S.

dpkg -S <pattern> : 굉장히 많이 쓰는 명령임.

한 화면이 끝이 아니고 아래에도 더 나옴.


2강 : APT

debian의 dpkg를 랩핑한 front-end tool

dependency 탐색 및 설치 가능. dependency란 예를 들어 a라는 프로그램을 설치하려고 할 때, a라는 프로그램이 b, c, d의 기능을 갖다 쓰는 프로그램이라고 하면, a만 설치하면 안된다.

요즘에는 apt로 다 한다.

 

source list

apt가 package를 가져오는 곳.

/etc/apt/sources.list 파일을 열면 아래와 같다.

deb [ option1=value1 option2=value2] uri suite [component1] [component2] [···]

deb-src [ option1=value1 option2=value2] uri suite [component1] [component2] [···]

deb : 패키지를 받아오는 것.

deb-src : 소스코드를 받아오는 것.

[ ]안은 옵션이므로 보통 안 쓴다.

uri : uniform resource identifier의 약자. DEB 패키지를 제공하는 정확한 주소.

suite : 우분투 또는 데비안의 distribution codename. 16.04=xenial, 18.04=bionic, ···

component : suite의 구성 요소 및 라이선스 종류별 분류.

더보기

component

main : 공식 제공. free 라이센스

restricted : 공식 제공. 특정한 조건에서만 free 라이센스.

universe : 독립된 하나의 커뮤니티가 직접 maintain을 담당. 독립적인 회사 또는 단체가 담당.

security : 보안 패치. 보안에 관한 업데이트.

updates : 기능 향상에 관한 업데이트.

 

※ kakao.list

/etc/apt/sources.list 를 전부 주석화하고 kakao mirror를 넣어준다. 루트계정으로 들어가야 해당 파일을 수정할 수 있다.

전부 주석하는 명령어

gg^<CTRL-V>GI#<esc><esc>

#kakao.list
deb http://mirror.kakao.com/ubuntu/ xenial main restricted universe
deb http://mirror.kakao.com/ubuntu/ xenial-updates main restricted universe
deb http://mirror.kakao.com/ubuntu/ xenial-security main restricted universe

이렇게 실행.

그 후 apt update를 실행하면 아래와 같이 위에서 설정한 uri로부터 업데이트를 가져온다.

자이카 실습시에는 이 부분을 변경하면 안된다.

 

apt list [options] [package pattern]

패키지 목록 출력

더보기

options

--installed : 설치된 패키지 리스트

--upgradable : 업그레이드가 가능한 패키지 리스트

bash* : bash*이 들어간 모든 패키지 리스트

apt search [-n] <regex>

패키지를 키워드로 검색, 키워드는 REGEX로 입력한다. REGEX는 정규표현식.

-n 은 옵션으로, 검색 대상을 name필드로 한정한다.

apt search bash : name이 아닌 description에 bash가 들어간 경우까지 검색.

apt search -n bash : name에 bash가 있으면 검색.

apt search -n '^bash' : name이 bash로 시작하는 경우만 검색.

 

apt show <package name>[=version]

패키지 정보 출력

apt show bash : bash 패키지 정보가 출력된다. 이때, 한글로 정보가 나와서 LANG환경변수를 영어로 변경하여 영문으로 출력한 결과는 아래와 같다.

apt list --all-versions bash : bash의 모든 버전을 보여준다.

apt show bash=4.3-14ubuntu1 : 특정 버전의 정보를 볼 수 있다.

 

apt <remove|purge|autoremove> <package>[=version]

remove : 패키지만 삭제. config파일은 남겨둔다.

purge : 패키지 삭제. config도 삭제. 모조리 삭제.

autoremove : 의존성이 깨지거나 버전 관리로 인해 쓰이지 않는 패키지를 자동 제거.

우선, htop 패키지를 설치한다.

htop 패키지 정보 확인.

htop 패키지 삭제. config도 함께 삭제.

apt-cache pkgnames <package_name> : package_name으로 시작되는 패키지명만 출력한다.

 

aptitude

TUI방식의 apt


3강 : Linux network system

hostname

FQDN : Fully Qualified Domain Name. 전체 도메인 네임.

TCP / IP

NIC : Network Interface Card == 랜카드

Wired Network (Wired connection) : 유선 네트워크

Wireless Network (Wireless connection) : 무선 네트워크

LAN : Local Area Network

WAN : Wide Area Network

 

localhost : 항상 자기 자신을 의미하는 주소.

IPv4 = 127.0.0.1

IPv6 = ::1

 

IPv4-mapped IPv6

::ffff:IPv4_addr

 

dual stack

대부분의 Modern OS는 dual stack을 지원한다. Windows XP는 제외.

과도기에 겪는 문제.

- IPv4전용으로 짜여진 프로그램

- 방화벽 문제

 

CIDR (Classless Inter-Domain Routing)

서브넷을 지정하여 자르는 것.

xxx.ooo.xxx.ooo/##

##에는 서브넷 마스크의 on비트의 개수 표기.

ex. 192.168.100.0/24 이면 192.168.100.0/255.255.255.0

255는 11111111(2)이므로 1이 8개이다. 위 주소는 255가 3개있으므로 8*3=24개의 서브넷 마스크

 

public IP : 공인 주소. 인터넷에서 유일한 주소.

private IP : 사설 주소. 인터넷에 직접 연결되지 않는 유일하지 않은 주소.

 

SELinux : Security Enhanced Linux

커널 레벨에서의 중앙 집중식 보안 기능.

대부분의 리눅스는 default 설치. 우분투는 설치X. 그래서 해킹을 많이 당하는 편.


4강 : Network configuration

Debian계열.

Network설정은 Legacy방식과 NetworkManager방식(최신)이 있다.

eth0 가 나왔다 => 옛날 버전. Legacy방식임.

ifconfig 도 구식명령임. 지금도 설정을 확인하는 용도로는 사용하긴 함.


5강 : NetworkManager

NetworkManager구조

daemon으로 작동하면서 네트워크 configuration을 수행, 자동으로 network connection을 관리(연결 감지, 해제, 재시도)를 수행한다.

nmcli : 네트워크 매니저 cli tool

root 유저로 실행.

nmcli g

nmcli n : 네트워크 상태 조회

nmcli d : 네트워크 디바이스 확인

eth#[:n]

enp5s0 : en: 이더넷, p : pci, 5 : 5번째 버스 s0 : slot 0번째를 의미.

이렇게 디바이스 네이밍만 봐도 어떤 건지 알 수 있다.

 

nmcli 명령어

nmcli <g|n|r|c|d>

general, networking, radia, connection, device

통신을 하기 위한 논리적인 연결

UUID : 하나뿐인 id.

nmcli c[onnection] s[how] : connection을 더 자세히 보기 위한 명령어.

nmcli c[onnection] s[how] <device name> : 디바이스의 자세한 정보를 보고싶을 때

디바이스 이름에 공백이 있으면 "" 쌍따옴표 또는 따옴표로 묶는다.

IP[46].* : 주소는 할당된 값. online일 때만 보인다.

ipv[46].* : 설정된 값. offline일 때도 보인다.

alias 설정.

~/.bash_aliases 파일에서 아래와 같이 입력하여 alias 설정할 수 있다.

source ~/.bash_aliases 를 실행하여 컴파일?시킨다.

 

※ IP주소, gateway, DNS 바꾸기 실습 ※

1) 변경 전 connection 정보 확인

IP주소, gateway, DNS 바꾸기 이전 정보

IP4.ADDRESS[1]:                         192.168.199.129/24
IP4.GATEWAY:                            192.168.199.2
IP4.ROUTE[1]:                           dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]:                             192.168.199.2
IP4.DOMAIN[1]:                          localdomain
IP4.WINS[1]:                            192.168.199.2
IP6.ADDRESS[1]:                         fe80::cc98:395:db33:6ca8/64
IP6.GATEWAY:

2) 변경

IP => 192.168.52.110/24

GW => 192.168.52.2

DNS => 8.8.8.8

이때, 나는 위와 같이 변경하였을 때, 네트워크에 연결되지 않는 오류가 생겼다.

컴퓨터 설정때문에 그렇다고 하셨다. 다른 분들은 ip주소나 게이트웨이를 192.168.52.xxx 와 같이 설정하면 되는데, 내 컴퓨터의 경우에는 192.168.199.xxx로 설정하면 된다고 해결해주심.

☞ 이부분은 처음 192.168.52.xxx로 바꿨던 부분. (다른 사람들은 잘 됐는데, 나는 오류 발생.)

명령어 && 명령어 : 앞의 명령이 성공했을 때만 뒤의 명령이 실행된다.

앞에서 인터넷 연결을 끊고 바로 다시 연결을 시도한다.

아래와 같이 dns, ip주소, gateway가 바뀐 것을 확인할 수 있다.

3) 오류 발생.

자세한 과정은 따로 글을 작성하였다.

2020/12/11 - [OS/리눅스] - 우분투 IP주소, gateway, DNS 변경 후 네트워크 연결 안되는 문제 해결


6강 : Network tools

ss : socket status

netstat : 옛날 프로그래밍. 지금은 쓰면 안됨.

 

TCP 패킷 규칙

1. 모든 패킷은 받은 패킷을 잘 받았다는 확인 (ACK)

2. 제어 패킷(연결, 해제)은 echo 해줘야 함.

3. 3-way handshaking : OS가 해준다.

 

먼저 연결을 끊는 쪽을 active close라고 한다. 연결을 끊김 당하는 쪽은 passive close라고 한다.

client측에서 close()함수를 실행하면 FIN_WAIT1상태. OS가 ACK를 바로 날려주면 FIN_WAIT2상태. 그러면 서버측에서 close()함수를 실행. client로 FIN날아감. 그러면 TIME_WAIT상태가 된다. (동일한 패킷 받은 걸 청소해주는 역할.)

 

ss -ntm : 메모리 얼마나 사용하고 있었는지.

 

ss state <tcp state> : 이 기능 때문에 ss를 쓰는 것.

서버가 close-wait상태이면 클라이언트는 fin-wait2상태이다.

내가 fin-wait2가 나왔으면 상대편이 잘못한 것.

내가 close-wait이 발생했다는 것은 내 쪽에서 문제가 발생했다는 것이기 때문에 굉장히 위험하다. 

 

watch -d -n 1 ss -nt state close-wait state fin-wait-2 명령어

watch -d : 계속 확인.

-n 1: 1초마다 실행. default=2이다.

 

ss -ntl

n: numeric만 보여달라

t: tcp만 보여달라

l : listen만 보여달라

 

ss -ntlp

p: 프로세스

일반유저로 실행하면 확인 못하는 정보가 있음.

루트유저로 실행하면 더 자세히 볼 수 있다.

 

loaf, fuser : 열린 파일을 검색하거나 액션을 행할 수 있는 기능.


7강 : 

ping : 상대 호스트의 응답 확인.

traceroute : 패킷의 도달 경로 확인.

ARP테이블 : IP와 MAC주소의 매칭 테이블. Address Resolution Protocol

 

nslookup 은 옛날 명령어. 이제는 dig를 쓰자.

dig [@server] <target>

 

ethtool


8강 : ssh

ssh : secure shell

예전에는 telnet서비스 사용. 암호화되지 않은 통신을 사용하던 문제점.

서버는 sshd, 클라이언트는 ssh

d로 끝나는 것은 대부분 daemon 서비스이다.

윈도우에서는 putty같은 툴을 사용한다. 무료이기 때문.

putty , mobaXterm 툴 써보기 추천.

sshd 서버 준비 작업

ssh port가 방화벽에 허용되어 있는지 확인해야.

 

apt list openssh명령어로 openssh가 설치되어 있는지 확인한다.

apt -y install openssh-server openssh-sftp-server 명령어를 실행하여 ssh 서버 설치.

systemctl status sshd 명령어로 sshd서비스가 실행중인지 확인할 수 있다.

ss -nltp 명령어를 실행하면 process까지 확인이 가능하다.

ss 명령어 ( -a : 모든 포트 확인. -t : TCP포트 확인. -u : UDP 포트 확인. -l : LISTEN 상태 포트 확인. -p : 프로세스명 표시. -n : 호스트/포트/사용자이름을 숫자로 표시 )

2개의 22번 포트가 보이는데 위는 IPv4, 아래는 IPv6주소이다.

둘 다 프로세스는 같다. 둘 다 pid=7059이다. 여기서 위에는 fd=3, 아래는 fd=4인데, fd의 0, 1, 2값이 빠진 이유는 stdin, stdout, stderr가 점유하고 있기 때문이다.

 

systemctl enable sshd : 부팅할 때 sshd서비스가 실행되도록 하고 싶을 때 명령어

우분투는 사용의 편리함을 위해서 보안은 포기함.

 

ssh : client

ssh [-p port] [username@]<host address>

주소는 ip주소를 써도 되고 등록된 서버라면 FQDN을 써도 된다.

ex. ssh 192.168.52.110

ex. ssh linuxer@ 192.168.52.110

ex. ssh -p 20022 192.168.52.110

※ ssh localhost 실습 ※

2020/12/11 - [OS/리눅스] - 우분투 ssh localhost실행시 Permission denied (publickey,password) 문제 해결

 

ssh-keygen : key 기반 통신

ssh-keygen -N "" : 암호 생성. 개인용에서는 password를 쓰지 않지만, 기업에서는 꼭 ""대신 패스워드 사용.

리눅스를 공부할 때 메세지 나오는 것을 한번씩 읽어보기.

빨간색 체크표시에서 입력을 기다렸는데, 뭘 입력해야할지 몰라 그냥 엔터를 쳤다.

ssh-copy-id 는 remote의 ~/.ssh/authorized_keys에 복사하는 과정이라고 한다.

미리 키를 등록해놓고 프리패스하는 것.

이 부분이 이해가 잘 가지 않는데, 아주 중요한 과정이라고 한다. 일단 실습은 아래와 같이 진행했다.

#1에서는 비밀번호를 입력하지 않는 것이라 생각해서 엔터를 쳤는데, 안된다고 해서

#2에서는 루트계정의 비밀번호를 입력하였다.

 

curl : URL을 기반으로 통신하는 기능 제공.

curl [options] <URL>

 

elinks, lynx : 콘솔에서 할 수 있는 웹 브라우저


9강 : Wireless Network

NetworkManager : WiFi

wlp2s0 : wl : wireless, p2 : pci 버스2번, s0 : 슬롯 0번에 꽂혀져 있다.

 

AP (hotspot) 모드

와이파이는 station가 클라이언트, AP가 서버.

공유기는 AP, 모바일장치(ex. 스마트폰)은 station

AP를 다른 말로 hotspot이라고도 부른다.

 

hostapd : NetworkManager보다 더 많은 기능을 제공하는 AP를 사용하고 싶을 때 사용.

5GHz AP구동시 regulatory domain rule이 있다.

'프로그래머스 자율주행스쿨' 카테고리의 다른 글

리눅스 Midterm  (0) 2020.12.13
TIL 20.12.11 - File System,  (0) 2020.12.11
TIL 20.12.09 - vim editor  (1) 2020.12.10
TIL 20.12.08 - UNIX 명령어  (0) 2020.12.08
TIL 20.12.07 - 리눅스 역사, 설치, 실습  (0) 2020.12.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함