Gom3rye
네트워크 본문
네트워크 기초
Mac address : 물리적인 주소로 16진수 12자리
스위치는 Mac address 구별할 수 있지만 허브는 구별할 수 없음 → 모든 애들한테 다 보냄
라우터는 외부로 나갈 때 쓰는 것
멀티 플랙싱 : 회선 하나를 주고 돌려 쓰게 하는 것. ex 1초씩 번갈아 가면서 쓰게 하는 것 → 바뀔 수 있다. 따라서 IP는 논리적인 주소
ipv4 : 40억개 정도 (32bit의 주소)
ipv6 : 4조개 정도 할당 받아서 쓰고 있다. (128bit의 주소)
터널링 : IPv6 지원 안 되는 네트워크에서 IPv6를 사용할 수 있도록 해주는 것
IP 주소
- 컴퓨터를 구별하기 위한 논리적인 주소, 국가 별로 구분이 되어 있다. → 그래서 특정 국가들이 우리나라 못 들어오게 해! 가 가능한 것. 국가 별로 나눈 이후에는 통신사 별로 나눈다.
- IPv4와 IPv6 두 가지 주소 체계가 많이 사용되었는데 지금은 IPv6만 사용되고 설정은 IPv4로 해도 된다.
- IPv4는 32비트 주소 체계로 8비트씩 나누어서 십진수로 표기한다. (2의 8승까지 가능)
- 0.0.0.0 ~ 255.255.255.255
- IPv6는 128비트 주소체계인데 8비트씩 나누어서 16진수로 표현한다.
- 00~FF::8::8::8::8::8::8::8::8::8::8::8::8::8::8::8::8
도메인 : IP 주소를 문자로 변환해서 사람이 기억하기 쉽도록 한 주소
서브넷 마스크와 브로드캐스트 주소
서브넷 마스크 : 작은 네트워크가 가질 수 있는 주소의 범위
- 네트워크 규모를 나타내기 위한 주소로 공통된 주소의 비트수를 쓰기도 하고 공통된 비트를 1로 하고 구별하기 위한 주소를 0으로 표현하기도 한다.
- 192.168.0.0/24 이렇게 표현하기도 하고 192.168.0.0 255.255.255.0 이렇게 표현하기도 한다.
브로드캐스트 주소 : 내부 네트워크 안에서 방송을 하고 싶을 때 쓰는 주소, 일반적으로 가장 마지막 주소를 쓴다. ex. 192.168.0.255/24
첫 번째 주소 : 네트워크 주소 ex. 192.168.0.0/24
내부 컴퓨터 - Router ————— Router - gateway - 내부 컴퓨터
- 내부 컴퓨터
- 내부 컴퓨터
대부분 게이트 웨이 주소는 라우터의 주소
포트 번호 : 컴퓨터 내에서 애플리케이션을 구별하기 위한 번호
- 0~65535번까지인데 0~1023번은 예약된 번호
- http는 80번 https는 443번, telnet는 23번, ssh는 22번
- cat /etc/services 하면 볼 수 있다. ex) 포트번호/tcp
private network
- 인터넷 등에서 사용하는 네트워크는 public network라고 하고 내부에서만 통신하기 위해 구축된 네트워크를 private network라고 한다.
- 보안 상의 문제나 외부로 나갈 필요가 없는 경우 내부 통신만을 목적으로 구성된 네트워크
- ex. db 서버랑 web 서버는 둘만 소통해야 한다 → private cloud virtual 머신 여러 개 띄울 때도 하나 정도만 public으로 해놓고 나머지는 다 private으로 해서 밖의 애들이 함부로 들어오지 못하게 해야 한다.
TCP와 UDP
- TCP: 신뢰성이 빠름, 준비 과정이 있어서 오버헤드가 크고 속도는 느려진다.
- 가상 회선, STREAM 이라고도 한다.
- UDP: 속도가 빠름, 일방적으로 전송하고 종료
- DGRAM 이라고도 한다.
- 카카오톡이 아이폰에 메시지를 보내는 과정: 내 iphone의 ip를 apple에게 알려줌 kakaotalk이 apple한테 ip를 받아서 보냄, udp로 통신한다. → 카톡은 메시지 전송 실패하면 내가 재전송 눌러야 한다.
- APNS : apple push notification service
- TCP 통신 과정: ack을 보내서 통신할 준비가 되었는지 보고 header를 보내서 받을 준비 됐어? 물어보고 ack 보내서 받을 준비 됐어 보내고 메시지를 보내고 그거 잘 받았다고 ack 보낸다.
네트워크 설정
네트워크 관리자
- 우분투에서 네트워킹 서비스를 제공하는 서비스
- 데몬으로 실행
- IP 주소 설정, 고정 라우터 설정, DNS 설정 등을 수행
- 관리 도구
- 네트워크 관리자 : 기본 네트워킹 데몬
- nmcli 명령 : 네트워크 관리자 사용
- [설정] - [네트워크] : GUI에서 사용
- ip 명령 : 네트워크를 설정하는 명령
네트워크 관리자 설치
sudo apt install network-manager
네트워크 관리자 구동 중인지 확인하고 실행
systemctl status NetworkManager
시스템이 켜지면 바로 실행되게끔 하고 싶으면 enable 시켜놓기
systemctl start NetworkManager
systemctl enable NetworkManager
nmcli [옵션] 명령 {서브명령}
그냥 : 필수
[ ] : 생략 가능
{ } : 반복 가능
[옵션 ; 옵션] : 필수 선택
- 옵션
- t: 실행 결과를 간단하게 출력
- p: 사용자가 읽기 좋게 출력
- v: 버전 출력
- h: 도움말
- 명령 + 서브명령
general [status | hostname | 생략] networking [on | off | connectivity] connection [show | up | down | modify | add | delete | reload | load] device [status | show]
- 네트워크의 전체 상태 확인
nmcli general status
- 네트워크 활성화 및 비활성화
nmcli net connectivity: 네트워크 연결 상태를 알려줌
none: 호스트가 네트워크에 연결 안됨
limited: 네트워크에는 연결이 되었는데 인터넷과 연결되지 않음
full: 호스트가 네트워크에 연결되어 있고 인터넷도 사용할 수 있음
unknown: 네트워크 연결 상태를 알 수 없다.
nmcli networking(net) on 또는 off
- 네트워크 설정
nmcli connection 서브명령(show, up, down, modify add, delete, reload, load 등)
nmcli c show == nmcli co show == nmcli con show
- 디바이스 확인 명령
nmcli device status
nmcli device show enp0s3
ip [옵션] 객체 [서브명령]
IP 주소, 게이트웨이, 네트워크 장치의 상태를 출력하고 관리하는 명령
- 옵션
- V: 버전
- s: 자세한 정보를 출력
- 서브 명령
- address [add, del, show, help] : ip 주소 관리
- route [add | del | help] : 라우팅 테이블을 관리 (굉장히 중요한 명령어)
- link [set] : 네트워크 인터페이스를 활성화하거나 비활성화
ip address 확인
ip addr show #(ip 다음에 addr로 시작하는게 address 밖에 없어서 꼭 address 안 써도 된다.)
ip addr show enp0s3
ip address add 아이피 dev 장비명
sudo ip addr add 192.168.1.20/24 dev enp0s3
-> 잘 들어간 거 확인했고
지울 때
sudo ip addr del 192.168.1.20/24 dev enp0s3
라우팅 테이블 보기
ip route show
특정 네트워크를 특정 디바이스를 통해서 가도록 설정
sudo ip route add 목적지네트워크 via 게이트웨이 장치명
ex. 192.168.0.1을 enp0s3을 통해서 가도록 설정
sudo ip route add 10.0.2.0/24 via 192.168.0.1 dev enp0s3
ex. 10.0.3.0/24 네트워크를 자신의 게이트웨이 중 하나를 통해서 나가도록 설정
sudo ip route add 10.0.3.0/24 via <게이트웨이_IP>
sudo apt install net-tools → 가상머신에서 ifconfig를 사용하기 위해서
내 게이트웨이 확인
route # 남이 나한테 들어올 때 gateway 10.0.2.0
netstat -r # 남이 나한테 들어올 때 gateway 10.0.2.0
ip route show # 내가 바라보는 내 게이트웨이(내가 나갈때 거치는 게이트웨이) 10.0.2.2
# default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
내 게이트웨이는 10.0.2.2 이고 장비 이름은 enp0s3
sudo ip route add 192.0.3.0/24 via 10.0.2.2 dev enp0s3
→ 이 명령은 라우터에서 많이 사용하는 명령이고 컴퓨터에서는 NIC가 2개 이상이어서 여러 개의 네트워크를 사용할 때 사용하는 명령이다.
→ 국내에서는 금융권에서 폐쇄망의 형태로 2개의 네트워크를 연결하는 경우가 있다.
라우팅 경로를 삭제할 때
sudo ip route del 목적지네트워크
네트워크 인터페이스 활성화, 비활성화
sudo ip link set 장치이름 down 이나 up
ifconfig [인터페이스이름] [옵션] [값]
현재 설치된 네트워크 인터페이스 확인 명령어
- 네트워크 설정을 하는 전통적인 명령어로 윈도우즈에서는 ipconfig
- 우분투에서는 설치가 안되어 있어서 net-tools 패키지를 설치해야 한다.
- 옵션
- a: 시스템 전체에 대한 정보를 출력
- up/down: 활성화, 비활성화
- netmask 주소: 넷마스크 주소를 설정
- broadcast 주소: 브로드캐스트(네트워크 내의 모든 곳에 데이터를 전송) 주소 설정
- 통신 방식
- unicast: 한 곳에만 데이터를 전송하는 것
- multicast: 그룹의 통신 - 화상회의
- broadcast: 네트워크 전체에 전송
- anycast: 가장 가까운 곳 아무거나 하나
- lo 는 루프백인데 루프백은 시스템 내부 통신을 위해서 만들어지는 인터페이스이다.
- 주소는 일반적으로 127.0.0.1 이다.
- 내 랜카드가 잘 작동하는지 확인하는 방법 : ping 127.0.0.1
- ex. 웹 만들어서 내 안에서 잘 작동하는지 확인하고 싶으면 127.0.0.1로 들어가면 된다.
dns 서버가 잘 작동하는지 : ping 8.8.8.8
gateway가 잘 작동하는지 : ping 10.0.2.2
어떤 곳을 못 들어가도록 하는것
- 프록시나 방화벽으로 막는 방법
- dns로 막는 방법 → ex. 삼성만 인식을 하도록 함 → 나머지 주소는 인식을 못해서 못들어감
netmask : subnet mask /24 → 24bit가 같아야 동일한 네트워크가 된다.
- 10.0.2.15와 10.0.2.16은 안에서 소통 가능
- 10.0.2.15와 10.0.3.15는 라우터를 통해서 나갔다가 들어와서 소통 가능 (같이 내부 네트워크에 있어도 인식을 못함)
- 너무 많이 묶어버리면 느려지니까 적절한 크기의 netmask를 구성해야 한다.
- 255.255.255.255 : 나는 네트워크를 구성할 생각이 없다. 나 혼자 인터넷만 하고 싶다. → 딱 한 대
- 255.255.255.0 : 나랑 ip 주소 하나도 안 똑같아도 된다. → 전체 의미
프라이빗 클라우드를 하고 싶으면 ip를 고정을 시켜야 한다.
- db ↔ web server 만 소통하고 싶어. web server ip : 192.168.0.2 ⇒ 서브넷 마스크 설정 : 192.168.0.2 255.255.255.255 어떤 컴퓨터도 접속할 수 있도록 하고 싶어 : 0.0.0.0
either 부분이 MAC Address
broadcast 10.0.2.255 - 네트워크 내의 모든 장비에게 전송할 때 사용하는 주소
특정 인터페이스 확인
ifconfig 인터페이스이름
ifconfig enp0s3
인터페이스 사용 해제
ifconfig 인터페이스이름 down
ifconfig enp0s3 down
인터페이스 다시 사용하도록 하는 것
ifconfig 인터페이스이름 up
sudo ifconfig enp0s3 up
인터페이스 설정
ifconfig 인터페이스이름 IP주소 netmask 넷마스크주소 broadcast 브로드캐스트주소
ifconfig enp0s3 10.0.2.16 netmask 255.255.255.0 broadcast 10.0.2.255
→ 현재 나는 10.0.2.15로 되어 있는데 16으로 바꾸려고 하니까 잠시 렉 걸릴 수 있다.
(그리고 또 리부트하면 버추얼박스는 다시 10.0.2.15로 바뀐다.)
게이트웨이 설정
route add default gw 게이트웨이주소 dev 인터페이스이름
# 우분투는 기본적으로 10.0.2.2로 설정되어 있다.
DNS 설정
- Domain Name Server: 도메인을 입력했을 때 이를 해석해서 실제 컴퓨터에 접속할 수 있도록 해주는 서버
- DNS 설정은 systemd-resolved 서비스가 담당하며 /etc/resolv.conf 파일에 저장한다.
- nmcli con mod 이름 ipv4.dns DNS 주소
- DNS 확인이나 서버에 질의하기
- nslookup치고 server 치기
- nslookup [도메인]
호스트 이름 설정
호스트 이름 출력
uname -n
uname -a # -> 컴퓨터에 대한 정보 다 나온다.
호스트 이름 설정 (3가지 방법 중 하나 쓰면 된다.)
1. hostnamectl set-hostname [바꿀 이름]
2. sudo vi /etc/hostname 명령어로 파일 안 저장된 이름을 바꾸기
3. hostname [이름] #버전에 따라 안 되는 명령어가 있을 수 있음/ 25ver.에서는 1,2번하고 리부트 하면 바뀜
# 이름을 생략하면 출력
→ reboot 해서 빠져 나간 다음에 다시 가상 머신이 재시동 되면 hostname이 main으로 바뀌어 있는 것을 볼 수 있다.
hostname -I(대문자 i) : 이름 대신에 I 옵션을 이용하면 IP주소를 알려준다.
→ 우분투를 바로 설치했을 때는 ifconfig를 사용할 수 없기 때문에 중요! (net-tools를 설치해야 ifconfig가 사용 가능하니까 net-tools 설치 안 하고 ip를 확인하고 싶으면 hostname -I를 쓰면 된다.)
hostnamectl
hostnamectl status
이 작업은 대부분 하나의 가상 머신을 복제해서 여러 개의 머신을 만들 때 컴퓨터 이름이 동일하게 작성되면 혼란이 오기 때문에 변경을 하는 것
네트워크 상태 확인
통신 확인
ping [옵션] [목적지 주소]
네트워크 장비에 ECHO_REQUEST를 전송
- 옵션
- a: 통신이 되면 소리를 냄
- q: 테스트 결과를 지속적으로 보여주지 않고 종합 결과만 출력
- c: 보낼 패킷(통신을 할 때 보내는 일정 크기의 메시지) 수를 지정
- 실제 전송을 할 때는 56B의 크기로 보내는데 8B의 헤더가 붙어서 64B로 간다.
ping -c 10 www.google.com # 10개만 보낸다.
netstat [옵션]
네트워크 상태 정보 출력
- 옵션
- a: 모든 소켓(NIC를 추상화 한 개념) 정보를 출력 (하드웨어: 랜카드/ 소프트웨어: 소켓)
- r: 라우팅 정보
- n: 호스트명 대신에 IP주소로 출력
- i: 모든 네트워크 인터페이스 정보 출력
- s: 프로토콜 별로 네트워크 통계 정보를 출력
- p: 해당 소켓과 관련된 프로세스 이름과 PID를 출력
- 현재 사용 중인 포트를 확인
netstat -an | grep LISTEN
- 현재 열려 있는 포트를 어떤 프로그램이 사용하는지 확인
sudo netstat -p
특정 포트를 사용하는 프로세스를 강제로 종료하고자 하면 PID를 알아야 한다.
- 프로토콜 별로 보기
netstat -s
arp [IP 주소]
- MAC 주소와 IP 주소 확인
arp
→ arp 명령은 옵션이 없으면 현재 컴퓨터 정보를 출력한다.
- 동일 네트워크에 있는 컴퓨터의 정보를 알고자 할 때 arp ip주소를 기재하면 된다.
tcpdump [옵션]
패킷 캡처
- 네트워크에서 주고 받는 패킷을 확인하는 명령
- 옵션
- c: 지정한 수 만큼 덤프
- i: 특정 인터페이스로 들어오는 패킷만 덤프
- n: IP주소를 호스트이름으로 변경하지 않음
- X: 패킷의 내용을 16진수와 ASCII로 출력
- w 파일명: 파일에 저장
- r 파일명: 파일에서 읽어옴
- host 호스트이름 또는 주소: 지정한 호스트가 보낸 것만 확인
- tcp port 포트번호: 지정한 포트번호 패킷만 덤프
- ip: IP 패킷만 덤프
- 이것들을 더 보기 쉽게 해주는 것이 WireShark
Server
Telnet과 SSH
- 원격 접속에 관련된 프로토콜
Telnet
- 원격 접속을 위한 초창기 프로토콜
- 기본적으로 리눅스에는 원격 접속을 위한 Telnet 클라이언트가 설치되어 있지만 서버는 설치되어 있지 않다.
- 설치 여부 확인
dpkg -l | grep telnet
- 텔넷 서비스 설치
sudo apt install telnetd
- 서비스가 구동 중인지 아닌지 확인 (ex. 서비스는 inetd)
systemctl status inetd
SSH
Telnet은 주고 받는 데이터가 암호화되어 있지 않음
- Secure SHell 로 모든 통신을 암호화하여 주고 받는다.
- ssh daemon이 기본으로 동작하지는 않기 때문에 설치를 해야 한다.
- 설치
sudo apt install ssh
- 서비스 확인
systemctl status ssh
- 접속
ssh 아이디@IP [-p 포트번호]
→ 포트는 기본 포트를 사용하면 생략이 가능하다.
파일 서버
FTP
파일 송수신 프로토콜
- 설치 → vsftpd
sudo apt install vsftpd
- 설정: /etc/vsftpd.conf 파일을 이용
- 서비스 이름: vsftpd
'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글
Shell Programming (0) | 2025.05.28 |
---|---|
네트워크 (0) | 2025.05.27 |
(중요!) 리눅스를 활용한 패키지 관리 (0) | 2025.05.23 |
리눅스를 활용한 패키지 관리 (2) | 2025.05.22 |
리눅스를 활용한 시스템 관리 (1) | 2025.05.21 |