[Linux, Network] TCP, UDP, ARP | IP Address Configuration | DNS Server Configuration | Gateway Configuration | Network State | SCP

pos++·2023년 11월 21일
0

Linux

목록 보기
9/16
post-thumbnail

2023.11.9 TIL

TCP, UDP, ARP 분석

TCP

  • Data를 보내기 전에 연결부터 한다
  • 끝나면 연결을 끊는다
  • 3 Way Handshaking(ACK)
    • 하나의 Port에는 하나의 Connection만 가능
    • 다른 request를 받을 수 없다
    • Port 456에서 Port 789로 fork, Port 456 available

UDP

  • 상대방이 data를 받았는지 신경쓰지 않는다
  • Data loss 있을 수 있음
  • 동영상 streaming 등 Real-time Transfer Protocol - UDP 위에서 동작

TCPUDP
연결 방식Connection OrientedConnectionless
패킷 교환 방식가상 회선 방식데이터그램 방식
전송 순서전송 순서 보장전송 순서가 바뀔 수 있음
수신 여부 확인수신 여부를 확인함수신 여부를 확인하지 않음
통신 방식1:1 통신1:1 or 1:N or N:N 통신
신뢰성높다낮다
속도느리다빠르다

ARP

IP 주소로 MAC 주소 알아내기
arp [IP address]

DARPA

ping → Application인데 TCP/UDP 안거지고 바로 ICMP를 사용

ARP를 사용하기 위한 조건
C class(192대), ✅ 같은 network 대역에서만 동작한다.

→ B는 A가 보낸 메세지에서 MAC, IP, Port # 를 받았고, 따라서 A에게만 전송할 수 있음

우리는 naver.com의 MAC을 모르는데 어떻게 접속 가능한가?
우리와 다른 network의 IP주소일 것이다.
그 IP를 실어서 자기 network에 뿌리면 어느 누구도 자신의 network가 이나므로 응답을 못할것임
ARP 메세지를 보낸후 일정시간 응답이 없을 경우, gateway가 자신의 MAC 주소를 실어서 응답을 해준다!
그 상위 network의 gateway가 응답하고 이걸 naver gateway까지 반복.

Host 이름 변경

hostname → 현재 hostname 출력
sudo hostnamectl set-hostname [new hostname]

근데 이렇게 바꿔도 Prompt에 그대로 뜬다 → 로그인 당시의 hostname을 띄우는 것 → Reboot!
WSL에서 안될수도 있으니까 가급적이면 VM에서 하자.

IP 주소 설정

IP 주소 확인

ip [option] OBJECT {command | help}
l → link, Network interface(L2) 표시
a → address, IP 주소(L3) 표시
r → route, Routing Table(L3) 표시. 근데 보통 걍 route -n 이걸 씀.
n → neigh, ARP Table(L3) 표시

ifconfig → interface config

명령어 기반 IP 주소 설정

→ 영구적이지 않다.

sudo ip a add [new ip address] dev enp0s3 → ip 변경, interface는 enp0s3로(sw적 ip를 추가)
sudo ifconfig [interface name] [new ip address] netmask [netmask] up

설정파일 기반 IP 주소 설정

→ 영구적이다.

주의사항

  1. Gateway(공유기) IP 주소 확인
  2. 비어있는(할당 가능한) IP 주소 확인
  3. DNS 서버 IP 주소 확인(구글의 public DNS server 8.8.8.8 과 8.8.4.4)
    nslookup www.xslab.co.kr → 이 domain에 해당하는 ip주소 뜸

/etc/netplan/00-installer-config.yaml
→ 혹시모르니 복사해두고 수정하자

cd /etc/netplan
dirorig.00-installer-config.yaml가 복사해둔 파일

network:
	ethernets:
		enp0s3:
			addresses:
			- 10.0.100.10/24  # 할당할 고정 IP주소
			gateway4: 10.0.100.1  # Routing table로 확인한 값
			nameservers:
				addresses:
				- 8.8.8.8
				search: []
			enp0s8:
				dhcp4: true
		version: 2 
# 이 방식이 더 직관적이고 많이 쓰임
network:
	ethernets:
		enp0s3:
			dhcp4: no  # 유동IP 사용하지 않음
			addresses: [10.0.100.11/24]  # 할당할 고정IP 주소
			gateway4: 10.0.100.1  # Routing table로 확인한 값
			nameservers:
				addresses: [8.8.4.4]
		enp0s8:  # 전에 Host전용Adapter 실습한게 남아있는것. 지금은 없음
			dhcp4: true
		version: 2 

→ 저장 후, $ sudo netplan apply → OS에 변경사항 반영 요청

내 컴퓨터와 연결된 공유기, 공유기와 연결된 외부 internet
→ 공유기, Router == gateway

192.168.149.2

Routing Table

route -n → Flags field에 G가 붙는 것들이 Gateway

내가 바꾸고 싶은 IP주소가 available한지 확인
ping 을 해보자! 안되면 그거 쓸수있는거

DNS Server 설정

DNS Server 확인

systemd-resolve --status | grep 'DNS Server'

가급적 8.8.8.8같은 공개된 DNS Server를 쓰자

source .bashrc → alias 수정후 변경사항을 이전에 실행한 로그인된 bash는 모르니 반영해준다.
/etc 밑에 Linux의 모든 설정파일 존재

resolv.conf 파일로 DNS Server 설정

/etc/resolv.conf → 내용 변경 금지!!!

sudo apt install resolvconf
sudo vi /etc/resolvconf/resolv.conf.d/head → 이 파일로 편집해야 한다!!!

근데 이건 번거롭다.
→ 아까 본 /etc/netplan/yaml파일 방법 쓰자.

System daemon

옛날에 있던 initsystemd로 바뀜
부팅시 병렬로 실행시켜 부팅속도가 빠르다

Gateway 설정

Gateway 확인

route -n → Routing table 출력, Gateway 확인 가능 numeric(예쁜 숫자 표현 옵션)

Default Gateway 추가, 삭제

Default gateway (ex: 10.0.100.1) : Gateway가 외부의 여러 network를 연결해주는 경우에 어디로 갈지 모르면 여기로 보냄

Default Gateway del, add

sudo route del default gw 10.0.100.1 → 삭제
route -n 해보면 default가 없어서 외부에 못나간다

sudo route add default gw 10.0.100.1 → 다시 추가

ping → 통신 상태 확인

ping www.google.com → website가 살았는지 죽었는지 확인

ping -c 3 10.0.100.1 → ping 3번만 보내보는 옵션

sudo apt install fping

fping -g 10.0.100.0 → group으로 확인 가능

traceroute → 통신 경로 확인

traceroute www.xslab.co.kr → 이 gateway까지 어떻게 거져서 도착하는지

whois 128.134.10.145 → 이 ip가 등록되어있는 지역, 사이트 정보
보안 문제로 *로 차단되어있는 경우가 많다

netstat → 통신 연결 상태 확인

netstat -rn → Routing table

netstat -an | grep LISTEN → Active connection(port 등) 확인, 살아있는(listen중인)것만 출력

sudo netstat -p | more → 열려였는 Port 확인

netstat -i → 내 장치에 연결된 Interface의 상태(RX, TX 등) 확인

Switch, Hub, Router, Gateway, 공유기 - 뭐가 뭔가

L2 Switch: Switching Hub보다 좀더 똑똑함
Hub: 그냥 선만 연결
Switching Hub: 약간의 load balancing

L3(Network) → Routing

Router: gateway 장비
공유기: 내부, 외부 network routing 장비

L4(Transport

L4 Switch: load balancing, TCP/IP

Network State 확인 절차

"모던 리눅스 관리", 길벗, 강석주 옮김

SCP 파일전송

  • local → remote scp [전송할 파일의 경로] [remote_username]@[remote_ip]:[받을 경로] scp /home/test.txt serinlnx@192.168.xxx.xxx:/home/serinlnx/testscp
  • remote → local scp [remote_username]@[remote_ip]:[전송할 파일의 경로] [받을 경로] scp serinlnx@192.168.xxx.xxx:/home/serinlnx/test.txt /home/testscp
profile
밀린 TIL 업로드 조금씩 정리중...

0개의 댓글