BGP

    BGP란?

    BGP 라우팅 프로토콜
     # 네트워크에 연결된 많은 조직들 간에 통신을 주고 받을 수 있도록 자신의 네트워크 정보를
    	 교환하고 업데이트 하기 위해 사용하는 라우팅 프로토콜
     # 각 조직을 구분하기 위한 단위로 AS 번호를 사용 
     # 최적의 경로를 선택하여 데이터 패킷을 전송하는 역할을 함
    
    BGP Session
     # TCP 179 포트를 사용
     # IDLE -> Connect -> OpenSent -> Active -> OpenConfirm -> Established 과정을 거쳐 연결
     # 주로 Active상태에서 멈출 수 있는데 상대 BGP로부터 Open 메시지를 수신하지 못할 때임
     
     
     # 이때, BGP 는 기본적으로 인접장치로 세션을 이루기때문에 TTL = 1(기본값) 이다.
     # TTL : 라우터에서 다른 라우터로 거쳐갈 수 있는 한계치

     

    적용방법

    세션구축

     

    sudo apt install bird-bgp             
    # bird-bgp만 설치해도 bird까지 같이설치됨
    
    /etc/bird/bird.conf      
    # 이곳을 수정한다.
    router id [router id];                     
    # router id는 반드시 중복이 되면 안된다!
    
    protocol kernel {
    				scan time 60;
    				import all;                     # 모든 라우트정보 공유
    				export all;                     # 같은 의미
    }
    
    protocol bgp {
    				local as 65000                  # local(bgp1)의 as번호는 65100
    				neighbor 100.1.1.2 as 65100     # bgp2의  as 65000
    				export all;            
    				import all;
    }
    
    sudo systemctl restart bird
    sudo birdc show protocols
    # 여기서 ESTABLISHED 가 보이면 세션 구축 성공이다

    라우팅 정보 입력

    # 세션을 구축했다고 끝이 아니다.
    # 추가적으로 공유할 라우팅 정보들을 여기서 넣어주어야 한다
    /etc/bird/bird.conf
    
    protocol static {
    				route 172.16.0.0/24 via "enp0s8"; 
                    # 주소 via 주소의어댑터
    				# vpn 2는 route 192.168.0.0/24 via "enp0s9";
    }
    
    
    
    sudo birdc configure                 
    # 변경 사항 저장
    # 정상적으로 공유되었다면, 
    sudo birdc show route
    # 했을 때 보여야 함

     

    만약 VPN을 이용했을 경우,

    BGP1  ----- VPN1 ------- VPN2 ------- BGP2
    다음과 같은 구조라고 가정할 때, 설정은 다음과 같이 바뀐다

    router id [route id];       
    
    protocol kernel {
    				scan time 60;
    				import all;
    				export all;
    }
    
    protocol static {
    				rotue 192.168.0.1/32 via 172.16.0.254;  # <<<<< 추가된 점 (next 홉의 주소)
                    # 이처럼 멀티홉일 경우, 다음 홉에 대한 정보를 넣어주어야 unreachable이 안뜸
    				route 172.16.0.0/24 via "enp0s8";
    				route 172.16.1.0/24 via "lo";
    				route 172.16.2.0/24 via "lo";
    }
    
    protocol bgp {
    				local as 65000;                
    				neighbor 192.168.0.1 as 65100; 
    				import all;
    				export all;
    				multihop 3;     # <<<<<<<<<<<<<<< 추가된 점 (목표까지 홉)
    }

    'Network' 카테고리의 다른 글

    VPN  (0) 2024.02.10
    ACL & NAT  (0) 2024.02.10
    Linux DNS 서버 구축  (0) 2023.12.31

    댓글