bgp+ipip组网
明白了,你要求的是 iBGP 和 eBGP 的示例都用三台机器,而且 eBGP 三台机器分别属于三个不同的 AS,完全分开。下面给出完整配置示例,包括 Linux IP 配置和 BIRD 配置,并提供拓扑说明。
一、iBGP 示例(三台机器同 AS)
1️⃣ 拓扑
| 主机 | 物理 IP | Router ID | AS号 |
|---|---|---|---|
| Linux-A | 192.168.1.1 | 10.0.0.1 | 65001 |
| Linux-B | 192.168.1.2 | 10.0.0.2 | 65001 |
| Linux-C | 192.168.1.3 | 10.0.0.3 | 65001 |
IPIP 隧道(用于 iBGP 通告):
| 隧道 | 源 | 目的 | 子网 |
|---|---|---|---|
| ipip-A-B | 192.168.1.1 | 192.168.1.2 | 10.1.1.0/24 |
| ipip-A-C | 192.168.1.1 | 192.168.1.3 | 10.1.2.0/24 |
| ipip-B-C | 192.168.1.2 | 192.168.1.3 | 10.1.3.0/24 |
2️⃣ Linux IP 配置(iBGP)
Linux-A
ip addr add 192.168.1.1/24 dev eth0
ip link set eth0 up
ip tunnel add ipip-A-B mode ipip remote 192.168.1.2 local 192.168.1.1 dev eth0
ip addr add 10.1.1.1/24 dev ipip-A-B
ip link set ipip-A-B up
ip tunnel add ipip-A-C mode ipip remote 192.168.1.3 local 192.168.1.1 dev eth0
ip addr add 10.1.2.1/24 dev ipip-A-C
ip link set ipip-A-C up
Linux-B
ip addr add 192.168.1.2/24 dev eth0
ip link set eth0 up
ip tunnel add ipip-B-A mode ipip remote 192.168.1.1 local 192.168.1.2 dev eth0
ip addr add 10.1.1.2/24 dev ipip-B-A
ip link set ipip-B-A up
ip tunnel add ipip-B-C mode ipip remote 192.168.1.3 local 192.168.1.2 dev eth0
ip addr add 10.1.3.2/24 dev ipip-B-C
ip link set ipip-B-C up
Linux-C
ip addr add 192.168.1.3/24 dev eth0
ip link set eth0 up
ip tunnel add ipip-C-A mode ipip remote 192.168.1.1 local 192.168.1.3 dev eth0
ip addr add 10.1.2.3/24 dev ipip-C-A
ip link set ipip-C-A up
ip tunnel add ipip-C-B mode ipip remote 192.168.1.2 local 192.168.1.3 dev eth0
ip addr add 10.1.3.3/24 dev ipip-C-B
ip link set ipip-C-B up
3️⃣ BIRD 配置(iBGP)
Linux-A
router id 10.0.0.1;
protocol kernel {
persist;
scan time 20;
import all;
export all;
}
protocol device {
scan time 10;
}
protocol bgp iBGP-B {
local as 65001;
neighbor 10.1.1.2 as 65001;
source address 10.1.1.1;
import all;
export all;
}
protocol bgp iBGP-C {
local as 65001;
neighbor 10.1.2.3 as 65001;
source address 10.1.2.1;
import all;
export all;
}
Linux-B 和 Linux-C 类似,只修改 router id、local as 和 neighbor IP。
二、eBGP 示例(三台机器跨三个不同 AS)
1️⃣ 拓扑
| 主机 | 物理 IP | Router ID | AS号 |
|---|---|---|---|
| Linux-A | 192.168.2.1 | 20.0.0.1 | 65001 |
| Linux-B | 192.168.2.2 | 20.0.0.2 | 65002 |
| Linux-C | 192.168.3.1 | 30.0.0.1 | 65003 |
IPIP 隧道(用于 eBGP 通告):
| 隧道 | 源 | 目的 | 子网 |
|---|---|---|---|
| ipip-A-B | 192.168.2.1 | 192.168.2.2 | 10.2.1.0/24 |
| ipip-A-C | 192.168.2.1 | 192.168.3.1 | 10.2.2.0/24 |
| ipip-B-C | 192.168.2.2 | 192.168.3.1 | 10.2.3.0/24 |
2️⃣ Linux IP 配置(eBGP)
Linux-A (AS 65001)
ip addr add 192.168.2.1/24 dev eth0
ip link set eth0 up
ip tunnel add ipip-A-B mode ipip remote 192.168.2.2 local 192.168.2.1 dev eth0
ip addr add 10.2.1.1/24 dev ipip-A-B
ip link set ipip-A-B up
ip tunnel add ipip-A-C mode ipip remote 192.168.3.1 local 192.168.2.1 dev eth0
ip addr add 10.2.2.1/24 dev ipip-A-C
ip link set ipip-A-C up
Linux-B (AS 65002)
ip addr add 192.168.2.2/24 dev eth0
ip link set eth0 up
ip tunnel add ipip-B-A mode ipip remote 192.168.2.1 local 192.168.2.2 dev eth0
ip addr add 10.2.1.2/24 dev ipip-B-A
ip link set ipip-B-A up
ip tunnel add ipip-B-C mode ipip remote 192.168.3.1 local 192.168.2.2 dev eth0
ip addr add 10.2.3.2/24 dev ipip-B-C
ip link set ipip-B-C up
Linux-C (AS 65003)
ip addr add 192.168.3.1/24 dev eth0
ip link set eth0 up
ip tunnel add ipip-C-A mode ipip remote 192.168.2.1 local 192.168.3.1 dev eth0
ip addr add 10.2.2.3/24 dev ipip-C-A
ip link set ipip-C-A up
ip tunnel add ipip-C-B mode ipip remote 192.168.2.2 local 192.168.3.1 dev eth0
ip addr add 10.2.3.3/24 dev ipip-C-B
ip link set ipip-C-B up
3️⃣ BIRD 配置(eBGP)
Linux-A (AS 65001)
router id 20.0.0.1;
protocol kernel { persist; scan time 20; import all; export all; }
protocol device { scan time 10; }
protocol bgp eBGP-B {
local as 65001;
neighbor 10.2.1.2 as 65002;
source address 10.2.1.1;
import all; export all;
}
protocol bgp eBGP-C {
local as 65001;
neighbor 10.2.2.3 as 65003;
source address 10.2.2.1;
import all; export all;
}
Linux-B (AS 65002)
router id 20.0.0.2;
protocol kernel { persist; scan time 20; import all; export all; }
protocol device { scan time 10; }
protocol bgp eBGP-A {
local as 65002;
neighbor 10.2.1.1 as 65001;
source address 10.2.1.2;
import all; export all;
}
protocol bgp eBGP-C {
local as 65002;
neighbor 10.2.3.3 as 65003;
source address 10.2.3.2;
import all; export all;
}
Linux-C (AS 65003)
router id 30.0.0.1;
protocol kernel { persist; scan time 20; import all; export all; }
protocol device { scan time 10; }
protocol bgp eBGP-A {
local as 65003;
neighbor 10.2.2.1 as 65001;
source address 10.2.2.3;
import all; export all;
}
protocol bgp eBGP-B {
local as 65003;
neighbor 10.2.3.2 as 65002;
source address 10.2.3.3;
import all; export all;
}
✅ 总结:
-
iBGP:三台机器在同一个 AS(65001),互相通告路由。
-
eBGP:三台机器分别属于 AS 65001、65002、65003,形成全互联跨 AS 通告。
-
IPIP 隧道用于承载 BGP 邻居通信。
-
Linux IP 和 BIRD 配置可直接按示例修改。
浙公网安备 33010602011771号