네트워크 구분과 구성요소
네트워크 구분과 구성 요소
네트워크 연결 구분
- 규모에 따른 구분
- LAN: Local Area Network - 사무실, 건물 하나 정도의 소규모 네트워크
- MAN: Metropolitan Area Network - 하나의 도시 정도를 네트워크로 연결
- WAN: Wide Area Network - 먼 거리를 연결한 네트워크
- PAN: Personal Area Network - 개인의 작업 공간을 중심으로 장치들을 서로 연결하기 위한 네트워크
- 도시 단위의 네트워크를 만들 때 통신사의 인프라를 이용하면 WAN, 자체 인프라를 이용하면 MAN이라고 하기도 함
회선에 따른 분류
- 인터넷 회선: 인터넷 접속을 위해 통신 사업자와 연결하는 회선
- 가입자와 통신 사업자 간에 직접 연결되는 구조가 아니라 전송 선로 공유 기술을 이용
- 전용 회선: 가입자와 통신 사업자 간에 대역폭을 보장해주는 서비스
- 컴퓨터 - 스위치 - 라우터 - ISP(통신 사업자) - 라우터 - 스위치 - 컴퓨터
- 본사와 지사 연결이나 지사와 지사 연결 등에 사용
- 종류는 저속인 음성 전송 기술 기반이 있고 고속인 메트로 이더넷이 있음
- LLCF(Link Loss Carry Forward)
- 한쪽 링크가 다운되면 이를 감지해 반대쪽 링크도 다운시키는 기능
- 전용 회선을 이더넷으로 구성할 때 통신 사업자가 LLCF를 설정하지 않으면 한 사이트에 다운되더라도 반대쪽 사이트에서 회선이 살아있는 것처럼 보이기 때문에 회선 개통 한 후 회선사에서 LLCF 설정이 되어있는지 확인
- 인터넷 전용 회선: 인터넷 연결 회선에 대한 통신 대역폭을 보장해주는 서비스
VPN(Virtual Private Network)
- 전용 회선이 아니지만 가상으로 직접 연결한 것 같은 효과가 나도록 만들어주는 네트워크 기술
- 통신 사업자 VPN
- 통신 사업자가 VPN을 구성해주는 것
- 하나의 건물에서만 VPN을 구성한다면 직접 구성하면 되지만 먼거리에 떨어져 있는 곳과도 통신이 가능한 VPN을 만들려면 회선 연결 비용이 증가하기 때문에 통신 사업자의 회선을 이용해서 구성함
- MPLS VPN: 통신사업자는 전용선인 것처럼 보이게 하지만 실제로는 가입자를 구분하는 기술을 적용해서 시분할을 이용해서 서비스를 제공
- 가입자 VPN: 일반 사용자가 가상 네트워크를 직접 구성하는 것
DWDM(Dense Wavelength Division Multiplex): 파장 분할 다중화
- 광케이블로 데이터를 전송할 채널을 분할해서 데이터를 전송하는 것
네트워크 구성 요소
- NIC(Network Interface Card)
- 직렬화, MAC Address, 흐름제어(Flow Control - 데이터를 안정적으로 주고받기 위해서 기존에 통신 중일 때 다른 네트워크에서 데이터 전송 중지 요청)
- 일반적으로 사용하는 NIC외에도 스토리지와 서버를 연결하는 NIC도 존재
- 고성능 클러스터링을 구현하기 위한 HPC(High Performance Computing)에서도 우리가 일반적으로 사용하는 NIC를 사용하지 않음
- 케이블과 커넥터
- 1000BASE-T: 1000Mbps BASE채널 T케이블타입
- 케이블 종류는 twistedpair(유선인터넷), 동축 케이블(TV 회선), 광케이블
- 스위치: 여러 장비를 연결하고 케이블을 한 곳으로 모아주는 역할을 수행
- 스위치와 허브의 기능을 같이 하면 스위칭 허브라고 부르기도 하고 4계층이나 3계층의 역할까지 수행하는 스위치를 L3또는 L4스위치라고 함
- 라우터: 외부 네트워크와 통신하기 위한 장비
- 정확한 방향으로 데이터가 전송되도록 하고 최적의 경로로 데이터를 포워딩
- 로드밸런서
- 4계층 장비
- 애플리케이션 계층에서 애플리케이션 프로토콜의 특징을 이해하고 동작하는 로드밸런서를 ADC(Application Delivery Controller)라고 함
- 포트 주소를 확인하는 동시에 IP변환도 수행
- 웹 서버를 구축할 때 많이 사용하는데 동일한 역할을 수행하는 웹 서버를 여러 대 만들고자 하는 경우 로드 밸런서를 웹 서버 앞에 두고 웹 서버를 여러 대 만든 다음 대표IP는 로드밸런서에게 부여하고 로드밸런서가 요청이 오면 웹 서버를 지정해서 전송하도록 함
- 이런 원리로 동작하는 소프트웨어 중 하나가 nginx
- 로드밸런서를 이용하게 되면 서비스 헬스 체크나 대용량 세션 처리 기능을 사용 가능
- 보안장비
- 방화벽이나 IPS 등의 장비 또는 소프트웨어
- 방화벽: OSI 7계층 중 4계층에서 동작해서 패킷의 3, 4, 계층 정보를 확인하고 패킷을 정책과 비교해서 버리거나 포워딩함
- 공유기
- 2계층 스위치, 3계층 라우터, 4계층 NAT와 간단한 방화벽 기능을 모아높은 장비
- 내부는 스위치와 무선AP, 라우터 부분으로 구성됨
- 모뎀
- 공유의 LAN포트와 WAN 포트는 일반 이더넷이어서 100m 이상 먼 거리로 데이터를 보내지 못하기 때문에 먼거리 통신을 위해서 모뎀이 필요
네트워크 통신
네트워크에서 출발지에서 목적지로 데이터를 전송할 때 사용하는 통신 방식
- unicast
- 1:1통신, 출발지와 목적지가 명확히 하나로 정해져 있는 통신 방식
- 대다수의 통신은 unicast
- broadcast
- 목적지 주소가 모든으로 표기되어 있는 통신 방식
- unicast로 통신하기 전에 상대방의 정확한 위치를 알기 위해서 사용
- 로컬 네트워크에서 모든 호스트의 패킷을 전달해야 할 때 사용
- multicast
- multicast 그룹 주소를 이용해서 해당 그룹에 속한 다수의 호스트로 패킷을 전송하기 위한 통신 방식
- IPTV와 같은 실시간 방송을 볼 때 사용하고 사내 방송이나 증권 시세 전송과 같이 단방향으로 다수에게 같은 내용을 전송할 때 사용
- anycast
- 주소가 같은 호스트 중에서 가장 가깝거나 가장 효율적으로 서비스할 수 있는 호스트와 통신하는 방식
- 도메인을 이용해서 인터넷을 할 때 가장 가까운 DNS 서버를 찾을 때 사용
- IPv6에서는 브로드캐스트라는 용어 대신 링크 로컬 멀티캐스트라고 함
MAC Address
- 주소 체계
- 변경할 수 없도록 하드웨어 고정되어 출하
- 모든 네트워크 장비에는 MAC 주소를 할당해야 함
- 한 제조업체에 하나 이상의 주소 풀을 주고 그 안에서 자체적으로 할당
- 48비트로 구성되는데 앞의 24비트가 제조회사 코드(OUI)이고 뒤의 24비트(UAA)는 제조사에서 자체적으로 할당
- 고유하지 않을 수 있는데 이유는 제조사의 실수나 코드의 부족 떄문인데 동일 네트워크 안에서만 같지 않으면 통신하는데 문제가 없음
- ROM 고정되서 변경할 수 없도록 출하가 되지만 이 주소도 메모리에 적재되서 사용되므로 MAC주소를 변경해서 사용하는 것이 가능
IP Address
- IPv4: 32비트로 만들고 표기할 때는 4개의 Octet(8비트)으로 나누고 각 Octet은 .으로 구분
- 각 Octet은 10진수로 표기
- 2개 부분으로 구성:
- 네트워크 부분: 호스트들을 모은 네트워크를 지칭하는 주소, 네트워크 주소가 같으면 같은 로컬 네트워크
- 호스트 부분: 하나의 네트워크내에 존재하는 호스트를 구분하기 위한 주소
- 네트워크 부분과 호스트 부분을 구분하는 경계점이 고정이 아님
- 호스트 IP 개수에 따라 네트워크 크기를 다르게 할당 가능,이를 위해서 클래스라는 개념을 도입
- A 클래스는 약 1600만개의 IP주소를 가질 수 있음. 첫번째 점이 경계
- B 클래스는 65536개의 IP주소를 가질 수 있음. 두번째 점이 경계
- C 클래스는 256개의 IP주소를 가질 수 있음. 세번째 점이 경계
- 최근에는 조금 더 세밀하고 네트워크와 호스트 부분을 설정할 수 있음
- 사용 가능한 IP범위를 할 때도 이를 이용
- 처음 IPv4를 만들 때 각 클래스 별로 별도의 주소 블록을 할당
- A Class는 맨 앞 비트가 0으로 시작: 0.0.0.0 ~ 127.255.255.255
- B Class는 맨 앞 두 비트가 10으로 시작: 128.0.0.0 ~ 191.255.255.255
- C Class는 맨 앞 세 비트가 110으로 시작: 192.0.0.0 ~ 223.255.255.255
- 만일 IP주소가 192.168.202.207이라면 기본적으로 C클래스
- 네트워크 주소: 192.168.202.0
- 브로드캐스트주소: 192.168.202.255
- 실제 사용 가능한 IP 범위: 192.168.202.1 ~ 192.168.202.254 가 됨
- 이를 조금 더 세분화시켜서 비트 단위로 분할 할 수 있는데 이를 서브네팅이라고 함
- IP 주소 부족 문제 해결
- 인터넷을 사용하는 호스트 숫자가 폭발적으로 증가해서 IP주소가 부족해지는 문제가 발생
- 이를 해결하기 위해서 가장 먼저 도입한 것은 클래스리스, 즉 CIDR
- 두번째 도입으로 NAT와 사설IP주소
- 세번째 도입 IPv6
- 클래스리스
- 기존 클래스의 개념을 없앤 것으로 네트워크를 원하는 단위로 분할 할 수 있도록 한 것
- 이를 위해서 subnet mask 라는 개념을 도입
- subnet mask는 동일한 네트워크 크기를 표현하기 위한 주소
- subnet mask를 표현하는 방법은 비트 수를 기재하는 방법과 10진수로 표현하는 방법 2가지
- IP Address/비트수 또는 IP Address 10진수로 표기
- 비트수로 표시하면 비트수만큼 같으면 동일한 네트워크로 간주, 10진수로 표현하면 이진수로 변환해서 1이 있는 부분까지가 동일하면 동일네트워크 간주
- 라우터나 컴퓨터에 IP를 설정할 때 이 방식을 사용
- 비트 수로 설정하지 않고 10진수로 설정
- 네트워크를 설정할 때는 네트워크 대역안에 있는 어떤 IP주소를 할당해도 동일하게 적용
- 컴퓨터의 IP를 설정할 때는 동일 네트워크 대역 안에서 정확하게 IP를 할당해야 함
- 현재 컴퓨터의 IP는 192.168.202.207 서브넷마스크는 255.255.240.0(11111111.11111111.11110000.00000000)
- 즉 192.168.202.207/20로 표기
- 라우터의 네트워크 설정을 한다면 192.168.200.0 255.255.255.240 으로 해야 하지만 이 주소 풀이 192.168.200.0 ~ 192.168.215.255 임 또는 192.168.201.1 255.255.240.0
- 필요한 크개돌 분할하는 작업 subnetting
- 네트워크 사용자 입장에서 서브네팅이 중요한 것은 서브네팅된 주소를 보고 사용할 수 있는 IP를 할당해야 함
- 네트워크 설계자 입장에서는 호스트의 개수를 파악해서 적절한 서브네팅 작업을 해줘야 함
- 방화벽을 설정할 때도 서브네팅이 필요함
- 모든 컴퓨털를 지칭 0.0.0.0/0 웹 애플리케이션 서버가 보통 이렇게 설정
- 컴퓨터 1대를 지칭 IP/32 데이터베이스 서버의 경우 이렇게 설정하는 경우가 많음
- 일정 그룹의 컴퓨터를 지칭 네트워크주소/크기 애플리케이션 서버가 여러 대인 경우 데이터베이스는 이런식으로 설정
- 퍼블릭 클라우드의 대부분 동일 네트워크 내에서의 통신 비용을 지불하지 않음
- 퍼블릭 클라우드에서는 직접 설정하기 보다는 동일한 VPC로 묶으면 이 작업을 대신 수행해줌
- Public IP와 Private IP
- 인터넷에 접속을 하려면 IP주소가 있어야 함
- 인터넷을 할 때 사용할 수 있는 IP주주소를 Public IP라고 함
- 인터넷을 연결하지 않고 네트워크를 구성하기 위해서 사용하는 IP주소를 Privcate IP라고 함
- 인터넷에서 접속할려면 통신 사업자로부터 IP주소를 할당받거나 IP 할당 기관(KISA)에서 인터넷 독립기관 주소를 할당받은 후 할 수 있는데 직접 할당받는 것은 절차가 복잡하기 때문에 대부분은 통신 사업자로부터 할당을 받음
- 인터넷에 접속하지 않거나 NAT(Network Address Translation) 기술을 사용할 경우 Private IP를 이용
- Private IP를 가지고는 인터넷을 할 수 없지만 NAT 장비에서 Public IP로 변경해서 인터넷에 접속이 가능
- Private IP 대역
- 10.0.0.0/8 10.0.0.0 ~ 10.255.255.255
- 172.16.0.0/12 172.16.0.0 ~ 172.31.255.255
- 192.168.0.0/16 192.168.0.0 ~ 192.168.255.255
- 회사 내부에서 Private Network을 구축할 때 보안 사으이 문제나 IP공유를 위해서 NAT를 사용하는데 이때 다른 사용자와 중복된 IP를 사용하면 안되는데 다른 사용자가 사용하고 있는 Public IP를 내부 네트워크의 IP로 할당을 하면 인터넷은 문제가 없지만 그 IP를 가진 컴퓨터와 통신은 안됨
- Bogon IP
- 사용할 수 없는 IP 주소로 IANA(IP주소를 할당하는 최상위 기관) 가 여러가지 목적으로 예약해 높아서 Public IP로 사용할 수 없는 IP
- 이 주소를 이용한 네트워크 접속 시도가 있을 때는 IP Spoofing(주소를 변조해서 공격)일 가능성이 높으므로 필터링 해야 함
- 0.0.0.0/8 : This Network
- 10.0.0.0/8 : Private IP
- 100.64.0.0/10 : 캐리어 그레이드 NAT( 통신 사업자가 Private IP를 할다앟기 위해서 사용)
- 127.0.0.0/8 : Loop Back Address
- 169.254.0.0/16 : 링크 로컬
- 192.0.0.0/24 : IETF 프로토콜 할당
- 192.0.2.0/24 : 테스트용
- 192.168.0.0/16 : Private IP
- 224.0.0.0/4 : 멀티캐스트 예약
- 255.255.255.255/32 : 브로드캐스트
- IP Address 발신자 확인 가능 https://whois.kisa.or.kr
TCP와 UDP
- 4계층 프로토콜
- 포트가 이 계층에서 제공하는 주소
- 애플리케이션에서 사용하는 프로세스를 정확히 찾아가고 데이터를 분할한 패킷을 잘 쪼개고 조립하는 역할을 수행
- HTTP TCP는 90, HTTPS TCP는 443, SMTP TCP는 25 이런 식으로 알려진 포트를 Well Known 포트라 하고 IANA에서 등록해놓았고 1023 이하의 포트번호를 사용
- 애플리케이션에서도 IANA에 포트 번호를 등록할 수 있는데 이 때는 1024 ~ 49151 포트를 사용
- MySQL이나 MariaDB는 3306 Oracle은 1521 MongoDB는 27017 Django는 8000 Tomcat 8080
- 자주 사용하는 Application은 이 포트번호를 기억을 해두는 것이 좋음
- 49152 ~ 65535까지는 자동으로 할당되거나 Private 용도로 클라이언트의 임시 포트 번호로 사용
- TCP
- 신뢰할 수 없는 공용망에서 정보 유실없는 통신을 보장하기 위해 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷이 잘 전송되었는지 확인하는 기능을 가진 프로토콜
- 송신자와 수신자가 3개의 패킷을 주고 받아야 한다면 송신자 측에서 1번 패킷을 전송하면 수신자 측에서 1번을 잘 받으면 2번을 요청하고 송신자 측에서 2번을 전송하고 수신자 측에서 2번을 전송받았다면 3번을 요청을 하고 송신자에서 3번을 전송하고 수신자 측에서 3번을 받으면 데이터를 전부 받았다고 알려주고 통신을 종료
- 유실 없는 안전한 통신을 위해서 통신 시작 전에 사전 연결 작업을 수행, 클라이언트가 서버에게 Syn 신호를 전송하고 서버는 Syn과 Ack를 전송하고 다시 클라이언트는 Ack를 전송해서 연결을 수행
- 네트워크 프로그램을 직접 만든다면 중요한 데이터 전송은 반드시 TCP 방식을 사용해야
- UDP
- 사전 연결 작업을 수행하지 않고 일방적으로 데이터를 전송하는 프로토콜
- 음성 데이터나 실시간 스트리밍과 같이 시간에 민감한 프로토콜이나 애플리케이션을 만들 때 사용하고 사내 방송이나 증권 시세 데이터 전송에 사용하는 멀티캐스트 환경에서 사용
- 중요하지 않은 데이터 전송이나 단방향 전송을 하는 애플리케이션을 만들 때 사용
스위치
스위치
- 2계층 주소인 MAC Address 기반으로 동작하는 장비
- 아무 설정 없이 네트워크에 연결해도 MAC Address를 기반으로 패킷을 전달하는 기본 동작을 수행할 수 있음
- 기본 동작 이외에도 한 대의 장비에서 논리적으로 네트워크를 분리할 수 있는 VLAN기능과 네트워크 루프를 방지하는 스패닝 트리 프로토콜(STP)같은 기능을 기본적으로 가지고 있음
- MAC Address Table을 만들어서 어떤 포트에 어떤 MAC Address를 가진 호스트가 연결되어 있는지 학습을 할 수 있음
- Flooding -> Address Learning -> Forwarding/Filtering의 3가지 동작으로 설명이 가능
- Flooding:
- 스위치는 켜지게 되면 네트워크 관련 정보가 하나도 없음. 이 상태에서는 스위치는 허브처럼 동작. 스위치가 허브처럼 모든 포트로 패킷을 흘리는 동작을 플러딩이라함
- 새로 부팅하지 않았는데도 자꾸 플러딩이 일어나면 스위치가 정상적으로 동작하지 않거나 주변에서 공격이 수행되는 상황
- Address Learning:
- 모르는 MAC Address로 데이터를 전송하라고 하면 일단 플러딩을 수행하고 데이터를 전송하는 MAC Address를 주소 테이블에 기록을 함
- Forwarding/Filtering
- 패킷이 스위치에 들어오면 도착지 MAC Address를 확인하고 자신이 가진 주소 테이블과 비교해서 맞는 정보가 있는 해당 포트로 데이터를 전송하고 다른 포트로는 데이터를 전송하지 않음
VLAN
- 하나의 물리적인 스위치에서 여러 개의 네트워크를 나누어 사용할 수 있는 기능: Virtual Local Area Network
- VLAN을 나누게 되면 유니캐스트나 브로드캐스트로 다른 VLAN과 통신을 할 수 없음
- VLAN을 나누게 되면 VLAN 간에는 3계층 장비를 이용해서 통신을 해야 함
- 종류
- 포트 기반의 VLAN: 포트 단위로 VLAN을 생성
- MAC Address 기반의 VLAN: LAN을 이동하면서 사용하는 경우 MAC Address 기반으로 VLAN 생성
STP
- SPoF(Single Point of Failure: 단일 장애점)
- 하나의 요소 때문에 장애가 발생한 경우 전체 시스템에 장애가 발생하는 것
- 네트워크에서도 하나의 장비 고장으로 전체 네트워크가 마비되는 것을 막기 위해서 이중화 또는 다중화된 네트워크를 디자인하고 구성
- 여러 개의 switch로 네트워크를 디자인하게 되면 패킷이 잘못하면 네트워크를 따라 계속 전송되는 일이 발생할 수 있음
- 루프 구조의 switch 연결이 있으면 계속해서 데이터를 전송할 수 있음
- 브로드캐스트 스톰
- 루프 구조를 가진 네트워크에서 브로드캐스트 전송을 하는 경우 각 스위치는 데이터가 들어온 포트를 제외하고 모든 포트에 데이터를 전송
- 이 경우 케이블을 제거하기 전까지 데이터를 계속 전송
- MAC 러닝 중복 문제
- Switch는 출발지의 MAC Address를 가지고 테이블을 구성하는데 여기서 출발지와 실제 데이터를 전송받은 곳의 MAC Address가 다른 경우 잘못된 학습을 할 수 있음
- Spanning Tree Protocol
- 스위치가 루프를 확인하고 적절히 포트를 사용하지 못하도록 하는 것
네트워크 장비
Switch : 2계층 장비
- MAC Address를 학습해서 학습한 포트에 전송할 때는 플러딩을 하지 않고 유니캐스트 형태로 전송
- VLAN: 논리적으로 네트워크 분할 가능
- 분할이 되면 서로 다른 VLAN 끼리는 직접 통신이 불가능
- 3계층 장비를 이용해 통신을 해야함
- 클라우드에서는 VPC라고 부름: 논리적으로 하나의 네트워크를 만드는 것
- 이중화: STP(Spanning Tree Protocol)
- 단일 장애점: 한 곳에 장애가 발생했을 때 시스템 전체가 중단되는 경우
- 단일 장애점을 해결하는 방법은 이중화와 같은 다중화를 구현
- 이중화나 삼중화를 하게 되면 루프가 만들어지거나 불필요한 데이터 전송할 수 있기 때문에 루프가 발생할 가능성이 있는 곳에서 포트를 사용하지 못하도록 해서 해결 - STP
Router
- 3계층에서 동작하는 네트워크 장비 중 하나
- 경로를 지정해주는 장비
- 라우터에 들어오는 패킷의 목적지 IP 주소를 확인하고 자신이 가진 Route 정보를 이용해서 패킷을 최적의 경로로 포워딩(출발지의 IP Address + Subnet Mask를 가지고 패킷을 전달)
- 라우터는 다른 네트워크에 접근할 때 필수 장비
- L3 Switch
- Switch는 2계층 장비
- 3계층에서 동작하는 Switch를 L3 Switch라고 부름
- 라우터의 기능은 Software로 구현하고 스위치는 하드웨어로 구현하는 방식
- 최근에는 기술이 발달해서 L3 Switch와 Router를 기능상으로 구별하는 것은 거의 불가능
라우터의 동작 방식과 역할
- 패킷이 라우터로 들어오면 도착지 IP주소와 라우팅 테이블을 비교해서 최선의 경로로 패킷을 전달하는 역할을 수행
- 동작 과정은 경로 지정 -> 브로드캐스트 컨트롤 -> 프로토콜 변환(최근에는 거의 모든 네트워크에서 이더넷을 사용하기 때문에 이 역할이 거의 유명무실해짐)
경로 지정
- 라우터가 패킷을 처리할 때는 크게 두가지 작업을 수행
- 경로 정보를 얻어서 경로 정보를 정리하는 역할
- 정리된 경로 정보를 기반으로 패킷을 포워딩하는 역할
- Hop Count: 경로를 찾기 위해서 지나가야 하는 라우터의 개수
- R1 - R2 - R3 - R4: R1에서 R4로 데이터를 전송하는 경우 2 Hop
- TTL(Time To Live): IP헤더에 부착된 필드인데 패킷이 네트워크에서 살아 있을 수 있는 시간
라우팅 방법
- 다이렉트 커넥티드
- IP주소를 입력할 때 사용된 IP주소와 Subnet mask로 입력을 하는데 라우터는 이 정보를 가지고 자동으로 라우팅 테이블을 만들 수 있는 경우
- 인접한 라우터의 네트워크의 경우
- 직접 연결되어 있는 경우 주기적으로 네트워크 정보를 주고받기 때문에 별도로 학습을 할 필요가 없음
- 이렇게 생성된 라우팅 정보는 삭제할 수 없음
- static routing
- 관리자가 목적지 네트워크와 다음 HOP을 직접 지정해서 경로 정보를 입력하는 것이 static routing
- 변화가 적은 네트워크에서 네트워크를 손쉽게 관리할 수 있는 방법
- 설정 문법
- 네트워크 장비:
ip route NETWORK NETMASK(SUBNETMASK 반대) NEXTHOP
- 모든 곳에 전송을 할 때는 192.168.0.1을 통해서 가도록 설정:
ip route 0.0.0.0 0.0.0.0 192.168.0.1
- 리눅스:
route add -net NETWORK/Prefix gw NEXTHOP
route add -net 0.0.0.0/0 gw 192.168.0.1
- dynamic routing
- static routing은 바로 앞 라우터의 주소만 지정하기 때문에 라우터 너머의 다른 라우터의 상태 정보를 파악할 수 없어서 라우터 사이의 회선이나 라우터에 장애가 발생하면 장애 상황을 파악하고 대체 경로로 패킷을 보낼 수 없음
- 다른 라우터와 라우팅 정보를 주기적으로 교환을 해서 전체 네트워크 정보를 학습하는 방식
- 네트워크에 장애가 발생하더라도 주기를 지나면 다른 라우팅 정보를 학습해서 대체 경로를 패킷을 전송할 수 있음
- 실제 대다수의 네트워크는 다이나믹 라우팅을 사용
Dynamic Routing Protocol
- AS(Autonomous System - 자율 시스템: 라우팅이 자동으로 이루어지는 하나의 네트워크 묶음 - 인터넷 사업자들이 하나 이상의 AS를 운영)
- AS를 기준으로 분류
- IGP(Interior Gateway Protocol): AS 내부에서 사용하는 라우팅 프로토콜
- Distance Vector(인접한 라우터로부터 라우팅 정보를 학습): Classful - RIPv1, IGRP, Classless - RIPv2
- Link State(라우터에 연결된 링크 상태를 서로 교환하고 각 네트워크 맵을 그리는 라우팅 프로토콜): OSPF, IS-IS
- Advanced Distance Vector: EIGRP
- EGP(External Gateway Protocol): AS 간 통신을 위해서 사용하는 라우팅 프로토콜
통신을 도와주는 기술
NAT(Network Address Translation)/PAT
- NAT는 하나의 네트워크 주소에 다른 하나의 네트워크 주소를 1:1로 변환해주는 기술
- PAT(Port Address Translation)는 공식 용어는 NAPT
- 용도와 필요성
- IPv4 주소 고갈 문제의 솔루션
- 보안 문제: 외부와 통신할 때 내부IP를 다른 IP로 변환해서 통신하면 내부IP주소를 알 수 없음
- IP주소 체계가 같은 두 개의 네트워크 간 통신이 가능하도록 해줌, 내부 규칙이 동일한 2개의 네트워크가 통신을 가능하도록 해줌
- 불필요한 설정 변경을 줄일 수 있음
- 오버헤드가 발생
- SNAT와 DNAT
- SNAT: 출발지 주소를 변경하는 NAT
- DNAT: 도차지 주소를 변경하는 NAT
- 동적 NAT와 정적 NAT
- 동적 NAT: 변환되는 IP가 계속 변경
- 정적 NAT: 변환되는 IP가 고정
DNS(Domain Name Service)
- Domain: IP주소에 대한 별명, Network 계층에서는 IP주소를 이용해서 컴퓨터를 찾아감
- IP주소는 숫자로 되어 있어서 인간이 기억하기 어렵고 논리적인 주소라서 변경될 가능성이 있음
- 문자로 된 도메인을 사용하면 인간이 기억하기 쉬워지고 IP주소가 변경이 되더라도 도메인과 연결만 해주면 동일한 도메인으로 계속 접속 가능
- DNS는 도메인 주소를 사용해서 서비스를 요청하면 IP주소로 변환해주는 서비스
- 최근에 클라우드 기반 인프라 구성이 많아지면서 인프라 빈번히 변경되어 DNS 설계가 점점 중요해지고 MSA(Micro Service Architecture) 기반의 서비스 설계가 많아지면서 다수의 API를 이용하다보니 사용자의 호출뿐만 아니라 서비스가 API 호출이나 인터페이스가 많아져서 Domain의 역할이 더욱 중요해지고 있음
- 구조
- 역트리 구조로 최상위 루트부터 Top-Level 도메인, Second-Level 도메인, Third-Level 도메인과 같이 단계적으로 찾아감
- www(Third).naver(Second Level).com(Top Level)
- 도메인의 계층은 최대 128계층까지 구성 가능
- 계층별 길이는 최대 63바이트
- 도메인 구분자 .을 포함해서 전체 도메인의 최대 길이는 255바이트
- 문자는 알파벳, 숫자, - 만 가능
- 루트 도메인은 도메인을 구성하는 최상위 도메인으로 이 도메인을 가지고 DNS 서버에 가서 찾는데 없으면 루트 DNS(전 세계에 13개)에 쿼리
- Top Level Domain: 6가지 유형으로 구분
- generic(com, edu 등)
- country-code(kr, uk, jp 등)
- sponsored(특정 목적을 가진 스폰서를 두는 경우 - 민족 공동체나 전문가 집단: asia, museum 등)
- infrastructure(운용상 중요한 인프라 식별작 공간을 위해서 사용)
- generic-restricted(특정 기준을 충족하는 사람이나 단체가 사용 - biz, name, pro 등)
- test
- DNS 동작 방식
- 기본적으로는 DNS 서버에 쿼리를 수행
- DNS 서버 없이 로컬에서 도메인과 IP주소를 직접 설정해서 사용할 수 있음
- 이 정보는 hosts 파일에 기록이 되는데 여기에 기록된 정보를 항상 DNS 캐시에 저장됨
- 도메인을 쿼리하면 DNS 캐시를 조사하고 없으면 DNS 서버에 문의
- 윈도우에서 캐시된 내용 확인:
ipconfig /displaydns
- DNS 주요 레코드
- A : 도메인 주소를 Ipv4로 매핑
- AAAA : 도메인 주소를 IPv6로 매핑
- CNAME : 별칭 이름을 사용하게 해주는 레코드
- CNAME 사용 이유 : 2개의 도메인을 하나의 웹 애플리케이션에 연결할려고 함. adam.net과 www.adam.net을 매핑하고자 함. A 레코드를 이용해서 매핑을 하게 되면 2번 매핑을 하는데 이 때 IP가 수정되면 2번 변경해야함. adam.net은 A레코드로 매핑하고 www.adam.net은 adam.net의 별명으로 만들면 IP가 수정되는 경우 adam.net만 수정하면 됨
- 화이트 도메인
- KISA에서는 불법적인 방법으로 발송되는 스팸메일 차단활동을 수행
- 정상적인 도메인을 인증 관리하는 제도가 화이트도메인
- 비정상적인 스팸메일을 발송하는 사이트를 RBL(Realtime Blackhole List, Blocking List)라고 함
- KISA의 RBL 사이트에 화이트 도메인으로 등록을 하면 대량의 메일을 발송해도 문제가 되지 않음
- 한글 도메인
- 한글을 punycode로 변환해서 등록
- 유니코드로 변환해서 등록하는 것인데 이 코드는 xn으로 시작함
- 변환 코드는 한국인터넷진흥원에서 알 수 있음
- xn–ok0bx10ba
GSLB
- DNS에서 동일한 레코드이름으로 서로 다른 IP주소를 동시에 설정하는 것
- 이렇게 하면 도메인 질의에 따라 응답받는 IP주소를 나눌 수 있는데 이것이 로드밸런싱
- DNS만으로 이 구성을 할 수 없는데 DNS는 연결된 호스트의 비정상적인 상황을 감지하지 못함
- GSLB(Global Server/Service Load Balancing)는 등록된 도메인에 연결된 서비스가 정상적인지 헬스 체크 기능을 가지고 있음
- 구성방법 2가지로 도메인 자체를 GSLB로 구성할 수 있고 도메인 내의 특정 레코드만 GSLB로 구성
DHCP
- 네트워크 정보를 호스트에 적용하려면 사용자가 직접 IP정보를 설정하거나 IP정보를 할당해주는 서버를 이용해 자동으로 설정을 해야함
- 수동으로 네트워크 정보를 설정하는 것을 정적 할당이라하고 자동으로 설정하는 것을 동적 할당이라고 함
- 일반적으로 데이터 센터의 서버 팜과 같은 운영망에서는 주로 정적 할당을 수행하지만 일반적인 PC사용자들은 동적 할당을 사용
- 네트워크 정보를 동적으로 할당하는데 사용하는 프로토콜이 DHCP(Dynamic Host Configuration)
- DHCP를 사용하면 사용자가 직접 입력해야하는 IP주소, 서브넷 마스크, 게이트웨이, DNS정보를 자동으로 할당받아서 사용할 수 있음
- 별도의 설정 과정이 없기 때문에 사용자와 관리자 모두 편리하게 네트워크에 접속할 수 있고 사용하지 않는 IP 정보는 회수되어 사용하는 경우에만 재할당되기 때문에 사용자 이동이 많고 한정된 IP주소를 가진 경우 유용하게 사용할 수 있음
- DHCP 서버 구성
- 윈도우나 리눅스 서버의 DHCP 데몬을 이용해서 구현이 가능
- 스위치, 라우터, 방화벽, VPN같은 네트워크, 보안 장비에서도 구현 가능
- 설정 값:
- IP 주소 풀: 클라이언트에 할당할 IP주소 범위
- 예외 주소 풀: 할당하지 않을 대역
- 임대 시간: 기본 임대 시간
- 서브넷 마스크
- 게이트웨이
- DNS
- 우분투 리눅스에서 DHCP 서버 구성
- 패키지 설치:
sudo apt-get install isc-dhcp-server
- 설정 파일에 주소 풀을 설정: /etc/dhcp/dhcpd.conf
subnet 네트워크주소 netmask 서브넷마스크{ range 시작IP 종료IP;}
- 네트워크 노드 추가: /etc/default/isc-dhcp-server
- eth1에 IP를 할당: 일종의 Gateway가 되서 다른 컴퓨터들이 이 IP에 접속하면 동적으로 IP를 할당받음
sudo apt install net-tools
sudo ifconfig eth1 192.168.0.1
- 서버 재시작
sudo /etc/init.d/isc-dhcp-server restart