-
<3주차> 네트워크 교육 정리!클라우드 교육/보고서! 2022. 11. 14. 21:50
목차
cmd
ipconfig /all
을 입력하면
PC의 논리적 주소라고 하는 IP Address와 물리적 주소라고 하는 MAC Address를 보여줌
물리적 주소 ( MAC address )
물리적 장비가 가지고 있는 주소
12자리로 나타내며 각 자리는 아래와 같이 나타낸다.
Oui 번호는 물리적 장비를 제조한 네트워크 회사의 고유 번호이다.
일련번호는 네트워크회사가 할당한 번호이다.
논리적 주소 ( IP address )
인터넷에 연결된 기기를 식별하는 논리적인 주소.
. 으로 구분된 12자리의 숫자로 나타냄
※정보를 전송하는 방법
유니캐스트 / 1:1 /분명한목적이 있는 전송방식
멀티캐스트 / 1:N / 자신이 인지하고 있는 다수와 통신
브로드캐스트 / 1:all /전체 광고목적
라우터
서로 다른 Network의 통신을 가능하게 한다
Routing Table에 의하여 Packet을 최적을 경로로 전송
Switch
동일 Network에서 Node를 확장한다
※ node 확장 : 라우터에서 선 하나가 오면 그걸 스위치 포트에갯수만큼 확장 가능
서브넷 마스크가 생기기 이전에는 무분별하게 IP가 낭비되곤 했다.
낭비되는 IP를 효율적으로 관리하기 위해 Subnet mask 등장
서브넷 마스크 규칙
2진수 32개로 구성
32개중 중간에 0이 나오면 끝까지 0이어야함
1 규칙에 의해 2진수 32개가 8개씩 나뉘어 각 자릿수를 대신하게 된다.
2진수가 십진수로 나뉘어 각 자릿수를 나타낸다.
2규칙에 의해 아래표 내의 숫자만 올수 있는데,
아래 표의 가장 위는 각 자리수의 크기를 나타낸다.
오른쪽은 그 값으로 서브넷 마스크를 나타낸것
subnet mask의 예시
이렇게 0다음에는 . 이 나와도 1이 올수 없다.
위 표의 네트워크 갯수의 의미
위의 표는 마지막 자릿수로 나타냈지만, 자릿수가 앞당겨질수록, 뒷자리경우의 수까지 포함이기에 더 많은 대역이 생기게 된다.
IP : 10.0.0.0에
Subnet mask : 255.255.255.128
에서 사용가능한 네트워크는
subnet mask가 255인 자리는 변동되지않는다.
그리고 128 > 네트워크가 2개를 의미한다.
마지막 자릿수를 네트워크 2개로 나뉘면
Network a : 10.0.0.0~10.0.0.127
Network b : 10.0.0.128~10.0.0.255
로 나타낸다.
하지만 IP가 10.0.0.0 이므로
Network a를 말한다.
그리고 첫번째자리는 network ID가 되고,
마지막 자리는 Direct Broadcast가 된다.
최종적으로
IP : 10.0.0.0에
Subnet mask : 255.255.255.128
Network a의 10.0.0.1~10.0.0.126이 된다.
Ex1)
IP : 192.158.35.176
Subnet mask : 255.255.255.252
해석
마지막 자리가 252 이므로 network는 64개로 쪼개진다.
빨간색 칸의 0~255를 64로 나눠서 176이 들어가는 영역을 찾으면 이 네트워크의 사용가능 대역이 나옴
0~3 / 4~7 / 8~11 / 12~15 / ..... / 164~167 / 168~172 / 172~175 / 176~179 / .... / 252~255
이렇게 나뉘어 지면 176이 들어갈 대역은
192.158.35.176~192.158.35.179
첫자리와 마지막자리를 빼면 사용가능한 IP는
192.158.35.177~192.158.35.178
Ex2)
IP : 192.158.35.176
Subnet mask : 255.255.128.0
해석
세번째 자리가 128이므로 network는 세번째 자리에서 2개로 쪼개진다.
빨간색칸의 0~255를 2로 나눠서 35가 들어가는 영역을 찾으면 네트워크의 사용가능 대역이 나옴
0~127 / 127~255
이렇게 나뉘어지면 35가 들어갈 대역은
192.158.0.(0~255) ~ 192.158.127.(0~255)
첫자리와 마지막자리를 빼면 사용가능 IP는
192.158.0.1 ~ 192.158.127.254
을 사용
실제환경처럼 실습
Cisco Packet Tracer
서버1, PC1, 스위치1, 라우터 1
서버, PC 세팅
왼쪽의 서버를클릭
상위의 Desktop - IP configuration 클릭
아래와 같이 설정
IP Addrress : 200.200.200.1
Subnet Mask : 255.255.255.0
Default Gateway : 200.200.200.254
DNS Server : 200.200.200.1
그리고 상위 Services - DHCP를 클릭 ( 우측 PC에 자동으로 IP 부여하기 위해 )
여기서 DHCP를 설정하면, 연결된 pc에 자동으로 IP가 부여됨
Service : on
Default Gateway : 200.200.200.254
DNS Server : 200.200.200.1
Start IP Address : 200.200.200.41 - 41번 IP부터 순차적으로 부여한다. 고정IP의 여유분을 두고 설정
Subnet Mask : 255.255.255.0
Makximum number of Users : 200 - 자동할당 IP의 갯수를 설정한다, 41번부터 200개까지를 의미
Save
그 후 PC의 Desktop - IP configuration - DHCP를 클릭하면 잠시후 아래처럼 자동으로 IP가 등록
라우터 설정
실제 라우터의 뒤 사진과 같이 생겼다.
전원버튼을 눌러 전원을끄고,
좌측의 스크롤을 내려 WIC-2T 를 클릭한다
그리고 드래그해서 아래처럼 올리면됨
전원을 켜고 위에 CLI를 눌러주자
아래처럼 화면이 뜸
#No
엔터 몇번 누르면 아래처럼 된다
이제
enable configure terminal hostname Seoul_R1 enable password test1 enable secret test2 no ip domain-lookup service password-encryption line con 0 password test3 login exec-timeout 0 0 loggin synchronous exit interface fastethernet 0/0 ip address 200.200.200.254 255.255.255.0 no shutdown do write
이 순서대로 입력할건데 보통 라우터를 설정할때, 시간단축을 위해 이런식으로 입력할 것들을 한번에 정해두고 설정한다
enable
유저모드로 접속
configure terminal
관리자 모드로 접속
hostname Seoul_R1 enable password test1 enable secret test2 no ip domain-lookup service password-encryption line con 0 password test3
#hostname Seoul_R1 : 라우터의 이름을 'Seoul_R1'으로 설정
#enable password test1 : 이용자 모드 password를 'test1'으로 지정
#enable secret test2 : 관리자 모드 password를 'test2'로 지정
#no ip domain-lookup : 명령어 오타시 도메인 서버를 찾지 않도록 하고 오류 메시지 표시
▶오타나면 서버가 도메인서버를 찾는다고 시간이 지연되는데 그걸 방지
#service password-encryption : 패스워드를 암호화 하는 명령어
▶비밀번호 설정시 암호화가 되지않기 때문에 show run 명령어를 하면 관리자가 설정한 이용자 password를 확인할수 있어서 암호화를 한다
#line con 0 : 콘솔 포트 설정 하기위해 진입
#password test3 : 콘솔포트 패스워드 'test3'으로 지정
login exec-timeout 0 0
#login : 접속 시 암호 필요
#exec-timeout 0 0 : 입력없을시 세션 유지시간 무한 ( 0분 0초 )
loggin synchronous exit
#loggin synchronous : 명령어와 시스템 메시지가 겹치지 않게 함
#exit : 앞단계로 이동 ( 이때는 운영자모드로 전환 )
interface fastethernet 0/0 ip address 200.200.200.254 255.255.255.0 no shutdown do write
#interface fastethernet 0/0 : 슬롯번호/포트번호 접속
#ip address 200.200.200.254 255.255.255.0 : 게이트웨이/서브넷마스크
#no shutdown : 인터페이스 활성화 명령어
#do write : 설정 저장
몇초지나면 아래처럼 라우터도 파란불이 뜬다. pc에서 Ping을 보내보면 잘 가는게 확인된다.
서버, pc에서 pingtest를 해보면 접속이 잘 된것을 확인할 수있다.
우리가 편지나 택배를 보낼때, 주소를 쓰고, 세부 주소를 기재한다. 컴퓨터의 데이터도 목적지의 주소를 입력하고, 컴퓨터안의 무수한 방 속에 정확한 곳에 정보를 전달하기 위해 IP address와 Port 를 사용한다.
Port
아래 그림을 보면, IP address로 목적지 pc에는 전송했지만, PC 내에서는
데이터가 다른 서버로 이동하지 못하게
Port번호를 통해 목적지 서버로 전달되게 된다.
집 내부에도 여러 방이 있듯이, IP Address는 집주소, 포트는 방들의 번호라고 생각하면 이해하기쉽다.
포트 번호 ( Port Number )
서버를 구분짓는 16비트의 논리적 할당 번호
0~65536
이중 아무거나 막 갖다쓰는게 아니라 보편적으로 사용하는 서버들은
0~1023 포트를 사용하는데, 이렇게 알려진 Port들을 well-known port라고 한다.
0번 ~ 1023번: 잘 알려진 포트 (well-known port)
1024번 ~ 49151번: 등록된 포트 (registered port)
49152번 ~ 65535번: 동적 포트 (dynamic port) - 비어있어서 임의대로 사용가능아래는 Well-known port 중에 많이 알려진 포트들이다
포트 포워딩 ( Port Forwarding )
공유기에서 PC로 연결되도록 포트넘버를 공유기에서 정의해주는 작업이다.
외부에서 공유기로 들어오는것은 IP주소만 알면 되지만, 내부의 IP는 사설 IP라서 외부에서 IP만으로 특정 PC를 지정할 수 없기에 포트포워딩을 한다.
전세계에는 수십억대의 PC와 스마트폰이 존재한다.
이들이 통신하기 위해서는 전송하는 데이터의 "정확한 목적지"와 "룰"을 지켜야하는데,
이를 위한 통신망의 국제적 표준을 말한다.
OSI 7 계층
Open System Interconnection
개방형 체계간 상호접속
네트워크 통신이 일어나는 7단계 과정이다.
우리는 게임을 하며 , 온라인 보이스채팅을 하고 카카오톡도 하며 웹사이트도 사용하는등 여러가지 일을 같이 할 수 있다.
그렇다면 여러가지 데이터가 한번에 오면 PC는 어떤 프로그램으로 데이터가 가야할지 모른다.
위의 그림처럼 단지 LAN선을 따라 데이터가 이동한다면, PC는 여러가지 작업을 하면,
모든 프로그램에 똑같은 데이터가 전송되는 문제때문에 하나의 작업외에는 할수 없을것이다.
이를 해결하기 위해 여러가지 작업과, 전세계 수많은 PC가 연결되기 위해서는 국제적인 통신 규격이 필요했다.
이로인해 탄생한 것이 OSI 7 계층이다.
아래 그림을 보면 OSI 7 계층으로 인해 Host A가 Host B로 보낼 데이터가 어떻게 전송되는지 볼수 있다.
흐름을 한눈에 알아보기 쉽고 어떤 문제가 발생시 쉽게 파악하여 정상적인 장비를 건드리지 않게 고칠수있게 보완이 용이하다는 장점이 있다.
이렇게 사용자가 보내려 하는 데이터에 주소를 입히는 것을 캡슐화 라고 한다.
다시 역으로 받는 곳에서 데이터를 하나씩 상위 계층으로 보내는 것을 역캡슐화라고 한다.
물리 계층 ( Physical layer )
전기적 신호가 나가는 물리적 장비
단지 데이터를 전기적인 신호 ( 101010101000011111 ) 로 변환하여 전송하는 기능만 있다.
전송단위 : 비트 ( Bit )
장비 : 케이블, 허브, 리피터
데이터 링크 계층 ( Data link layer )
정보의 오류 / 흐름을 관리해 안전한 정보의 전달이 목적인 계층
MAC 주소를 통해 통신하게 된다
아래의 작업들이 이루어진다.
흐름제어 : 송수신측의 속도 차이 조정
오류제어 : 오류 검출과 회복
순서제어 : 프레임의 순서적 전송
프레임 동기화 : 프레임의 시작과 끝을 구별하기위한 동기화
전송단위 : 프레임 ( Frame )
장비 : 브릿지, 스위치, 이더넷
네트워크 계층(Network layer)
경로 ( Route ) 와 주소 ( IP ) 를 정하고 패킷을 전송
목적지까지 가장 안전하고 빠르게 데이터를 보내기 위한 경로 지정
전송단위 : 패킷 ( Packet )
전송 계층 ( Transport layer )
상호간의 신뢰성 있는 데이터를 주고 받게 해주는 역할
Port 번호가 사용되는 계층이며 대표적으로 아래의 프로토콜이 사용된다.
TCP : 데이터의 온전한 전송을 위한 신뢰성 프로토콜 ( 텍스트, 이미지 )
UDP : 방대한 데이터를 전송하는데 온전한 전송을 보장하지않는 프로토콜 ( 실시간 방송, 온라인 스트리밍 )
세션 계층 ( Session layer )
TCP / IP 세션을 만들고 없애는 역할
표현 계층 ( Presentation layer )
전송하는 데이터의 표현방식을 결정
GIF, ASCII, JPEG 등
데이터의 암호화, 복호화도 담당한다.
응용 계층 ( Application layer )
우리가 사용하는 응용서비스나 프로세스가 사용되는 곳으로 가장 먼저 거치게 될 단계이다.
대표적으로 HTTP, FTP 등의 프로토콜
DNS ( Domain Name Service )
호스트의 도메인 네임 ( www.hello.com ) 을 네트워크 주소( 000.000.000.000 ) 로 변환하거나 그 반대의 역할을 수행한다.
도메인이란 IP를 사람이 직접 외우기 어렵기 때문에, IP에 이름을 부여하는 것인데 만일 DNS가 없다면 우리는 가려는 사이트의 IP주소를 외워야한다.
Ping 테스트를 통해 도메인의 존재를 알 수 있다.
아래처럼 cmd 창에서 구글에 ping을 보내보면 구글은 IP주소에 ping을 보내는것을 알 수 있다.
DNS가 작동하는 원리를 보자
위를 설명하면,
클라이언트가 도메인명을 브라우저에 검색하면 DNS서버로 가서 도메인명과 일치하는 IP주소를 얻어온다.
우리의PC에서는 단순히 이 작업만 이루어지는데, DNS서버에서는 좀 더 복잡한 과정이 이루어진다.
전세계에서는 도메인서버가 무수히 많기 때문에 이를 계층화해서 관리하고있다.
먼저 위에서 말한 DNS 서버는 Local 서버라고 하는데 우리가 사용하는 클라이언트와 직접적인 소통을 한다.
우리가 www.naver.com의 IP 주소를 찾는데에는 Local 서버에 요청한다.
Local 서버에서는 찾고자 하는 IP 주소가 있을수도 있고 없을수도 있어서, 없다면 Root 서버로 요청을 넘긴다
Root 서버에도 없다면, 도메인의 끝부분을 지칭하는( 여기서는 .com ) TLD 서버,
IP 주소의 직접적인 이름( 여기서는 naver.com )을 의미하는 Authoritative DNS로가서 물어본다.
naver.com의 Authoritative DNS서버이기때문에, 네이버의 IP주소 [ 125.209.248.6 ] 가 있다.
Local DNS ( 기지국 DNS )
인터넷을 사용하기 위해 통신사에서 IP를 할당해준다.
그러면 가입했던 기지국 DNS서버가 등록되는데, 통신사의 DNS서버라고 보면된다.
Root DNS
ICANN( 인터넷 주소 관리 기구 )이 직접 관리하는 최고 존엄 서버이다.
전세계에 13대의 Root DNS 서버가 존재하는데, 이를 복제한 수백가지 서버가 호스트 요청을 처리해준다.
TLD DNS ( 최상위 도메인 DNS )
도메인 등록기관이 관리하는 서버이다.
우리가 자주 보는 .com .co.kr .net 같은 도메인들을 관리하고 부여하는 서버이다.
Authoritative DNS
실제 도메인의 직접적인 서버
그래서 권한의 Authoritative이다.
위 과정을 통해 IP주소를 성공적으로 받아오면, 캐시에 정보를 저장한다.
다시 이 복잡한 과정을 반복하는것이 비효율적이기 때문에 PC는 이를 잠시 저장해둔다.
이를 확인하는 방법은 cmd 창에서 아래를 입력하면 나온다
ipconfig /displaydns
DNS는 53번 Port의 UDP / TCP를 사용하는데
일반적인 DNS를 사용할 경우 UDP를 이용한다.
Zone Transfer ( 영역전송 )을 사용할때 512byte 를 초과하는 전송에는 TCP를 사용한다.
cmd 창에서 도메인서버가 어떻게 입력되었는지 확인해보자.
nslookup
서버의 네트워크가 잘 설정되었는지 확인하는 명령어이다.
naver.com을 치면 8.8.8.8 서버에서 223.130.200.104 서버로 물어봐서 네이버의 ip를 가져왔다
권한없는응답 : 구글 8.8.8.8이 직접 네이버에 물어봐서 가져온 ip라서 8.8.8.8은 권한없는 응답이라함
Set type=all Naver.com
all : DNS 정보를 모두 표시한다
Set type=ns Naver.com
ns : 각 도메인에 적어도 한 개 이상 있어야 하며, DNS 서버를 가리킨다
Set type=mx Naver.com
mx : 메일 서버 IP주소와 호스트명을 검색할때 사용한다.
리눅스 DNS 구성
BIND(berkeley internet name domain) 는 DNS 를 구현한 서비스 시스템
거의 모든 시스템을 지원한다.
설치방법
yum install -y bind bind-utils bind-libs
설치후 녹색파일들은 수정하고
파란색 파일들은 새로 만들것이다
구성파일 주의사항
해당 zone 파일을 named에 추가 구성 후 반드시 기타 사용자에 읽기권한 부여 해야한다.
문자로 긑나면 반드시 끝에 .
관리자의 메일 주소 입력 ex) aaa.naver.combind 설치를 완료하면, linux에서도 똑같이 nslookup을 사용할 수 있다.
먼저 자신의 ip와 dns를 확인
dig naver.com +trace
어느부분에서 문제가 생겼는지 확인가능한 명령어이다. 알아두면 좋다.
dig에서 nameserver를 강제로 8.8.8.8로 설정하는것, 여기 작업과 무관하니 기억해두고 나중에 필요할때 보면된다.
vi 편집기로 아래 항목에 들어가 도메인 네임 설정한다.
vi /etc/dhcp/dhcpd.conf systemctl restart dhcpd
vi편집기로 들가서 dns 접미사 설정
vi /etc/named.conf
아래처럼 변경
저장
정방향 조회영역 설정
아래로 들어가서
vi /etc/named.rfc1912.zones
19~23줄 / 37~41번줄 복사
:19,23co$ :37,41co$
아래에 추가가 되면,
zone "sangm.com" IN { type master; file "sangm.com"; allow-update { 10.0.0.2;10.0.0.3;}; }; zone "0.0.10.in-addr.arpa" IN { type master; file "sangm.com"; allow-update { 10.0.0.2;10.0.0.3;; }; };
위처럼 변경후 저장
파일을 복사한다.
cp /var/named/named.localhost /var/named/sangm.com cp /var/named/named.loopback /var/named/com.sangm
ls 명령어로 복사됐는지 확인됐으면
내부 파일을 바꿔준다.
로 접속
기본적으로 아래처럼 되어있다.
위에걸 아래로 바꿔준다
아래에 @, www, ftp, ns1, mx1 들은
@ 은 도메인 이름 그 자체이고,
호스트가 www로 들어오거나, ftp로 들어와도 10.0.0.1로 보내버린다는 의미이다.
저장
다시 다른 복사 파일을 변경하자
여기로 들어가서
아래처럼 변경 후 저장
기타 사용자에 대해 읽기권한을 부여해준다.
chmod o+r /var/named/{sangm.com, com.sangm} ls -l /var/named
재부팅
다음으로 53번 DNS 포트의 TCP, UDP 방화벽을 열자
firewall-cmd --permanent --add-port=53/{tcp,udp} firewall-cmd --reload firewall-cmd --list-all
재부팅 후 확인해보면, 아래처럼 열린것이 확인된다.
작업이 다 끝났으니 확인해보자.
nslookup sangm.com
위처럼 잘 확인된다.
'클라우드 교육 > 보고서!' 카테고리의 다른 글
<6주차> 네트워크 교육 정리! (2) 2022.12.05 <5주차> 네트워크 교육 정리! (0) 2022.11.28 <4주차> 네트워크 교육 정리! (0) 2022.11.20 <2주차> 리눅스 교육 정리! (0) 2022.11.07 <1주차> 리눅스 교육 정리! (0) 2022.10.29