티스토리 뷰

os/Linux

linux bridge with hairpin

Jacob_baek 2016. 8. 11. 13:03

bridge 명령 사용준비

아래 명령으로 설치하여 사용할수도 있고
(RHEL 7에는 기본으로 포함되어 있다.)

yum install bridge-utils
# apt install bridge-utils

아래 사이트에서 clone 하여 make 하고 사용할 수도 있다.

bridge 사용법

brctl 기본 사용법

Usage: brctl [commands]  
commands:  
        addbr           <bridge>                add bridge  
        delbr           <bridge>                delete bridge  
        addif           <bridge> <device>       add interface to bridge  
        delif           <bridge> <device>       delete interface from bridge  
        hairpin         <bridge> <port> {on|off}        turn hairpin on/off  
        setageing       <bridge> <time>         set ageing time  
        setbridgeprio   <bridge> <prio>         set bridge priority  
        setfd           <bridge> <time>         set bridge forward delay  
        sethello        <bridge> <time>         set hello time  
        setmaxage       <bridge> <time>         set max message age  
        setpathcost     <bridge> <port> <cost>  set path cost  
        setportprio     <bridge> <port> <prio>  set port priority  
        show            [ <bridge> ]            show a list of bridges  
        showmacs        <bridge>                show a list of mac addrs  
        showstp         <bridge>                show bridge stp info  
        stp             <bridge> {on|off}       turn stp on/off

CentOS 7 기준 brctl version은 다음과 같다.

[root@localhost ~\]# brctl --version  
bridge-utils, 1.5  

Hairpin

hairpin 이란?
NAT loopback 이라고도 불리우는 hairpin은 NAT장비대역뒤에 서버간의 통신상에서 사용되는 용어이며
대외로 서비스 하고 있는 서버를 서비스되고 있던 서버와 동일한 네트워크를 사용하는 서버가 통신을 하게 하기 위한 방식이라 보면 된다.
결론은 NAT 장비 뒷단의 서버들 중 하나가 대외 서비스를 하고 있고 동일한 사내 네트워크 사용하던 서버는 대외 서비스를 하는 서버의 대외 서비스 IP로 연결을 시도하게 되는데 이는 별도의 처리가 없는 경우 폐기 되게 된다. 이를 hairpin mode를 통해 통신이 이루어질수 있도록 만드는것이다.
실제 과정은 아래 링크를 참고하여 이해하기 바란다.

일반적으로 다음과 같은 조건이 있는 경우 Hairpin 현상이 발생될 수 있다.

  • 동일 subnet 내에서 NAT와 public IP로 서비스되는 서버가 같이 존재하며
  • 동일한 subnet내 다른 서버가 public IP로 접근하려 할때

hairpin mode의 on/off 설정

[root@localhost ~]# brctl hairpin qbr5074cfa8-bd qvb5074cfa8-bd off  
[root@localhost ~]# brctl hairpin qbr5074cfa8-bd tap5074cfa8-bd off  
[root@localhost ~]# brctl showstp hairpin qbr5074cfa8-bd

showstp command를 이용해 각 port의 flag field 하단에 hairpin mode를 확인할 수 있다.

그외에 bridge command를 이용하여 확인 및 제어를 수행할 수 있다.

brctl과 bridge를 비교 자료를 아래의 링크에서 확인할 수 있다.

참고로 OpenStack의 경우 openvswitch에서 iptables를 통한 control를 수행할수 없어 bridge를 이용한다.

'os > Linux' 카테고리의 다른 글

dnsmasq  (0) 2018.03.02
changing for size of centos root  (0) 2016.10.28
socket option related kernel  (0) 2015.03.09
ssh certification  (0) 2014.09.01
desktop icon execution of root privilege in ubuntu  (0) 2013.05.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함