EdgeRouter - 가상 라우터 중복 프로토콜 (Virtual Router Redundancy Protocol, VRRP) ======================================================== download at 2017-02-07T01:06:00Z `origin `_ .. raw:: html .. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
-------------- 이 문서는 가상 라우터 중복 프로토콜을 CLI로 라우터에 설정하는 방법에 대하여 서술합니다. .. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
  .. raw:: html
.. raw:: html
|image0| .. rubric:: Example network diagram before VRRP is implemented. :name: example-network-diagram-before-vrrp-is-implemented. .. raw:: html
.. raw:: html
.. raw:: html
  .. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. rubric:: Steps :name: steps -------------- .. rubric:: Configuration :name: configuration   아래의 설정은 위의 네트워크 다이어그램의 설정을 사용합니다.   *Note: 호스트의 IP 주소와 2개의 라우터 주소입니다:* - *Host IP address: 192.0.2.50/24* - *R1 IP address: 192.0.2.10/24* - *R2 IP address: 192.0.2.20/24* 기본 VRRP 설정을 하기 위해서는 VRRP 가상-주소 \ *192.0.2.1/24* 를 R1과 R2에 모두 추가합니다:   .. rubric:: R1 Configuration :name: r1-configuration   R1의 IP 주소를 설정합니다. :: ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 virtual-address 192.0.2.1/24 ubnt@R1# commit [edit] ubnt@R1# save Saving configuration to '/config/config.boot'... Done [edit] ubnt@R1# exit .. rubric:: R2 Configuration :name: r2-configuration   R2의 IP 주소를 설정합니다. :: ubnt@R2# set interfaces ethernet eth2 vrrp vrrp-group 100 virtual-address 192.0.2.1/24 ubnt@R2# commit [edit] ubnt@R2# save Saving configuration to '/config/config.boot'... Done [edit] ubnt@R2# exit .. rubric:: Show Commands :name: show-commands   - 인터페이스에 2가지의 주요 상태 (마스터, 백업)가 존재합니다. 어느 라우터가 *master* 상태이고, 가상 IP (VIP) 주소를 소유하고 있는지 확인하기 위해서는 \ *show vrrp* 명령어를 사용합니다: :: ubnt@R1:~$ show vrrp Physical interface: eth2, Source Address 192.0.2.10 Interface state: up, Group 100, State: master Priority: 1, Advertisement interval: 1, Authentication type: none Preempt: true, VIP count: 1, VIP: 192.0.2.1/24 Master router: 192.0.2.10 Last transition: 22s - R1이 불능상태가 되면, R2가 가상 주소를 갖게 됩니다. 이후에는 호스트의 트래픽은 R1이 아닌 R2로 발생합니다: :: ubnt@R2:~$ show vrrp Physical interface: eth2, Source Address 192.0.2.20 Interface state: up, Group 100, State: master Priority: 1, Advertisement interval: 1, Authentication type: none Preempt: true, VIP count: 1, VIP: 192.0.2.1/24 Master router: 192.0.2.20 Last transition: 11s - \ *show log* 명령어를 사용하여 R1에서 R2로 변화가 이루어지는 로그 메시지를 확인할 수 있습니다:   :: ubnt@R2:~$ show log Dec 6 12:41:56 R2 Keepalived_vrrp: VRRP_Instance(vyatta-eth2-100) Transition to MASTER STATE Dec 6 12:41:57 R2 Keepalived_vrrp: VRRP_Instance(vyatta-eth2-100) Entering MASTER STATE Dec 6 12:41:57 R2 Keepalived_vrrp: VRRP_Instance(vyatta-eth2-100) setting protocol VIPs. Dec 6 12:41:57 R2 Keepalived_vrrp: VRRP_Instance(vyatta-eth2-100) Sending gratuitous ARPs on eth2 for 192.0.2.1   .. rubric:: Debugging Tips :name: debugging-tips   - VRRP를 설정하면서 가장 흔하게 발생하는 문제는 양쪽 모두 본인이 *master* 상태라고 여기는 경우입니다. 이러한 상황은 일반적으로 양쪽에서 상대방의 hello 패킷을 확인하지 못했을 때 발생합니다. 이러한 문제는 상대방의 vrrp 패킷을 통해서 방지 할 수 있습니다: #. 방화벽은 목적지가 224.0.0.18 인 패킷을 허용하지 않습니다. 해당 기본 drop 룰을 확인하고 패킷이 drop되는지 로그를 확인합니다. #. 일부 스위치에서는 멀티캐스트를 포워딩 하지 않고 멀티캐스트를 사용하기 위해서 해당 패킷을 허용하도록 설정해야합니다. #. VRRP 설정을 잘못 정의한 경우도 존재합니다. vrpp그룹, 가상 IP, 인증이 올바르지 않은 경우, 같은 그룹에 존재한다고 취급하지 않습니다. .. rubric:: Force Transition :name: force-transition   - 가끔 인터페이스에 직접 상태를 강제하고 싶을 때가 있습니다. 예를 들어, \ *master* 상태에 있는 소프트웨어를 업그레이드할 때, \ *force* *transition*\ 을 사용하여 강제로 \ *master* 상태에 있는 인터페이스를 \ *backup* 상태로 만들 수 있습니다. 강제로 상태를 변경하고 난 이후에는 소프트웨어 업그레이드를 진행할 수 있습니다. :: ubnt@R2:~$ clear vrrp master interface eth2 group 100 Forcing eth2-100 to BACKUP... - \ *show vrrp* 명령어를 사용하여 현재 상태 정보를 확인할 수 있습니다: :: ubnt@R2:~$ show vrrp Physical interface: eth2, Source Address 192.0.2.20 Interface state: up, Group 100, State: backup Priority: 1, Advertisement interval: 1, Authentication type: none Preempt: true, VIP count: 1, VIP: 192.0.2.1/24 Master router: unknown, Master Priority: unknown Last transition: 8s .. rubric:: Choose the Master :name: choose-the-master   위의 예제에서는 우선순위가 할당되지 않았기때문에 VRRP가 \ *master* 상태를 선정합니다. 가끔은 사용자가 직접 \ *master* 를 지정하고 싶을 때가 존재합니다. 이러한 경우에는 라우터에 우선순위를 할당하여 작업을 할 수 있습니다. 우선순위 값은 1부터 254까지 할당할 수 있습니다. 높은 값이 높은 우선순위를 갖게 됩니다. 다음 명령어를 입력하여 R1에 100을, R2에 50을 할당해봅시다: :: ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 priority 100 [edit] ubnt@R1# commit [edit] :: ubnt@R2# set interfaces ethernet eth2 vrrp vrrp-group 100 priority 50 [edit] ubnt@R2# commit 이제 R1은 인터페이스가 동작할 때마다 항상 \ *master* 상태로 지정됩니다. .. rubric::   :name: section .. rubric:: Preemption :name: preemption   높은 우선순위를 갖는 라우터가 항상 통제권을 갖도록 하는 경우를 원치 않을 때도 있습니다. 이러한 경우에는 선점 옵션을 해제하면 됩니다. 다음 명령어를 사용하여 선점 옵션을 제거 할 수 있습니다: :: ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 preempt false [edit] ubnt@R1# commit [edit] :: ubnt@R2# set interfaces ethernet eth2 vrrp vrrp-group 100 preempt false [edit] ubnt@R2# commit; save; exit .. rubric:: Authentication :name: authentication   인증을 사용하여 인증되지 않은 VRRP 멤버가 \ *master* 가 되기를 방지하는 것을 권합니다. CLI는 \ *plain-text* 모드와 *ah* 모드를 지원합니다. \ *plain-text* 모드는 많은 기능을 제공하지 않으므로 \ *ah* 모드를 사용하기를 권합니다. :: ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 authentication type ah [edit] ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 authentication password mysecret [edit] ubnt@R1# commit [edit] .. rubric:: Sync Groups :name: sync-groups .. raw:: html
.. raw:: html
|image1| .. raw:: html
.. raw:: html
  .. raw:: html
.. raw:: html
  .. raw:: html
.. raw:: html
이 예제에서는 2개의 VRRP 그룹을 사용합니다:   - 192.0.2.0/24 네트워크 대역을 사용하는 인터페이스를 위한 VRRP 그룹 100 - 203.0.113.0/24 네트워크 대역을 사용하는 인터페이스를 위한 VRRP 그룹 200 \ *show vrrp summary* 명령어를 사용하여 자세한 내용을 확인할 수 있습니다: :: ubnt@R1:~$ show vrrp summary VRRP Addr Interface VRRP Interface Group Type Address State State --------- ----- ---- ------- ----- ----- eth1 200 vip 203.0.113.1/24 up master eth2 100 vip 192.0.2.1/24 up master VRPP 그룹 100은 R1 에서 R2로 *master* 의 상태 전환이 이루어지면, VRRP 그룹 200에서도 아무런 문제가 없더라도 같은 작업이 이루어지길 원할 것입니다. 이와 같은 작업을 하기 위해서는 2개의 VRRP 그룹을 \ *sync group*에 추가합니다. :: ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 sync-group Foo [edit] ubnt@R1# set interfaces ethernet eth1 vrrp vrrp-group 200 sync-group Foo [edit] ubnt@R1# commit [edit] \ *show vrrp* 명령어를 사용하여 상태를 조회할 수 있습니다: :: ubnt@R1:~$ show vrrp Physical interface: eth1, Source Address 203.0.113.10 Interface state: up, Group 200, State: master Priority: 100, Advertisement interval: 1, Authentication type: none Preempt: true, VIP count: 1, VIP: 203.0.113.1/24 Master router: 203.0.113.10 Sync-group: Foo Last transition: 9m5s Physical interface: eth2, Source Address 192.0.2.10 Interface state: up, Group 100, State: master Priority: 100, Advertisement interval: 1, Authentication type: none Preempt: true, VIP count: 1, VIP: 192.0.2.1/24 Master router: 192.0.2.10 Sync-group: Foo Last transition: 9m11s ***Note**: sync group내에 있는 VRRP 그룹들은 우선순위와 선점 옵션에 대하여 같은 설정 값을 가지고 있어야 합니다. sync group을 활성화 하기 이전에 하나의 라우터가 양쪽 모두에서 master이고, 다른 라우터는 backup인지 확인하십시요. 위와 같은 작업이 이루어지지 않은 경우에는 sync-group내에서 싱크를 위해서 상태 전환 작업이 계속 수행될 것입니다.   .. rubric:: Transition Scripts :name: transition-scripts   관리자에게 이메일을 보낸다거나 라우팅을 변경하는 등의 예외의 명령어를 수행하는 경우가 존재할 수 있습니다. 이러한 작업을 저장하는 스크립트는 \ */config/script* 내에 저장하는 것을 권장합니다. 해당 스크립트는 소프트웨어가 업그레이드 될때마다 복사되기 때문에 유실될 우려가 적습니다.   *Note: 상태 전환 스크립트는 실행가능해야 합니다. (chmod +x ).* 다음 명령어를 수행하여 상태 전환 스크립트를 추가할 수 있습니다:   :: ubnt@R1# set interfaces ethernet eth2 vrrp vrrp-group 100 run-transition-scripts backup /config/scripts/my_vrrp_script [edit] ubnt@R1# commit [edit] 본 예제는 \ *backup* 상태로 전환을 수행하는 스크립트를 추가하는 예제입니다. 이뿐만 아니라 \ *master*, *fault* 상태로 변경하는 스크립트 또한 필요합니다. ( *fault* 상태는 인터페이스가 불능 상태가 되었을 때를 해당합니다.) 스크립트가 실행되면, 3개의 파라미터를 입력받습니다:   - 전환 할 vrrp 상태 - 인터페이스 - 그룹 .. rubric:: Resource :name: resource   VRRP와 사용법에 관한 유용한 정보는 다음을 참고하세요: \ http://www.redbooks.ibm.com/redpapers/pdfs/redp3657.pdf .. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. raw:: html
.. |image0| image:: /hc/en-us/article_attachments/202767854/topography.png :target: http://wiki.ubnt.com/File:EdgeOS_VRRP_RGB.png .. |image1| image:: /hc/en-us/article_attachments/202767864/sync_groups.png :target: http://wiki.ubnt.com/File:EdgeOS_VRRP_Sync_Groups_RGB.png