네트워크 - 구조 및 공유기 원리
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
서버가 되어 줍니다.
프록시
서버는 대기(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 방식
Private IP
192.168.0.10 소유하고 있는 PC가 300.300.300.300
공인 IP 를 소유하고 있는 서버에게 인터넷 통신을 하게 된다면 우선 Packet
데이터 형식으로 만들어서 인터넷 통신을 하게 됩니다.
출발지는 192.168.0.10
이라는 출발지 정보와 도착지 정보 IP 300.300.300.300
이라는 정보를 Packet
에 담아서 전송하게 됩니다.
하지만 NAT Gateway
에서 192.168.0.10
IP 경우는 외부 인터넷 세계에 사용할 수 없는 IP 이기 때문에 공인 IP 인 100.100.100.100
으로 변경하고 포트도 23000
으로 변경 후 Outbound
로 인해 전송 하게 됩니다.
이와 동시에 공유기 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
이와 같은 정보를 저장 하고 전송 하게 됩니다.
이후 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 방식
192.168.0.10:8080
호스트가 Server A
까지 접속 하고자 합니다. Outbound
방식으로 통신과 동시에 해당 정보를 NAT Table
에 레코드를 추가 하는데 Full Cone
방식 경우는 Local IP
, Local Port
를 자신의 소유하고 있는 PC 정보를 그리고 External Port
는 23000
으로 저장 하게 됩니다. 그리고 여기서 가장 중요한 것은 Remote
부분은 모두 Any
로 처리 한다는 점 입니다.
이후 한번도 통신 한적이 없었던 Server B
와도 내부 호스트와 P2P 통신이 가능 합니다. 왜냐하면 Server A
가 Server 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
담아서 응답 하게 됩니다.
정상적으로 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
방식은 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 |
이렇게 추가 된 상태에서 다시 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
방식은 가능하다면 최대한 같은 포트번호를 유지합니다. 이렇게 함으로써 포트번호 예측이 가능 해서 보안성이 떨어지는 점이 있습니다.
포트 포워딩
NAT Table
직접 조작해서 관리 하고 싶을때가 있습니다. 예를들어 Private IP 192.168.0.10 호스트를 가지고 있는 PC에 직접 Nginx
설치하고 (Port 80) 설치한 웹서버로 어떤 외부 서버가 통신을 하더라도 설치한 PC로 통신이 가능하도록 할려면 NAT Table
를 조작 해야 하는데 이것을 포트 포워딩 작업이라고 합니다.
보통 공유기 설정 페이지에 추가가 가능 합니다.
UPnP
UPnP
는 P2P 통신에 필요한 포트번호, IP 등을 공유기 설정 자동화 해주는 기술 입니다. 예를들어 P2P
통신을 하는 토렌트
를 생각해보자 A PC 호스트
가 외부 인터넷 통신을 통해 B PC 호스트
까지 통신을 가능하게 할려면 앞써 설명한 공유기에 포트포워딩
설정을 해야 합니다. 이것을 별도의 설정 없이 서로 자동으로 연결되고 기능을 사용할 수 있도록 하는 기술 UPnP
라고 합니다.
VPC
Private Network 사설망을 확장해서 운영을 하고 싶을때 즉 물리적인 네트워크 망을 늘리고 싶지만 운영상 해결 할 수 없을때(비용 이슈) 공유 네트워크 망을 통해 네트워크 통신을 하되 보안성 이슈를 확보 하고 네트워크 망을 확장 하는 것이 VPC
입니다.
VPC
구현하기 위해서는 중요한 것은 보안 이슈 입니다. 물리적으로 사설망 확장은 어렵지만 논리적으로 확장 해서 보안 이슈를 해결하기 위해서는 데이터 인증 및 암호화 기술이 필요 합니다. 즉 사설망 간의 네트워크 트래픽을 무결성
과 기밀성
을 유지 하고 모든 네트워크 트래픽에 대한 인증 메커니즘 적용 하고 정보 유출의 방지를 위해서 암호화 할 수 있어야 합니다.
그럼 여기서 터널링 기술
용어가 나타나는데 어려운 부분은 아니고 지금까지 설명했던 Private Network 사설망을 확장 하기 위해서 데이터 인증 및 암호화 기술이 추가 된 것을 전문 용어로 터널링 기술
이라고 합니다. 즉 기존 네트워크 에서 정보 이동이 가능하도록 정보를 캡슐화 하고, 다시 풀어 내어 논리적으로 두 네트워크를 연결하는 기술(망연계)이다.
VPN GtoG
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
을 노출 된다고 해도 암호화 되었기 때문에 내용을 알 수가 없습니다.
2.2.2.1
공유기에 Packet
을 전송 받으면 공유기 1.1.1.1
에서 생성된 해더를 삭제하고 암호화 된 데이터를 복호화 한 다음에 접속 하고자 하는 2.2.2.10
서버로 통신하게 됩니다. 이러한 전반적인 L3 수준에서 데이터를 암호화 하고 L3 헤더를 추가해서 전송하는 기술 이러한 것을 L3 터너링 기술
이라고 합니다.
VPN GtoE
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
1.1.1.1
인 게이트웨이 까지 전송하게 된다면 추가된 헤더를 삭제를 하고 다시 IP 헤더를 추가 하게 됩니다.
- 출발지 정보 IP:
1.1.1.1
- 도착지 정보 IP:
2.2.2.1
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. 무단 전재 및 재배포 금지. 출처 표기 시 인용 가능.