0부터 시작하는 가상머신과 네트워크 공부 - 라우터 & 터널

Jaehong Lee·2022년 7월 6일
0
post-thumbnail

1. Load Balancer

  • 로드 밸런싱은 부하를 분산시키는 기술이다
  • 로드 밸런서는 로드 밸런싱 기술을 제공하는 장치/서비스
  • L4 Load Balancing

    • Layer 4에는 TCP/UDP 및 PORT 번호가 연관되있다

  • 케이블에는 대역폭이 있다. 이 대역폭은 Data가 한 번에 얼마나 들어올 수 있는지를 의미한다
  • 서버에는 처리량이 중요하다. 이 처리량을 넘어선 Data가 서버에 들어온다면, 서버는 처리하다가 Down된다

  • 그림과 같이 서버가 여러개 있을때, 따로 설정을 하지 않으면 서버 분산은 작동하지 않고, 한 서버에 몰려간다. 따라서 서버를 추가할때마다 트래픽 분산을 시키도록 설정해야한다
  • 또한 Domain에 대한 설정해야한다. www.test.com이 있을때 이 Domain에 대해 주소가 Ip가 여러개 있다고 DNS에서 설정해야한다. 이때 서버 하나당 Public Ip 하나이므로 여러개의 Public Ip가 필요하다

  • 공인 Ip가 Load balancer ( proxy )에 접근하면, proxy는 라운드 로빈 방식으로 다수의 서버와 돌아가면서 통신한다. 이로서 공인 Ip는 서버와 통신할 필요없이 Proxy와 통신하면 된다
  • L4 Load Balancer는 Port 번호를 보고 라우드 로빈 방식으로 서버와 통신한다
  • L4 Load Balancer를 사용할 경우 각 서버는 똑같은 DB를 참조하며, 같은 Data( page )를 지닌다. 따라서 똑같은 Data를 가지고 있어야하므로, 효율이 안좋다
  • NLB로 L4( SEGMENT )중 Port 번호를 확인하고 부하를 분산하는 방식
  • PROXY : 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템으로 인터넷을 통해 결과를 전달해주는 FORWARD PROXY와 웹 서비스를 제공하는 회사 내부망에 연결되어 결과를 전달하는 REVERSE PROXY가 있다

  • HAPROXY : 소프트웨어 로드 밸런서

  • L7 Load Balancer

    • L7 Load Balancer는 Directory까지 확인하는 것이다
    • L7 LB의 경우 page마다 서버 분리가 가능하며, 각 page마다 서버를 따로 배정할 수 있다. 따라서 L4 LB보다 효율적이다
    • 만약 ~ page면 ~의 서버 백엔드로 가고, x page면 x의 서버 백엔드로 부하는 분산한다
    • ALB로 L7(Data)으 주소를 보고 부하를 분산한다
    • 비슷한 것 : K8S의 ingress란? 클러스터 외부에서 안에 있는 파드에 접근할 때 주로 L7 영역의 통신을 담당해서 처리하는 방법
  • HAProxy에 대한 문제점과 고민

  • 로그인해서 생성된 세션은, 페이지를 껏다가 키면, 서버가 바뀌어서 생성된 세션이 사라진다. 따라서 다시 로그인을 해야한다

  • HAProxy 할때 고민해야할 내용으로 처음 접속한 서버와 잠시 페이지를 닫은 후 재접속 했을 때 연결되는 서버가 다른 경우에는 로그인 세션 정보를 유지 하지 않게 된다. 이를 해결하는 방법에 대해 생각해보자

2. Router

  • L3 ( Network ) 계층에서 작동하는 장치
  • Packet을 처리한다
  • Packet의 Header에 있는 Ip를 해석한다
  • 서로 다른 네트워크간 통신에서 사용이 된다
    • 직접 연결된 네트워크는 direct connect되어 직접 해석이 가능하다고 Table에 기록된다
    • 라우터에 Packet이 들어가면 다음의 과정을 거친다
      1. ACL : 해당 Packet이 permit 정책에 부합하면 2번째 단계로 가며, deny 정책에 부합하면 Drop된다
      2. NAT : ACL을 통과하면 NAT ( 주소 변환 )을 거치며, 이때 주소 변환이 될수도 있고, 안될수도 있으며, 다음단계로 무조건 넘어간다
      3. Routing : Routing Table에 기반해서 Path selection을 해주고, 정해진 목적지로 향하는 경로 중 적절한 출력 Port로 Packet을 이동시키는 Packet forwarding (switching)을 해준다
      • forwarding 된 packet은 출력 PORT의 큐에 들어간다

3. 라우팅 Bridge 설정

  • GNS3를 키고 다음과 같이 구성한다
  • 먼저, CLOUD를 이더넷으로 설정한다 ( Bridge )
  • VNIC의 3Type

    1. host-only : 호스트 pc 외부와 통신이 되지 않는 고립된 네트워크 환경을 제공한다
    2. NAT : 내부 사설 환경의 주소들이 호스트의 주소로 변경되어 내부와 통신이 가능하게 해준다
    3. Bridge : 호스트가 연결된 네트워크 환경과 동일한 환경에 연결되도록 해준다

  • Router의 fa 0slot의 0port에 Ip를 넣어준다
  • 통신을 시험해보고, ARP TABLE을 확인하면, 통신을 한 Ip주소의 MAC주소가 저장되있다

4. Private Ip 설정

  • vpcs를 192.168.118.x의 Private Ip로 설정하자
  • fa0/1에 Ip를 넣어준다
  • Static Route를 하여 상대방의 Private Ip와 통신을 해보자. 이는 단방향 지정이기에, 상대방에서도 라우팅을 해줘야한다
  • 출발지를 지정할때 해당 fa로 지정하는 것과 지정된 Ip로 지정하는 것은 똑같다, 출발지를 지정안하면 라우터의 공인 Ip딴에서 상대방의 사설 Ip에 접속하는거고, 출발지를 사설 Ip로 지정해야지 자신의 사설 Ip와 상대방의 사설 Ip가 통신하는 것이다
  • 이런 구조다

5. vmware와 통신 실습

  • cloud2를 생성하고 설정한다

  • 5.1 linux 설정

  • vmware에서 vmnet3의 Ip를 변경한다

  • 라우터의 fa에 각각 168.1.118/168.118.2를 설정해주고, vmware는 118.118로 설정할 것이다

  • linux 네트워크 설정

  • linux내에서 index.html 수정. 해당 118.118로 접속시 출력할 index.html이다

  • enable로 설정하여 재부팅시에서 바로 httpd가 실행되게 설정하며 --now를 통해 지금 바로 실행시키게 설정했다

  • 방화벽도 지금 즉시 비활성화 시키며, 재부팅시에도 자동으로 비활성화되게 설정

  • linux Ip와 Gateway를 설정한다

  • 확인하면 현재 웹서버가 정상적으로 실행되는 것을 확인할 수 있다

  • 5.2 문제

    • 각 사설 구간끼리 통신 가능하게 하고
    • 한 조에서 Ip가 빠른 사람이 HQ를 담당해서 인터넷 통신이 가능하게 한다
    • 외부에서 라우터에 http://라우터의fa0/0주소:8001하면 본사 내분의 웹서버가 보여야 한다
    • 외부에서 ssh -l root -p 라우터의 fa0/0 주소로 접속이 가능하게 한다
        1. 인터페이스에 주소 입력 - ip add
        1. 내부 통신 해결 - routing
        1. 본사에서 정적 PAT 해결 - DEFAULT GATEWAY 설정 및 동적 PAT 하기
        1. LINUS로의 웹, ssh 위한 정적 PAT
  • 명령어

    • 동작 상태 확인 : do show ip int br
    • 라우팅 테이블 확인 : do show ip route
    • 전체 구성 정보 : do show run (conf 안에서), show run (밖에서)
    • 잘못된 ip 주소 : 덮어씌우기
    • 라우터 경로 취소 : no ~
  • nat 할때 inside 와 out side는 라우터 기준이며, 한 방향이 inside면서 outside가 될 수 없다. 따라서 Br은 인터넷이 안될 수 밖에 없다

    • int fa0/0
    • ip add 192.168.1.101 255.255.255.0
    • no sh
    • int fa0/1
    • ip add 192.168.101.2  255.255.255.0
    • no sh
  • 이렇게 HQ와 BR 2곳의 Ip를 설정

  • 이제 브릿지를 통해 통신이 가능하다

  • 이제 HQ - BR 정적 라우팅

    • ip route 192.168.102.0 255.255.255.0 192.168.1.102
    • ip route 192.168.103.0 255.255.255.0 192.168.1.103
  • BR에서도 경로 설정을 했으면 이제 서로 통신이 가능해야한다

  • 이제, 본사에서 인터넷으로의 통신을 위한 정적 라우팅을 해야 한다

    • ip route 0.0.0.0 0.0.0.0 192.168.1.1
  • 사설 구간에서 인터넷으로의 통신을 위한 동적 PAT 필요

    • access-list 1 permit any
    • ip nat inside source list 1 int fa0/0 overload
    • int fa0/0
    • ip nat outside
    • int fa0/1
    • ip nat inside
  • 외부에서 웹서버 접근하기 위한 정적인 PAT 필요

    • ip nat inside source static tcp 192.168.101.101 80 int fa0/0 8001
  • 외부에서 ssh 연결이 20022 port로 가능하게 설정

    • ip ant inside source static icp 192.168.101.101 22 int fa0/0 20022
  • 이때, 지사간의 통신에서 정적 라우팅을 통해 경로를 설정했지만, NAT와 다른 지사로의 정적 라우팅을 한 곳에 해주면 통신이 가능하다

6. TUNNEL 실습

  • 환경을 구성해주자

  • Nat 없이 사설 Ip로 Public 구간을 통해 통신을 해볼 것이다

  • 서로 연결해준다

  • 먼저, seoul의 port를 설정한다

  • Default gateway 설정

  • busan도 설정해준다

  • Isp도 설정해준다

  • 인터넷은 공인 Ip끼리만 통신이 가능하면 되므로, 더 설정할게 없다

  • 터널링

    • GRE TUNNEL : 특정 네트워크망에서 새로운 IP 헤더를 Encapsulation 하여 패킷을 전송하는 VPN 기능을 제공한다
      • 단점 : 데이터를 암호화하지 않기 때문에 보안적으로는 취약하다
      • 장점 : 암호화 기법을 사용하는 VPN에 비해서 데이터 전송 처리가 빠르다
    • 라우터가 터널을 사용한다고 판단한다

  • seoul에 터널을 하나 만들어준다. 이제 터널간 통신을 위한 Ip를 넣어준다
  • tunnel에 Ip를 넣어주고 출발지를 지정한다
  • tunnel의 목적지 Ip를 지정한다
  • busan에도 터널을 만들고 설정한다
  • 서울에서 사설 ip로 부산의 사설 ip와 통신하려면 목적지를 터널의 목적지 ip로 하면 된다
  • 부산도 라우팅 설정해준다
  • 이제 두 vpcs를 키고 Ip를 설정하고, 통신을 하면 된다! 이렇게 터널을 이용하면 Public존을 사설 Ip로 통신이 가능하다
  • 출발지와 목적지가 사설 Ip로 되어있으며 Frame을 열어보면
  • Ip가 두가지가 있다. 앞에 Ip는 터널의 Ip이고, 뒤에 Ip는 실제 출발지와 목적지 Ip이다. 즉, PACKET앞에 터널 통신을 위한 GRE 헤더가 붙여지고, 그 앞에 터널의 출발지/목적지 Ip가 붙는다
  • 허나, 이 방식은 인터넷을 거치기에 보안상 문제가 있다. 따라서 GRE에 ipsec(시큐리티)를 붙인 GRE OVER IPSEC VPN을 사용해야한다
  • 터널을 사용해도 DEFAULT-GATEWAY 설정은 필요하다. 이는, 공인 Ip를 사용해야하므로 인터넷에 접속해야하는데, 우리가 설정할때 사용한 목적지의 Ip를 출발지는 모르기에 Gateway설정을 통해 알게 해줘야한다. 즉, 원래 통신 처럼 ISP를 거치지만, 사설 Ip로 통신이 가능한거다
profile
멋진 엔지니어가 될 때까지

0개의 댓글