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 |
댓글