위의 구조로 된 테이블이 있다. id가 3인 데이터의 val은 "A  "이다 (뒤에 공백 2칸).

SELECT
	*
FROM
	search
WHERE
	val = "A";

위와 같이 SELECT 하면 결과는 id가 1, 2, 3인 데이터가 모두 검색된다.

공백과 대소문자를 판독할 수 없기 때문에 모든 a를 가져온 것이다.

SELECT
	*
FROM
	search
WHERE
	val = BINARY "A";

하지만 앞에 BINARY를 붙여 SELECT 한다면 완벽하게 구분해서 id가 1인 데이터만 출력된다.

DATA WAREHOUSE

  • 데이터에 대한 스키마를 만든다.
  • 스키마에 따라 쿼리를 보내 데이터를 얻는 방식
  • 데이터를 스키마로 변환하는 과정이 중요함.
  • 사용할 수 없는 데이터를 걸러 내기 때문에 시간이 많이 걸림.
  • 추출 및 트랜스폼을 미리 다 해 놓는다(ETL: Extract, Transform and Load).

DATA LAKE

  • 스토리지처럼 데이터를 있는 그대로(Raw) 가지고 있음.
  • 데이터를 용도에 따라 변환을 해줌.
  • 추출해 뒀다가 필요할 때 로딩하고 트랜스폼한다(ELT: Extract, Load and Transform).

No-SQL이란?

기존의 정형화(Structured) 되어 있는 데이터 뿐만 아니라 비정형화(Unstructured) 데이터도 모두 저장 가능한 DB 서비스.

No-SQL의 종류 및 제품

1. Key-Value Database

  • Amazon DynamoDB
  • Redis DB(구축 실습)

2. Document Database

  • Google Cloud Firestore
  • MongoDB(구축 실습)
  • CougchDB

3. Column Family Database

  • Google BigTable
  • Hbase
  • Cassandra

4. Graph Database

  • Allegro Database
  • Neo4J

No-SQL의 장점

  • 오픈 소스와 엔터프라이즈 두 가지의 라이선스를 제공.
  • 클라우드 컴퓨팅에서의 새로운 저장 기술이 필요하게 되었는데 No-SQL이 가장 적합.
  • 소스를 직접 수정할 수 있기 때문에 유연성 있는 개발 가능.
  • 관계형 데이터베이스와는 달리 틀(Schema)을 만들 필요가 없고, 2~300개의 테이블이 생성되는 비즈니스 환경에서 시간과 비용적 측면에서 이점이 있다.
  • 빅데이터를 빠르게 처리할 수 있으며 No-SQL 기술을 잘 이해하고 분석, 설계, 구축한다면 관계형 데이터베이스 대비3배 이상의 성능을 기대할 수 있다.

Key-Value DB (Redis DB)

In-Memory 기반의 데이터 저장 구조로 DRAM에 빅데이터를 받아 처리할 수 있으며, 휘발성 메모리를 사용하므로 예기치 못한 오류 발생 시 데이터 유실의 위험이 존재하고 저장의 목적보다는 데이터의 처리를 위해 사용한다.

메인 DB로 사용하는 대부분의 제품들은 파일 저장 방식이기 때문에 디스크 IO 문제로 인해 발생하는 성능 지연 문제를 해결하기 위해 Key-Value DB를 같이 사용한다.

Document DB (MongoDB)

MongoDB는 SQL 대신 JavaScript를 활용할 수 있어 기술을 처음 배우는 사람들의 부담을 덜어주었다.

MongoDB는 RDBMS에서 테이블을 이용해 정보를 저장하는 방식과는 달리 웹 서버와 통신할 때 자주 쓰이는 JSON(JavScript Object Notation)과 유사한 형태로 저장하는 방식을 채용하고 있다.

MongoDB의 또 하나의 큰 장점은 *복제(Replicate)*샤딩(Sharding)을 기본적인 DBMS의 기능으로 제공하고 있다는 점이다.

RDBMS는 스키마를 자주 바꾸기 힘들지만 NoSQL은 가능하기에 자주 바꿔야 하는 환경 또는 분산 컴퓨팅 환경에서 사용했을 때 이점이 있다.

 

*Replicate : 데이터베이스를 복제해서 저장해 뒀다가 기존 데이터베이스에 문제가 생겨 연결이 끊기면 복제본을 이용해서 서비스를 지속할 수 있다.

 

*Sharding : 데이터베이스에 저장된 정보의 양이 많아지고, 읽고 쓰는 양이 많아지면 필연적으로 데이터베이스가 주어진 작업을 수행하는 속도가 느려진다. 데이터를 읽고 쓰는 속도를 향상시키는 방식 중 하나가 바로 정보를 분산해서 여러 대의 서버 데이터베이스에 저장하는 샤딩이다.

Column Family DB

RDBMS는 블록 단위로 읽기 때문에 데이터의 양이 많을 경우 처리 속도가 느리지만 Column Family는 하나의 Column 안에서 검색하기 때문에 처리 속도가 훨씬 빠르다. 테이블 간 조인을 지원하지 않기 때문에 하나의 row에 아주 많은 column이 들어가게 된다. 다음과 같은 경우에 활용을 고려하면 좋다.

  • 데이터베이스에 쓰기 작업이 많은 애플리케이션
  • 지리적으로 여러 데이터 센터에 분산되어 있는 애플리케이션
  • 복제본 데이터가 단기적으로 불일치하더라도 큰 문제가 없는 애플리케이션
  • 동적 필드를 처리하는 애플리케이션
  • 수백만 테라바이트 정도의 대용량 데이터를 처리할 수 있는 애플리케이션

 


No-SQL 정보 사이트 : https://hostingdata.co.uk/nosql-database/

 

NoSQL Databases List by Hosting Data - Updated 2021

The ultimate reference for NOSQL Database Management Systems. Includes Events, Links, Tools, News, Forums, Books, and much more...

hostingdata.co.uk

 

SQL 용어 관계형 데이터베이스 용어 설명
튜플 또는 레코드 하나의 항목을 대표하는 데이터
컬럼 속성(attribute) 또는 필드 튜플의 이름 요소(ex: name, useq)
테이블 관계 또는 기초 관계변수 같은 속성을 공유하는 튜플의 모임
뷰 또는 결과 집합 파생 관계변수 튜플들의 모임(질의어에 응답하는
RDBMS의 데이터 보고서

 

NAT의 경우는 Stateful이기 때문에 이런 처리가 필요없지만 ACL은 기본적으로 Stateless이기에 돌아오는 패킷을 허용하려면 Inbound와 Outbound에 ACL을 모두 따로 걸어줘야 하는데 이는 곧 시간 지연과 성능 저하로 이어지기 때문에 RACL, DACL 등을 사용하여 효율을 높이는 편이 낫다.

RACL

패킷이 내부망에서 외부 네트워크로 전송될 때, 돌아오는 패킷을 허용하기 위해 패킷의 상태 정보를 반사시켜 임시 ACL을 만드는 것을 말한다. 내부 사용자의 외부와의 통신을 위한 것이며, 내부에서는 제한없이 외부와 통신이 가능하지만 외부에서 내부로의 접속은 차단할 때 사용한다. Dyanamic Application (ex : FTP)처럼 Port Address가 변하는 상황에선 사용할 수 없다.

 

RACL 설정

이전의 ACL 제거 (필요 시)

R2(config)# no ip access-list extended acl-in

 

acl-out 설정

R2(config)# ip access-list extended acl-out

R2(config-ext-nacl)# permit tcp any any reflect myracl (outbound 시에 반영을 생성시킨다)

R2(config-ext-nacl)# permit udp any any reflect myracl

R2(config-ext-nacl)# permit icmp any any reflect myracl

R2(config-ext-nacl)# permit ip any any

 

acl-in 설정

R2(config)# ip access-list extended acl-in

R2(config-ext-nacl)# permit ospf host 1.1.23.3 any (OSPF 라우팅이 이루어지지 않으면 통신 자체가 불가능하기 때문에 허용해주어야 한다.)

R2(config-ext-nacl)# evaluate myracl

 

인터페이스에 적용

R2(config)# interface e0/1

R2(config-subif)# ip access-group acl-out out

R2(config-subif)# ip access-group acl-in in

 

RACL 동작 확인

R1에서 1.1.34.4로 핑과 텔넷을 해보면 성공적으로 연결된다.

생성된 반영에 의해서 돌아오는 패킷이 허용되었기 때문이다.

또한 텔넷 세션을 끊지 말고 R2에서 show ip access-lists 명령어를 사용해 보면 RACL에 의한 임시 ACL이 만들어져 적용되어 있음을 확인할 수 있다.

DACL

다이나믹 ACL을 락앤키(Lock and Key)라고도 한다. RACL은 주로 내부 사용자를 위한 것인 반면, DACL은 외부에 나가있는 직원들이 내부의 자원에 접속할 수 있도록 하는 것이다.

 

DACL에서 이용자를 인증하는 방법으로는 AAA 서버, 로컬 데이터베이스 또는 텔넷 패스워드를 이용하는 3가지 방식이 있다. 이중 AAA 서버를 사용하면 각 사용자 별로 정밀하게 인증하고, 정교한 트랙킹 기능을 제공한다. 그러나 텔넷 패스워드를 이용하는 방식은 패스워드만 알면 누구나 접속할 수 있으므로 보안성이 떨어진다.

DACL 설정

RACL 제거(필요 시)

R2(config)# no ip access-list extended acl-in

R2(config)# no ip access-list extended acl-out

R2(config)# interface fastethernet 0/0.23

R2(config-subif)# no ip access-group acl-out out

R2(config-subif)# no ip access-group acl-in in

 

Local Login 정보 설정

R2(config)# username admin password cisco

 

acl-in 설정

R2(config)# ip access-list extended acl-in

R2(config-ext-nacl)# permit ospf host 1.1.23.3 any (OSPF 패킷 허용)

R2(config-ext-nacl)# permit tcp any host 1.1.23.2 eq telnet (1.1.23.2로의 텔넷 접속 허용)

R2(config-ext-nacl)# dynamic applythis permit ip any any

 

인터페이스에 적용

R2(config)# interface e0/1

R2(config-subif)# ip access-group acl-in in

 

로그인 데이터베이스 지정 및 타임아웃 설정

R2(config)# line vty 0 4

R2(config-line)# login local

R2(config-line)# autocommand access-enable host timeout 10

'IT > Network Theory' 카테고리의 다른 글

DHCP(Dynamic Host Configuration Protocol)  (0) 2021.09.09
NAT(Network Address Translation)  (0) 2021.09.09
ACL(Access Control List) Configuration  (0) 2021.09.08
EGP - BGP  (0) 2021.09.08
IGP - Link State - OSPF  (0) 2021.09.08

개념

DHCP는 유무선 IP 환경에서 Host IP, Subnet Mask, Default Gateway IP, DNS Server IP, Lease Time 등의 다양한 네트워크 정보를 PC와 같은 이용자 단말에 동적으로 할당해주는 프로토콜로써 이용자가 이와 같은 네트워크 정보를 직접 설정할 필요 없이 자동으로 그 설정이 가능하기 때문에 네트워크 관리의 용이성을 제공한다.

DHCP를 통한 IP 주소 할당은 '임대'라는 개념을 가지고 있는데 이는 DHCP 서버가 IP 주소를 영구적으로 단말에 할당하는 것이 아니고 임대기간을 명시하여 그 기간 동안만 단말이 IP 주소를 사용하도록 하는 것이다. 임대기간 이후에도 계속 해당 IP 주소를 사용하고자 한다면 IP 주소 임대기간 연장을 DHCP 서버에 요청해야 한다. 또한 단말은 임대받은 IP 주소가 더 이상 필요치 않게 되면 IP 주소 반납 절차를 수행하게 된다.


주소 할당, 연장, 반납 절차를 나타낸 이미지이다. (출처 : netmanias)

주소 할당 절차 (IP Address Allocation Procedure) : DORA (Packet)


1. Discover
DHCP 클라이언트가 DHCP 서버를 찾기 위해 D-MAC을 FF:FF:FF:FF:FF:FF로 설정해서 브로드캐스트를 뿌려 Discover한다.
브로드캐스트로 DHCP 서버를 찾는 것이기 때문에 Client가 있는 2계층 네트워크 환경 안에 DHCP 서버가 존재해야 한다는 뜻이다.

2. Offer
브로드캐스트를 받은 DHCP 서버가 자신의 IP 주소와 임대해 줄 수 있는 IP 주소를 담아 브로드캐스트를 뿌려서 Client에게 임대를 제안한다.

3. Request
Client 측에서 해당 IP 주소를 임대하기로 하고 DHCP 서버에게 IP 주소 할당을 요청한다.
역시 브로드캐스팅으로 메시지를 전송하는데 그 이유는 아직 Client가 IP 주소를 할당받지 못했기 때문이다.

4. Ack
DHCP 서버에서 Ack와 함께 여러 네트워크 정보를 담아 Client에게 보낸다.

주소 연장 절차 (IP Address Renewal Procedure)

Client가 IP 주소를 할당 받았으므로 더 이상 Broadcast가 아닌 Unicast로 요청과 응답을 한다.
Client에서의 Request와 서버로부터의 Ack 순으로 절차가 진행된다.

주소 반납 절차 (IP Address Release Procedure)

단말을 로그오프하면 단말은 할당되었던 IP 주소를 반납하기 위해 DHCP 서버에 Release 메시지를 Unicast로 송신한다.


DHCP Server Configuration (Example)

Router(config)#ip dhcp pool netsec
Router(dhcp-config)#network 192.168.1.0 /24
Router(dhcp-config)#domain-name netsec.kr
Router(dhcp-config)#dns-server 8.8.8.8
Router(dhcp-config)#default-router 192.168.1.1
Router(dhcp-config)#exit
Router(config)#ip dhcp excluded-address 192.168.1.1

DHCP Client's Request (Example)

PC(config)#int e0/0
PC(config-if)#ip add dhcp

'IT > Network Theory' 카테고리의 다른 글

ACL(Reflexive ACL) & DACL(Dynamic ACL)  (0) 2021.09.09
NAT(Network Address Translation)  (0) 2021.09.09
ACL(Access Control List) Configuration  (0) 2021.09.08
EGP - BGP  (0) 2021.09.08
IGP - Link State - OSPF  (0) 2021.09.08

개념

NAT란 게이트웨이를 통과하는 패킷의 IP 헤더 안에 든 IP 주소값을 다른 주소로 바꾸는 기술이며, 사설 IP를 이용하는 호스트들이 인터넷에 접근하거나 다른 외부 네트워크에 접근할 수 있게 하기 위해 만들어졌다.

 

NAT는 Stateful인 것이 특징인데, 외부 네트워크에 보낸 패킷이 다시 Source Host가 있는 네트워크로 게이트웨이를 통해 들어올 때 가지고 있던 상태 정보로 별도의 처리 없이 Inbound가 가능하다는 의미이다.

 

프로세스

  1. 네트워크 장비(게이트웨이)에 NAT 설정
  2. 패킷이 게이트웨이를 통해 Outbound(S-NAT).
    호스트의 사설 IP를 공인 IP로 변경.
    변경 정보를 NAT Table에 저장.

  3. 나갔던 패킷이 다시 들어올 때 NAT Table을 조회해서 다시 원래 패킷으로 변경해서 Inbound(D-NAT).

 

S-NAT : Private Network에서 Public Network로 나가는 것.

D-NAT : Public Network에서 Private Network의 Host에 접근하는 것.

 

Stateful(ex : NAT) : 외부로 나갈 때 Source의 상태 정보가 기록되고 그 정보에 따라 돌아올 수 있다.

Stateless(ex : ACL) : 상태 정보가 없어서 나간 신호가 돌아올 수 없다.

 

NAT의 종류

 

Static NAT : 하나의 사설 IP와 하나의 공인 IP를 1:1로 Mapping하는 방식.

갖고 있는 공인 IP가 충분해야만(공인 IP 수 >= 호스트 수) 사용할 수 있으며, 사설 네트워크 내에 동작 중인 서버가 있을 경우에 서버는 고정 IP를 사용해야 하므로 Static NAT를 사용한다.

 

R1(config)#ip nat inside source static local-IP global-IP  : 사설 IP와 공인 IP가 고정적으로 변환되도록 설정

R1(config-if)#ip nat inside : 변환된 패킷이 들어오는 인터페이스에 지정 (라우터 기준)

R1(config-if)#ip nat outside : 변환된 패킷이 나가는 인터페이스에 지정

 

 

Dynamic NAT : 여러 개의 사설 IP와 1~ 개의 공인 IP 주소를 필요에 따라 동적으로(자동으로) Mapping한다.

 

 

NAT-PAT(NAPT) : NAT는 IP를 다루기에 L3, PAT(Port Address Translation)는 Port Number를 다루기에 L4이다.

적은 갯수의 공인 IP로 다수의 사설 IP를 매핑시킬 수 있으며, 각 공인 IP의 Port Address로 사설 네트워크의 Host들을 구분한다.

 


Dynamic NAT Topology

사전에 기본 설정은 필수이고 R2에서 1.16.3.0 네트워크로 Static Routing을 잡아주어야 한다.

 

pool 생성

R1(config)#ip nat pool pub_ip 1.16.12.1 1.16.12.62 prefix-length 26
R1(config)#ip nat inside source list 10 pool pub_ip

 

pool 생성 확인

Router(config)#do sh ip int br

 

인터페이스에 각각 NAT 적용

R1(config)#int e0/0
R1(config-if)#ip nat inside


R1(config-if)#int s1/0
R1(config-if)#ip nat outside

 

NAT 확인

PC6#ping 1.16.3.8

R1#sh ip nat translation (NAT Translation이 이루어진 로그 조회)

 

 

NAT Table 내용 삭제 방법 : R1#clear ip nat translation *

 

공부하는 데에 참고했던 netmanias 자료

https://www.netmanias.com/ko/?m=view&id=blog&no=5826&kw=nat

 

 

NAT (Network Address Translation) 소개 (RFC 3022/2663)

현재 국내 통신사업자는 유선 액세스(FTTH, Ethernet, DSL 등)를 제외한 (거의) 모든 액세스 망에 NAT 장비를 적용하고 있습니다.

www.netmanias.com

 

 

'IT > Network Theory' 카테고리의 다른 글

ACL(Reflexive ACL) & DACL(Dynamic ACL)  (0) 2021.09.09
DHCP(Dynamic Host Configuration Protocol)  (0) 2021.09.09
ACL(Access Control List) Configuration  (0) 2021.09.08
EGP - BGP  (0) 2021.09.08
IGP - Link State - OSPF  (0) 2021.09.08

Standard와 Extended의 생성 (Numeric)

  Standard Extended
기본 1 ~ 99 100 ~ 199
확장 1300 ~ 1699 2000 ~ 2699

Standard와 Extended의 생성 (Named)

R1(config)#ip access-list extended Http_ACL

R1(config-ext-nacl))#

R1(config)#int s1/0

R1(config-if)#ip access-group Http_ACL out

 

연습 Topology

Standard

Standard는 수신한 Packet의 Source IP만 확인하여 필터링한다.

 

R1(config)#access-list 10 permit host 192.168.26.6

R1(config)#int e0/0

R1(config-if)#ip access-group 10 out

R1(config-if)#do sh access-lists

R1(config-if)#do sh ip access-lists interface ethernet 0/0

 

ACL의 Default 설정은 모든 것을 deny하는 것이기 때문에 위와 같이 설정해주면 host 192.168.26.6의 out만 허용한다는 의미가 된다. Server5에서 192.168.26.6과 192.168.37.7에 각각 핑을 날려보고 결과를 확인해보면 26.6에서 돌아온 신호는 Ethernet 0/0을 통과해서 Server5까지 다시 돌아올 수 있지만 37.7에게 날린 핑은 돌아오는 과정에서 Ethernet 0/0에 걸려 있는 access-group 10 의 정책에 막혀서 Server5까지 도달하지 못하고 Drop된다.

 

R1(config-if)#no ip access-group 10 out : 인터페이스에 걸린 그룹 삭제

R1(config)#no access-list 10 : 정책 삭제

 

ACL을 제거할 때는 반드시 위와 같은 순서로 제거해야 한다.

Extended

Extended는 수신한 Packet의 Destination IP, Source IP, Protocol, Port 정보까지 필터링 속성에 포함할 수 있어서 Standard에 비해 가용성이 높다.

 

R1(config)#access-list 100 deny tcp 172.16.15.0 0.0.0.255 192.168.26.6 0.0.0.0 eq www

R1(config)#access-list 100 permit ip any any

R1(config)#int e0/0

R1(config-if)#ip access-group 100 in

 

위의 마스크 값을 보면 0.0.0.255와 0.0.0.0으로 조금 이상한데 이는 와일드 카드 마스크라고 하며, 원래의 마스크 값을 2진수로 변환하고 뒤집어 낸 결과값이다. 그 결과값에서 1은 어느 값이 들어와도 상관없는 것이고 0은 같은 값이 들어와야 한다는 의미를 지닌다.

eq www 부분은 80번 포트를 사용하는 www 서비스에 대한 접근을 제어하겠다고 가리키는 것.

 

any any는 0.0.0.0 255.255.255.255와 같은 의미로, 따로 제어한 사항 외의 모든 것에 대해 적용하겠다는 의미이다.

 

위의 ACL 프로세스를 정리하면 172.16.15.0/24 네트워크에서 192.168.26.6 서버의 80번 포트로 접근하려고 하는 Packet을 거부하고 Drop시키는 정책을 가진 access-list 100을 정의하고(1줄), 그 access-list 100에서 나머지 IP에 대한 접근은 허용하며(2줄), Ethernet 0/0 인터페이스에 그 제어 정책을 in으로 올려서 해당 인터페이스로 진입하는(in) Packet에 대해 정책을 적용시켜서 접근을 제어하겠다는 의미이다(3, 4줄).

 

 


정책의 순서가 중요하다. 만들어진 순서대로 필터링이 들어가기 때문에 큰 범위의 정책을 먼저 설정할 경우 아래의 작은 범위의 정책이 가려져서 적용이 안 되는 경우가 생길 수 있기 때문이다.

'IT > Network Theory' 카테고리의 다른 글

DHCP(Dynamic Host Configuration Protocol)  (0) 2021.09.09
NAT(Network Address Translation)  (0) 2021.09.09
EGP - BGP  (0) 2021.09.08
IGP - Link State - OSPF  (0) 2021.09.08
Passive Interface  (0) 2021.09.07

+ Recent posts