네트워크 - 구조 및 공유기 원리

네트워크 - 구조 및 공유기 원리

Inline 구조

Inline

먼저 인라인(Inline) 구조를 갖는 네트워크 장치를 설명하자면 라우터, 공유기, 방화벽 등이 있습니다. 인라인(Inline) 구조에서 다루는 데이터 단위는 OSI Layer L3 계층인 IP 계층에서 패킷(Packet) 단위로 다루고 있습니다.

가장 특징적인 부분은 패킷(Packet) 을 필터링 하는 기능을 수행 합니다. 자세하게 말하자면 패킷을 차단(drop) 하거나 차단하지 않고 전송(bypass) 중 선택을 할 수 있습니다.

어떤 이유로 인해 Inline Device 가 차단(drop) 혹은 전송(bypass) 결정 하느냐에 따라 이 장치의 성격이 각각 다릅니다.

Out of path 구조 와 DPI 그리고 망중립

Out of path 구조도 인라인(Inline) 구조와 동일하게 데이터 단위가 패킷(Packet) 입니다. 하지만 인라인(Inline) 구조와 다르게 필터링 기능은 없고 패킷(Packet) 을 읽기만 가능 합니다. 이러한 기능 때문에 Out of path 구조는 주로 네트워크 보안을 감지 및 네트워크 장애를 감지하는 센서 기능을 주로 업무를 맡고 있습니다.

즉 네트워크 패킷 데이터를 따로 어딘가에 Copy 를 하고 이러한 행위를 L2 Port Mirroring 이라고 지칭 합니다.

Proxy 구조

Proxy 구조는 특정 목적지를 우회해서 통신한다는 의미 입니다. 예를들어 Server 1 서버가 Server 2 서버로 통신하고자 할때 Server 2 서버 입장에서는 Server 1 서버에 대한 정보를 알 수 있습니다. IP 주소 등 출발지에 대한 정보를 알 수 있는데,

Server 1 입장에서는 자신의 서버 정보를 노출 하고 싶지 않을때 Proxy 정보를 사용하게 됩니다. 이렇게 자신의 정보를 노출하고 싶지 않을때 Proxy 서버가 대신해서 우회해 Server 2 서버 입장에서는 출발지 IP 주소를 Proxy 서버가 되어 줍니다.

Proxy 1
Proxy 2

프록시 서버는 대기(Listen) 전용 소켓을 하나 생성해서 Server 1 로 부터 요청 받고 프록시 서버는 도착지인 Server 2 서버로 요청 하기 위한 소켓을 또 하나 생성하게 됩니다.

예를 들어서 PC1은 한국에 있는 컴퓨터라고 가정해보자. 그리고 통신하려는 목적지인 구글 웹서버는 미국에 있다고 해보자. 이 때, 프
록시를 사용하지 않고 일반적으로 네트워크 통신하는 과정은 위 그림의 회색 실선과 같다. 그런데 이러한 구조에서는 특징이 하나 있
다. 구글 웹서버의 관점에서, 자기 자신에게 통신 요청을 보낸 서버 즉, PC1에 대한 정보를 구글 웹서버는 다 볼 수 있다. 위 그림에서
는 구글 웹서버는 네트워크에 있는 데이터를 보고 이 요청을 보낸 서버의 이름이 PC1 이고 IP 주소가 무엇이고 등 여러가지 정보를
알 수 있다. 다시 말해 출발지 서버에 대한 정보를 모두 알 수 있다.

그런데 PC1이 구글 웹서버에 자신의 정보를 노출하고 싶지 않을 수 있다. 이렇게 클라이언트 자신의 IP 주소와 같은 정보를 숨기기
위해서도 프록시를 사용하기도 한다. 이런 경우에 프록시 서버 덕분에 구글 웹서버에서 볼 수 있는 출발지 IP 주소는 PC1의 주소가
아닌 프록시 서버의 IP 주소가 된다.

물론 또 다른 경우에, 아래 그림처럼 인터넷 즉, 정확히 말하면 인터넷을 제공하는 업체인 ISP(Internet Service Provider)가 PC1이
접속하려는 구글 웹서버를 (그럴리야 없겠지만 .. ) 차단했을 수도 있다.

PC1은 어떻게 해서든 구글 웹서버에 접속하고 싶다. 이럴 때 PC1은 프록시 서버를 통해서 구글 웹서버에 우회하여 접속할 수 있게 된
다. 물론 이렇게 프록시 서버를 통해 통신하는 방법은 직접 통신할 때보다 당연히 속도가 느려질 수 밖에 없다.

이번엔 프록시 서버 구조를 컴퓨터의 3계층 그림으로 이해해보도록 하자.

가장 먼저 프록시 서버는 소켓을 하나 생성해서 PC1에서 보낼 요청에 대한 대기(Listen) 상태에 있기 시작한다. 그리고 PC1은 프록
시 서버로 요청을 보내고, 이 순간 프록시 서버는 프록시 서버 자신이 도착지인 구글 웹서버로 요청을 보내기 위한 소켓을 또 하나 생
성한다. 그리고 이를 통해 구글 웹서버로 PC1의 요청을 그대로 보내준다. 위 그림에서 1번~4번 순서를 잘 따라가며 읽어보도록 하자.

공유기

Symmetric NAT 방식

Symmetric NAT 방식 1

Private IP 192.168.0.10 소유하고 있는 PC가 300.300.300.300 공인 IP 를 소유하고 있는 서버에게 인터넷 통신을 하게 된다면 우선 Packet 데이터 형식으로 만들어서 인터넷 통신을 하게 됩니다.

출발지는 192.168.0.10 이라는 출발지 정보와 도착지 정보 IP 300.300.300.300 이라는 정보를 Packet에 담아서 전송하게 됩니다.

Symmetric NAT 방식 2

하지만 NAT Gateway 에서 192.168.0.10 IP 경우는 외부 인터넷 세계에 사용할 수 없는 IP 이기 때문에 공인 IP 인 100.100.100.100 으로 변경하고 포트도 23000 으로 변경 후 Outbound 로 인해 전송 하게 됩니다.

Symmetric NAT 방식 3

이와 동시에 공유기 NAT Table 에서는

  • Local IP: 192.168.0.10
  • Local Port: 8080
  • External Port: 23000
  • Remote IP: 300.300.300.300
  • Remote Port: 80
  • Protocol: TCP

이와 같은 정보를 저장 하고 전송 하게 됩니다.

Symmetric NAT 방식 4

이후 300.300.300.300 소유 하고 있는 서버로 부터 응답을 받게 된다면

  • 출발지 정보 IP: 300.300.300.300
  • 도착지 정보 IP: 100.100.100.100
  • 출발지 정보 Port: 80
  • 도착지 정보 Port: 23000

이라는 Packet 담아서 응답 하게 됩니다.

정상적으로 NAT Gateway 까지 도착 하면 Inbound 로 인해 이전에 NAT Table 에서 저장 했던 정보 External Port, Remote IP, Remote Port 정보를 찾아서 Local IP, Local Port 정보 값을 추출 하게 됩니다. 이 정보를 바탕으로 공유기는 내부망에 있는 초기 호출 했던 PC에 안전하게 전달 하게 됩니다.

그런데 만약 NAT Table 에 검색된 레코드 값이 존재 하지 않으면 자체적으로 한번도 통신한 적이 없는 호스트로 판단해서 내부 진입을 할 수 없게 합니다.

Full Cone 방식

Full Cone 방식 1

192.168.0.10:8080 호스트가 Server A 까지 접속 하고자 합니다. Outbound 방식으로 통신과 동시에 해당 정보를 NAT Table 에 레코드를 추가 하는데 Full Cone 방식 경우는 Local IP, Local Port 를 자신의 소유하고 있는 PC 정보를 그리고 External Port23000 으로 저장 하게 됩니다. 그리고 여기서 가장 중요한 것은 Remote 부분은 모두 Any 로 처리 한다는 점 입니다.

Full Cone 방식 2

이후 한번도 통신 한적이 없었던 Server B 와도 내부 호스트와 P2P 통신이 가능 합니다. 왜냐하면 Server AServer B 서버 한테 내부 호스트 (192.168.0.10:8080) 통신 해도 된다고 해당 Client IP, Port 를 알리고 Server B 서버는

  • 출발지 정보 IP: 200.200.200.200
  • 도착지 정보 IP: 100.100.100.100
  • 출발지 정보 Port: 80
  • 도착지 정보 Port: 23000

이라는 Packet 담아서 응답 하게 됩니다.

Full Cone 방식 3

정상적으로 NAT Gateway 까지 도착 하면 Inbound 로 인해 이전에 NAT Table 에서 저장 했던 정보 External Port 23000 번 포트를 찾아서 패킷 정보를

  • 출발지 정보 IP: 200.200.200.200
  • 도착지 정보 IP: 192.168.0.10
  • 출발지 정보 Port: 80
  • 도착지 정보 Port: 8080

변경하고 최초 호출한 호스트 정보까지 응답 하게 됩니다.

Restricted Cone 방식

Full Cone 방식 경우는 단점 경우 보안성이 떨어지기 때문에 (Local IP, Local Port 정보만 알면 된다.) 이것을 보완한 방식이 Restricted Cone 방식 입니다.

예를들어 192.168.0.10 이라는 IP 하고 8080 Port 통해 300.300.300.300 IP 그리고 80 Port 로 통신 한다고 가정 하겠습니다. NAT Gateway 통해서 패킷이 Outbound 할때

  • 출발지 정보 IP: 100.100.100.100
  • 도착지 정보 IP: 300.300.300.300
  • 출발지 정보 Port: 23000
  • 도착지 정보 Port: 80

패킷으로 변조되어 통신 할테고 NAT Table 에 레코드를 추가 하는데

Local IP Local Port External Prot Remote IP Remote Port Protocol
192.168.0.10 8080 23000 300.300.300.300 Any TCP

이렇게 추가가 됩니다. Remote Port 값만 Any 로 처리 되는 것이 특징 입니다.

Inbund 할때 다른 IP가 (300.300.300.300 이외) 들어오면 Drop 하게 되고 300.300.300.300 다른 포트여도 remote IP가 같으니 접속이 가능하게 만든 방식이다.

Port Restricted Cone 방식

Port Restricted Cone 방식 1

Port Restricted Cone 방식은 External Port + Remote IP + Remote Port 까지 제한을 하는 방식 입니다.

예를들어 192.168.0.10 이라는 IP 하고 8080 Port 통해 300.300.300.300 IP 그리고 80 Port 로 통신 한다고 가정 하겠습니다. NAT Gateway 통해서 패킷이 Outbound 할때

  • 출발지 정보 IP: 100.100.100.100
  • 도착지 정보 IP: 300.300.300.300
  • 출발지 정보 Port: 23000
  • 도착지 정보 Port: 80

패킷으로 변조되어 통신 할테고 NAT Table 에 레코드를 추가 하는데

Local IP Local Port External Prot Remote IP Remote Port Protocol
192.168.0.10 8080 23000 300.300.300.300 80 TCP

Port Restricted Cone 방식 2

이렇게 추가 된 상태에서 다시 192.168.0.10 이라는 IP 하고 이번엔 8081 Port 통해 300.300.300.300 IP 그리고 81 Port 로 통신 한다고 가정 하겠습니다.

  • 출발지 정보 IP: 100.100.100.100
  • 도착지 정보 IP: 300.300.300.300
  • 출발지 정보 Port: 23000
  • 도착지 정보 Port: 81
Local IP Local Port External Prot Remote IP Remote Port Protocol
192.168.0.10 8081 23000 300.300.300.300 81 TCP

기존 Restricted Cone 경우와 차이점은 External Prot 값을 다른 값으로 저장하게 되는데 Port Restricted Cone 방식은 가능하다면 최대한 같은 포트번호를 유지합니다. 이렇게 함으로써 포트번호 예측이 가능 해서 보안성이 떨어지는 점이 있습니다.

포트 포워딩

포트 포워딩 1

NAT Table 직접 조작해서 관리 하고 싶을때가 있습니다. 예를들어 Private IP 192.168.0.10 호스트를 가지고 있는 PC에 직접 Nginx 설치하고 (Port 80) 설치한 웹서버로 어떤 외부 서버가 통신을 하더라도 설치한 PC로 통신이 가능하도록 할려면 NAT Table 를 조작 해야 하는데 이것을 포트 포워딩 작업이라고 합니다.

포트 포워딩 2
보통 공유기 설정 페이지에 추가가 가능 합니다.

UPnP

UPnP1
UPnP Port Forwarding
UPnP 는 P2P 통신에 필요한 포트번호, IP 등을 공유기 설정 자동화 해주는 기술 입니다. 예를들어 P2P 통신을 하는 토렌트 를 생각해보자 A PC 호스트 가 외부 인터넷 통신을 통해 B PC 호스트 까지 통신을 가능하게 할려면 앞써 설명한 공유기에 포트포워딩 설정을 해야 합니다. 이것을 별도의 설정 없이 서로 자동으로 연결되고 기능을 사용할 수 있도록 하는 기술 UPnP 라고 합니다.

VPC

Private Network 사설망을 확장해서 운영을 하고 싶을때 즉 물리적인 네트워크 망을 늘리고 싶지만 운영상 해결 할 수 없을때(비용 이슈) 공유 네트워크 망을 통해 네트워크 통신을 하되 보안성 이슈를 확보 하고 네트워크 망을 확장 하는 것이 VPC 입니다.

VPC 구현하기 위해서는 중요한 것은 보안 이슈 입니다. 물리적으로 사설망 확장은 어렵지만 논리적으로 확장 해서 보안 이슈를 해결하기 위해서는 데이터 인증 및 암호화 기술이 필요 합니다. 즉 사설망 간의 네트워크 트래픽을 무결성기밀성을 유지 하고 모든 네트워크 트래픽에 대한 인증 메커니즘 적용 하고 정보 유출의 방지를 위해서 암호화 할 수 있어야 합니다.

그럼 여기서 터널링 기술 용어가 나타나는데 어려운 부분은 아니고 지금까지 설명했던 Private Network 사설망을 확장 하기 위해서 데이터 인증 및 암호화 기술이 추가 된 것을 전문 용어로 터널링 기술 이라고 합니다. 즉 기존 네트워크 에서 정보 이동이 가능하도록 정보를 캡슐화 하고, 다시 풀어 내어 논리적으로 두 네트워크를 연결하는 기술(망연계)이다.

VPN GtoG

VPN_GtoG 1
1.1.1.10 호스트를 가지고 있는 PC 에서 2.2.2.10 호스트를 가지고 있는 Server B 로 접근 하고자 합시다. 기본 조건은 일반적으로 공인 IP 200.200.200.200 로 접근 하는 모든 트래픽을 차단 했다고 가정 하겠습니다.

  • 출발지 정보 IP: 1.1.1.10
  • 도착지 정보 IP: 2.2.2.10

이렇게 Packet 에 담아서 통신 할때 1.1.1.1 에서 해당 Packet 을 모두 암호를 한 다음에 새로운 해더를 추가해서 전송 하게 됩니다.

  • 출발지 정보 IP: 1.1.1.1
  • 도착지 정보 IP: 2.2.2.1

이렇게 수신 받고자 하는 공유 2.2.2.1 로 전송 하게 됩니다. 만약 해당 Packet 을 노출 된다고 해도 암호화 되었기 때문에 내용을 알 수가 없습니다.

VPN_GtoG 2

2.2.2.1 공유기에 Packet 을 전송 받으면 공유기 1.1.1.1 에서 생성된 해더를 삭제하고 암호화 된 데이터를 복호화 한 다음에 접속 하고자 하는 2.2.2.10 서버로 통신하게 됩니다. 이러한 전반적인 L3 수준에서 데이터를 암호화 하고 L3 헤더를 추가해서 전송하는 기술 이러한 것을 L3 터너링 기술 이라고 합니다.

VPN GtoE

VPN_GtoE 1

3.3.3.10 호스트를 가지고 있는 재택 개인용 PC 에서 2.2.2.10 호스트를 가지고 있는 Server B 로 접근 하고자 합시다. 다시 말하지만 기본적으로 공인 IP 200.200.200.200 로 접근 하는 모든 트래픽을 차단 했다고 가정 하겠습니다.

3.3.3.10 호스트를 가지고 있는 개인용 PC에서 VPN 관련 프로그램을 설치 하고 IP : 2.2.2.1 인 시큐어 게이트웨이가 3.3.3.10 호스트를 가지고 있는 개인용 PC에게 새로운 IP 주소1.1.1.100 할당 받게 됩니다.

  • 출발지 정보 IP: 1.1.1.100
  • 도착지 정보 IP: 2.2.2.10

새로 받은 IP 1.1.1.100 으로 출발지로 지정하고 전체 패킷을 암호화 처리를 거쳐 전송 하게 됩니다. 암호화 처리를 하고 새로운 IP 해더를 추가 하게 되는데

  • 출발지 정보 IP: 999.999.999.999
  • 도착지 정보 IP: 1.1.1.1

VPN_GtoE 2

1.1.1.1 인 게이트웨이 까지 전송하게 된다면 추가된 헤더를 삭제를 하고 다시 IP 헤더를 추가 하게 됩니다.

  • 출발지 정보 IP: 1.1.1.1
  • 도착지 정보 IP: 2.2.2.1

VPN_GtoE 3

Packet 패킷 정보로 2.2.2.1 게이트웨이 까지 전송 하고 2.2.2.1 게이트웨이는 패킷 데이터를 복호화를 한 다음에 최종 목적지인 2.2.2.10 서버까지 전송하게 됩니다.

IPSec

IPSec Protocol

· ISAKMP
. Internet Security Association Key Management Protocol2 =
안 협상 및 암호화 키들을 관리하는 메커니즘을 제공한다.

. IP AH (Authentication Header)
• AH는 데이터의 원본 인증 및 무결성 재연공격 방지 기능을 제공한다.

. IP ESP (Encapsulation Security Payload)
• ESP는 데이터의 기밀성, 원본 인증 및 기밀성 및 재연공격 방지 기능
을 제공한다.


Copyright 201- syh8088. 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.

버튼

×

喜欢就点赞,疼爱就打赏