bgp+ipip组网

明白了,你要求的是 iBGP 和 eBGP 的示例都用三台机器,而且 eBGP 三台机器分别属于三个不同的 AS,完全分开。下面给出完整配置示例,包括 Linux IP 配置和 BIRD 配置,并提供拓扑说明。


一、iBGP 示例(三台机器同 AS)

1️⃣ 拓扑

主机物理 IPRouter IDAS号
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️⃣ 拓扑

主机物理 IPRouter IDAS号
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;
}

✅ 总结:

  1. iBGP:三台机器在同一个 AS(65001),互相通告路由。

  2. eBGP:三台机器分别属于 AS 65001、65002、65003,形成全互联跨 AS 通告。

  3. IPIP 隧道用于承载 BGP 邻居通信。

  4. Linux IP 和 BIRD 配置可直接按示例修改。


 

posted on 2025-09-09 15:15  吃草的青蛙  阅读(15)  评论(0)    收藏  举报

导航