L2, L3, L4, L7 Switch에 대한 고찰

|


- 2015.02.03


먼저 이 글은 내 개인적인 생각일 뿐이며 정답이 아닐 수 있다는 것을 밝힌다.


출처 : http://xinet.kr/tc/47

       http://soul0.tistory.com/140

       http://doodle.com.ne.kr/L4Switching.htm

       http://koreahojin.egloos.com/2341317




CCNA 시험을 위해 Network 책을 보던 중 L4 스위치는 왜 필요할까에 대한 궁금증이 들었다.

왜냐하면 나는 여태껏 L2, L3 스위치 및 Router에 대한 것만 배웠지, L4 스위치는 수업시간에 전혀 들어보지 못했기 때문이다.

하지만 분명 현업에선 L4 스위치를 많이 쓴다고 들었다. 내가 회사 다닐 때에도 분명 존재 했었고 말이다.

즉, L4 스위치가 하는 역할이 분명 있기 때문일 것이다. (너무 당연한가..ㅎㅎ)


여러 글을 읽어 본 나의 결론은 '속도'가 키워드인것 같다. (확장하면 로드밸런싱일 것이다.)

L3 스위치가 생겨난 이유도 보면 기존 라우터는 패킷을 소프트웨어적으로 분석하여 포워딩하는 일을 하였지만,

기술이 발전함에 따라 하드웨어적으로 IP를 분석하여 경로를 설정하고 포워딩할 수 있게 되었다고 한다.

즉 다양한 기능 보단 퍼포먼스에 중점을 둔 녀석이 L3 스위치 인것 같다.


L4 스위치 역시 늘어나는 트래픽을 감당하기 위해 로드밸런싱을 하고자 하는데

로드밸런싱 시 TCP/UDP Header를 확인 후 이것을 우선시 해서 로드밸런싱을 한다.

즉 4계층의 헤더를 분석하여 스위칭 하기 때문에 L4 스위치인 것이다.


헌데 L7 스위치는 속도보다는 보안에 중점을 둔 것 같다.

L7 스위치는 7계층의 패킷 중 웜이나 E-mail 바이러스와 같이 특정한 패턴을 같고 있는 패킷을 막아 네트워크에 불필요한 트래픽을 제거한다.

최근에는 L7 스위치 업체와 바이러스 차단업체들이 서로 제휴를 통해 새로운 바이러스 패턴을 빠르게 업데이트해 네트워크를 보호한다.

또한 Dos/DDos와 같은 부분도 해결하여 트래픽의 유입수준을 일정정도로 제한, 서버의 정상적인 서비스를 제공하게끔 보고한다.



따라서, 실무자에게 필요한 것은 제공하는 서비스에 따라, 또한 사내 네트워크 망 구성에 따라 적절한 장비를 선택하여 셋팅하는 것인 듯하다.




'Network' 카테고리의 다른 글

로드밸런서, 오픈 소스 로드 밸런서 HAProxy == 메모  (0) 2015.05.07
And


Docker in CentOS 7 minimal

|


출처 : http://www.server-world.info/en/note?os=CentOS_7&p=docker&f=1





0. 사전 설치


CentOS 7 minimal 설치 및 준비

 

필요 PKG 설치 및 업데이트

# yum install -y ntp wget; yum update -y   

# systemctl enable ntpd; systemctl start ntpd

   


   

1. 방화벽 해제 및 SELinux 해제

# systemctl stop firewalld

# systemctl disable firewalld


# vi /etc/sysconfig/selinux

      7 SELINUX=disabled



SELinux 는 재시작 해야 풀린다.

# reboot





2. Docker 설치


# yum -y install docker

# systemctl enable docker

# systemctl start docker



host로 사용할 centos 공식 이미지 Container 생성, 환영 문구 입력

# docker run centos /bin/echo "Welcome to the Docker World" 





3. Docker 실행


i와 t 옵션을 주어 centos 이미지를 bash 쉘로 docker 실행

(옵션 주지 않으면 들어가지지 않는다. 옵션에 대한 연군 필요)

# docker run -i -t centos /bin/bash



Docker system 의 정보 확인


[root@0cf52e8ba14a /]# uname -a

Linux 0cf52e8ba14a 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux



세션 종료


[root@0cf52e8ba14a /]# exit

exit

#





4. Docker 세션 관리


세션 종료 없이 로그아웃 하기 : Ctrl+p, Ctrl+q 차례대로 입력


[root@d4add7d10c96 /]# [root@localhost ~]# 



세션 종료 없이 종료한, 즉 docker 의 실행 중인 프로세스 확인


# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

d4add7d10c96        centos:7               "/bin/bash"          4 minutes ago       Up 4 minutes                                  thirsty_bartik



다시 해당 세션으로 붙기 (Container ID 필요)

# docker attach d4add7d10c96



세션 연결되어 있는, 실행 되어 있는 컨테이너 shutdown

# docker kill d4add7d10c96

# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES





5. 이미지 관리


존재하는 이미지 보기

# docker images



centos 이미지에게 직접 명령어 실행

# docker run centos /bin/bash -c "yum -y update; yum -y install httpd"



내가 최근에 쳤던 명령어가 작동 했다는 것 확인

# docker ps -a | head -2

CONTAINER ID        IMAGE               COMMAND                CREATED                  STATUS                      PORTS               NAMES

b0eef33afa44         centos:7            "/bin/bash -c 'yum -    2 minutes ago       Exited (0) 56 seconds ago                       thirsty_albattani



지금 상태의 이미지를 새로운 이미지로 저장 - 스냅샷

# docker commit b0eef33afa44 my_image/centos_httpd

48a0f44b93a5a85cee79add36686c6e590463092cb96bf80a5dbc1c156f3d278



새롭게 추가된 이미지가 보인다.

# docker images

REPOSITORY                   TAG                 IMAGE ID                   CREATED              VIRTUAL SIZE

my_image/centos_httpd    latest               48a0f44b93a5        About a minute ago        478.2 MB

centos                                  7                   8efe422e6104            3 weeks ago                  224 MB

centos                             centos7             8efe422e6104            3 weeks ago                   224 MB

centos                                latest              8efe422e6104            3 weeks ago                    224 MB



내가 만든 이미지에 /usr/bin/which httpd 명령어를 실행 한 결과

# docker run my_image/centos_httpd /usr/bin/which httpd

/usr/sbin/httpd





[실습]


내 8081번 포트를 이미지의 80번 포트와 매핑시키면서 이미지에 접근


# docker run -it -p 8081:80 my_image/centos_httpd /bin/bash

[root@d4add7d10c96 /]# /usr/sbin/httpd &

[root@d4add7d10c96 /]# echo "httpd on Docker Container" > /var/www/html/index.html



세션 종료 없이 로그아웃(Ctrl+p, Ctrl+q 차례대로 입력)해서 실행되고 있는 상황 확인

[root@d4add7d10c96 /]# [root@localhost ~]#


# docker ps

CONTAINER ID                 IMAGE                          COMMAND              CREATED             STATUS                 PORTS                     NAMES

bf5e6b508e53        my_image/centos_httpd:latest   "/bin/bash"         10 minutes ago      Up 10 minutes       0.0.0.0:8081->80/tcp   ecstatic_mcclintock



이제 같은 네트워크단에 있는 pc의 웹 브라우저에서 docker server ip:8081 로 들어가면 제대로 사용되고 있는 것을 알 수 있다.





[etc]


1) Ubuntu 14.04 install & Setting


# docker run -t -i ubuntu:14.04 /bin/bash


root@3eaaa23a2e66:/# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

root@3eaaa23a2e66:/# date

Sat Jan 31 00:43:44 KST 2015

root@3eaaa23a2e66:/# apt-get install ntp -y

root@3eaaa23a2e66:/# service ntp start

 * Starting NTP server ntpd  

root@3eaaa23a2e66:/# update-rc.d ntp defaults


And


[20] 실전문제, DNS 라운드 로빈

|


- 2015.01.30




[실전 문제 1]







Server1

ip : 10.10.10.10 / 24

g/w : 10.10.10.254

dns : 127.0.0.1


DNS 역할 추가 : 20.20.20.20 <-> www.samadal.com



Server2

ip : 20.20.20.20 / 24

g/w : 20.20.20.254

dns : 10.10.10.10


C:\itbank 폴더 만들어 공유 설정



Router1 - 시리얼 모듈 1개 추가

en

conf t

int f 0/0      !! Server1 과 연결됨

 ip add 10.10.10.254 255.255.255.0

 dup auto

 no shut

 exit

int f 0/1      !! Server2 와 연결됨

 ip add 20.20.20.254 255.255.255.0

 dup auto

 no shut

 exit

int s 0/0      !! Router2 와 연결됨

 ip add 200.200.200.1 255.255.255.0

 no shut

 exit

router eigrp 1

 no auto

 network 10.10.10.0

 network 20.20.20.0

 network 200.200.200.0

end


Router2 - 시리얼 모듈 1개 추가

en

conf t

int f 0/0      !! Server3과 연결됨

 ip add 100.100.100.254 255.255.255.0

 dup auto

 no shut

 exit

int s 0/0      !! Router1 와 연결됨

 ip add 200.200.200.2 255.255.255.0

 no shut

 exit

router eigrp 1

 no auto

 network 100.100.100.0

 network 200.200.200.0

end





DNS 라운드 로빈


server1 과 server2 에 같은 웹 페이지로 서비스 하고 있고, server3에 DNS를 구축하여 라운드로빈을 적용하면

client는 server1 과 server2 에 번갈아 가면서 접속한다. 즉 A 레코드를 1개 추가하는 것 만으로 로드밸런싱 구축 가능.

그러나 DNS 서버는 server1 과 server2의 장애 및 ip 주소 변경을 체크할 수 없다는 단점이 있다.

(But, 실제로는 네트워크 장비단에서 server1 과 server2 로 접속을 돌리는 로드밸런싱을 주로 사용한다. - 고가)



[사용 방법]


DNS 관리자 에서 server1 속성 - 고급 - 라운드 로빈 사용 이 기본 체크 되어있다.



[실습]


역할 추가 : IIS 웹서비스 - ASP.NET - 설치



같은 도메인 주소에 대해 각기 다른 server의 ip를 중복 입력한 뒤 라운드 로빈 설정



And