티스토리 뷰
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
- 윈도우 복구
- HC-SR04
- 초음파센서
- filesystem
- 프로그래머스
- subscriber
- 백준알고리즘
- python3
- Ubuntu20.04
- 포트인식문제
- ROS
- VMware
- Ubuntu16.04
- 8자주행
- Python
- set backspace
- 우분투
- umount
- Publisher
- 리눅스
- Mount
- roslaunch
- sensehat
- VirtualBox
- vue/cli
- 윈도우
- 아두이노 IDE
- 코드리뷰
- C++
- 원격 통신
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |