[학습 목표]
1) BGP
2) eBGP
3) iBGP
BGP 실습 설정 | |
기본 설정 R1(config)#int lo0 R1(config-if)#ip add 10.10.10.10 255.255.255.0 R1(config)#int e0/0 R1(config-if)#ip add 10.10.12.1 255.255.255.0 R1(config-if)#no shut eBGP 설정 R1(config)#router bgp 1 R1(config-router)#bgp router-id 10.10.10.10 R1(config-router)#neighbor 10.10.12.2 remote-as 2 R1(config-router)#network 10.10.10.0 mask 255.255.255.0 |
기본 설정 R2(config)#int lo0 R2(config-if)#ip add 20.20.20.20 255.255.255.0 R2(config-if)#int e0/0 R2(config-if)#ip add 10.10.12.2 255.255.255.0 R2(config-if)#no shut R2(config-if)#int e0/1 R2(config-if)#ip add 20.20.23.2 255.255.255.0 R2(config-if)#no shut R2(config)#router ospf 1 R2(config-router)#router-id 20.20.20.20 R2(config-router)#network 10.10.12.2 0.0.0.0 area 0 R2(config-router)#network 20.20.23.2 0.0.0.0 area 0 R2(config-router)#network 20.20.20.20 0.0.0.0 area 0 R2(config-router)#passive-interface e0/0 R2(config)#int range e0/0-1 R2(config-if-range)#ip ospf network point-to-point eBGP 설정 R2(config)#router bgp 2 R2(config-router)#bgp router-id 20.20.20.20 R2(config-router)#neighbor 10.10.12.1 remote-as 1 R2(config-router)#network 20.20.20.0 mask 255.255.255.0 iBGP 설정 R2(config)#router bgp 2 R2(config-router)#neighbor 30.30.30.30 remote-as 2 R2(config-router)#neighbor 30.30.30.30 update-source lo0 R2(config-router)#neighbor 40.40.40.40 remote-as 2 R2(config-router)#neighbor 40.40.40.40 update-source lo0 |
기본 설정 R3(config)#int lo0 R3(config-if)#ip add 30.30.30.30 255.255.255.0 R3(config-if)#int e0/1 R3(config-if)#ip add 20.20.23.3 255.255.255.0 R3(config-if)#no shut R3(config-if)#int e0/2 R3(config-if)#ip add 30.30.34.3 255.255.255.0 R3(config-if)#no shut R3(config)#router ospf 1 R3(config-router)#router-id 30.30.30.30 R3(config-router)#network 20.20.23.3 0.0.0.0 area 0 R3(config-router)#network 30.30.34.3 0.0.0.0 area 0 R3(config-router)#network 30.30.30.30 0.0.0.0 area 0 R3(config)#int range e0/1-2 R3(config-if-range)#ip ospf network point-to-point iBGP 설정 R3(config)#router bgp 2 R3(config-router)#bgp router-id 30.30.30.30 R3(config-router)#neighbor 20.20.20.20 remote-as 2 R3(config-router)#neighbor 20.20.20.20 update-source lo0 R3(config-router)#neighbor 40.40.40.40 remote-as 2 R3(config-router)#neighbor 40.40.40.40 update-source lo0 R3(config-router)#network 30.30.30.0 mask 255.255.255.0 |
기본 설정 R4(config-if)#int lo0 R4(config-if)#ip add 40.40.40.40 255.255.255.0 R4(config-if)#int e0/2 R4(config-if)#ip add 30.30.34.4 255.255.255.0 R4(config-if)#no shut R4(config)#router ospf 1 R4(config-router)#router-id 40.40.40.40 R4(config-router)#network 30.30.34.4 0.0.0.0 area 0 R4(config-router)#network 40.40.40.40 0.0.0.0 area 0 R4(config-router)#int e0/2 R4(config-if)#ip ospf network point-to-point iBGP 설정 R4(config)#router bgp 2 R4(config-router)#bgp router-id 40.40.40.40 R4(config-router)#neighbor 30.30.30.30 remote-as 2 R4(config-router)#neighbor 30.30.30.30 update-source lo0 R4(config-router)#neighbor 20.20.20.20 remote-as 2 R4(config-router)#neighbor 20.20.20.20 update-source lo0 R4(config-router)#network 40.40.40.0 mask 255.255.255.0 |
1) BGP란 무엇인가?
✅ 정의
- BGP (Border Gateway Protocol는 인터넷에서 사용하는 Exterior Gateway Protocol (EGP)다.
- 현재 사용하는 버전은 BGP-4, Path Vector Protocol 기반이다.
- AS (Autonomous System, 자율 시스템) 간에 라우팅 정보를 교환하는 데 사용된다.
- 경로 선택 시 단순히 metric이 아닌, 경로 속성(Path Attributes)을 기반으로 "최적의 경로"를 선택한다.
- TCP 포트 179를 사용하고, 신뢰성 있는 연결을 위해 TCP 기반이다.
ex) 네트워크가 한 회사 내부라면 IGP (예: OSPF, EIGRP 등)를 사용하고 네트워크가 다른 회사나 조직과 연결될 땐 BGP를 사용한다.
❗ 쉽게 말해서,
인터넷에서 수많은 네트워크(AS: Autonomous System)를 서로 연결해주는 라우팅 프로토콜이다.
2) eBGP란 무엇인가?
✅ 정의
- eBGP는 서로 다른 Autonomous System (AS) 간에 경로 정보를 교환하는 External BGP 세션을 의미한다.
- 인터넷 환경에서 ISP, 클라우드 사업자, 또는 기업 네트워크가 다른 외부 네트워크와 트래픽을 주고받기 위해 사용한다.
❗ 즉, 경계 라우터들 간에 라우팅 정책 및 경로 정보를 교환하여 인터넷 전체에서 목적지까지의 최적 경로를 계산하는 것이 eBGP의 주 목적이다.
✅ 주요 특징
항목 | 설명 |
AS 간 연결 | 서로 다른 AS 번호를 가진 라우터 간에 구성됨 |
기본 TTL | TCP 세션의 TTL은 1로 설정되며, **직접 연결(Direct Link)**이 기본 전제이다 |
경로 속성 | AS_PATH, NEXT_HOP, ORIGIN, MED 등의 Path Attributes를 사용하여 경로 선택 |
트래픽 제어 | prefix-list, AS-path filter, route-map 등을 통해 정교한 경로 제어가 가능 |
라우팅 정책 | 정책 기반 라우팅 및 비대칭 라우팅 방지 등을 위해 Inbound/Outbound 정책 수립 필수 |
인증 기능 | BGP session 보호를 위한 MD5 Authentication 가능 (Cisco: neighbor X.X.X.X password ...) |
🔎 실습

AS 1 의 eBGP router R1과 AS 2 의 eBGP router R2가 eBGP 관계를 맺었다.
R1(config)#router bgp 1
R1(config-router)#bgp router-id 10.10.10.10
R1(config-router)#neighbor 10.10.12.2 remote-as 2
R1(config-router)#network 10.10.10.0 mask 255.255.255.0
#
R1(config)#router bgp 1
- 이 명령어는 AS 번호 1번으로 BGP 프로세스를 시작한다는 의미이다.
- 여기서 1은 R1 라우터가 속한 자율 시스템 번호(AS number)이다.
- BGP는 각 라우터가 자신이 속한 AS 번호를 기준으로 피어와 세션을 맺기 때문에, 이 값은 정확해야 한다.
R1(config-router)#neighbor 10.10.12.2 remote-as 2
- 이 명령어는 BGP 피어를 지정하는 핵심 명령어이다.
- 10.10.12.2는 이웃 라우터의 인터페이스 IP 주소이다.
- remote-as 2는 상대방 라우터가 속한 AS 번호가 2번이라는 의미이다.
- 이 설정을 통해 R1과 R2는 서로 다른 AS 번호를 사용하므로 eBGP 세션이 수립된다.
- 이웃 라우터와의 TCP 179번 포트 연결이 이 설정을 통해 이루어진다.
R1(config-router)#network 10.10.10.0 mask 255.255.255.0
- 이 명령어는 BGP가 외부로 광고할 네트워크를 지정하는 명령이다.
- 해당 네트워크가 라우팅 테이블(RIB)에 존재하면 광고가 가능하다.
- 즉, 10.10.10.0/24 네트워크가 show ip route 상에서 존재해야 광고가 수행된다.
- 보통은 Loopback 인터페이스나 Static Route 등을 통해 RIB에 등록해 두는 것이 일반적이다.
2) iBGP란 무엇인가?
✅ iBGP란?
- iBGP는 하나의 Autonomous System (AS) 내에서 BGP 경로 정보를 내부 라우터들끼리 전달하기 위해 사용하는 BGP 프로토콜이다.
❗ 즉, 같은 AS 번호를 공유하는 라우터 간에 구성되는 BGP 세션을 의미한다.
✅ iBGP가 왜 필요할까?
eBGP를 통해 외부 AS에서 받은 경로 정보를 내부로 전달하려면, AS 내부에서도 BGP 프로토콜을 사용해야 한다.
단, IGP(OSPF, EIGRP 등)로는 BGP 경로 속성 (AS_PATH, MED, LOCAL_PREF 등)을 유지하면서 전달할 수 없기 때문에,
iBGP를 통해 내부에서도 BGP 경로를 그대로 전달해야 한다.
✅ iBGP와 eBGP의 차이점
항목 | iBGP | eBGP |
AS 번호 | 동일한 AS 번호 | 서로 다른 AS 번호 |
기본 TTL | 255 | 1 |
NEXT_HOP 변경 | 변경하지 않는다 (수동 설정 필요) | 기본적으로 상대방 인터페이스로 변경된다 |
루프 방지 | Split Horizon 룰 사용 | AS_PATH 사용 |
Peer 구성 방식 | Full Mesh 필요 (Route Reflector 등 회피 가능) | 직접 연결만 하면 됨 |
일반 용도 | 내부 BGP 경로 분산 | 외부 네트워크와 BGP 세션 구성 |
🔎 실습
iBGP 설정 후 R4에서 R1 lo0으로 ping을 확인한다.
ping 10.10.10.10 은 실패 하지만,
ping 10.10.10.10 source 40.40.40.40 은 성공한다.
왜냐하면,
R4(config-router)#neighbor 20.20.20.20 update-source lo0
기본적으로 BGP는 피어 IP로 설정한 주소에 대해 라우터의 해당 인터페이스 IP를 출발지로 사용하는데,
이 명령은 BGP 세션을 구성할 때, 출발지(Source) IP를 Loopback0 인터페이스의 IP로 설정하겠다는 의미이다.
따라서 인터페이스 주소는 모르기 때문에 실패하지만, Loopback 주소는 알기 때문에 핑이 간다.
이 설정은 상대방도 반드시 update-source를 Loopback으로 설정해야 세션이 맺어진다.
❗ 즉, 이웃 간에 Loopback ↔ Loopback으로 세션을 구성하는 방식이다.
R2,R3,R4 모두 위 명령어 처럼 iBGP 맺은 후, R2 bgp table 모습이다.
R2(config)#router bgp 2
R2(config-router)#neighbor 30.30.30.30 remote-as 2
R2(config-router)#neighbor 30.30.30.30 update-source lo0
R2(config-router)#neighbor 40.40.40.40 remote-as 2
R2(config-router)#neighbor 40.40.40.40 update-source lo0
#
* → 유효한 경로임
> → BGP가 선택한 최적 경로임
i → 이 경로가 같은 AS 안에서 iBGP를 통해 전달받은 경로라는 뜻이다.
Next Hop
10.10.12.1 → 이 경로로 패킷을 보내야 목적지에 도달 가능함
Path
1 i
1 = eBGP로 받은 경로로, AS 1을 거쳐왔다는 의미
i = iBGP로 내부에서 받아들였다는 뜻 (AS 내부 전달)
❗ Next Hop IP가 라우팅 테이블에 있어야 트래픽이 실제로 전달된다 → show ip route로 확인
30.30.30.30, 40.40.40.40 같은 Next Hop은 IGP로 reachability 확보되어야 함
'네트워크' 카테고리의 다른 글
BGP #3(weight,local preference,MED) (0) | 2025.04.12 |
---|---|
BGP #2(Next Hop,Split Horizon) (0) | 2025.04.10 |
OSPF #4(Virtual-link,Demand circuit) (0) | 2025.04.05 |
OSPF #3(Summarization,Authentication) (0) | 2025.04.02 |
OPSF #2(LSA,Stub Area) (0) | 2025.03.30 |