Office365向けトラフィックを、BGPプロトコルで一括制御できないか検証

シェアする

Office365 向けのトラフィックだけを、直接インターネット向けにルーティングしたいため、アイディアを練っていました。

実際に行うとなると、公開されているOffice365サーバー群のIPアドレスを、ひたすらスタティック・ルート設定すれば解決しそうです。
しかし、このサーバーIPが頻繁に追加や変更がされるため、対象となるルーターが多いと厳しい話になるのは当たり前ですね。

そこで、スタティックルート設定を一箇所で管理して(登録して)、なんとか複数ルータへ配布できないかなぁ ⇒ BGPで経路情報を配ってみようということで、検証してみました。

そこで、Office365向け経路制御を、BGPプロトコルで一括制御できないかquagga(bgpd)とCiscoルータ(1812J)を使い小規模な検証ですが、なんとなく行けそうな気がしました♪

テスト環境

◆センター側
AWS EC2仮想マシン
プライベート側 172.31.13.138
パブリック側 AAA.AAA.AAA.AAA
AS番号65001

◆拠点側
WAN側 BBB.BBB.BBB.BBB
ADSLモデムルータ
LAN側 192.168.3.1

Fa0 192.168.3.20
C1812J (ここでBGPを動かします。AS番号65002
vlan1 192.168.20.1

192.168.20.100
テスト機

拠点側テスト環境作成

Cisco1812J

!
hostname C1812J

!
interface FastEthernet0
no shutdown
ip address 192.168.3.20 255.255.255.0
ip nat outside
!
interface range Fa 2-9
no shutdown
!
interface Vlan1
ip address 192.168.20.1 255.255.255.0
ip nat inside
!
ip nat inside source list 100 interface FastEthernet0 overload
ip route 0.0.0.0 0.0.0.0 192.168.3.1
!
access-list 100 deny ip 192.168.20.0 0.0.0.255 10.20.0.0 0.0.255.255
access-list 100 permit ip 192.168.20.0 0.0.0.255 any
!

ADSLモデムルータのポート転送設定

グローバルIPを直接テスト用ルータに振れないので、NAT設定をしています。(本番環境では不要な話でしょう)

No. 有効/無効  プロトコル  WAN側ポート番号  LAN側ポート番号  転送先IPアドレス
3 有効  TCP  179-179  179-179  192.168.3.20

センター側テスト環境用に、AWS EC2にて仮想マシン準備

AMIは、Amazon-linux

Amazon Linux AMI 2015.03 (HVM), SSD Volume Type – ami-cbf90ecb

セキュリティグループの設定

SSH カスタムTCP 22/tcp ソースIP 0.0.0.0/0
BGP4 カスタムTCP 179/tcp ソースIP 0.0.0.0/0
Ping カスタムICMP エコー要求 ソースIP 0.0.0.0/0

必要なソフトウェアを追加

yum -y install quagga
yum -y install telnet

/etc/quagga/bgpd.conf を作成

hostname bgpd
password zebra
router bgp 65001
log stdout

bgpdを起動し接続テスト

service bgpd start
telnet localhost 2605

経路情報の配布テスト設定

今回は、Yahoo WebサイトのIP(124.83.147.249/32)向け経路を試しに配布してみます

経路配布側(EC2 のquagga)

router bgp 65001
  bgp router-id 172.31.13.138
  network 124.83.147.249/32
  neighbor BBB.BBB.BBB.BBB remote-as 65002
  neighbor BBB.BBB.BBB.BBB ebgp-multihop 255

経路注入される側(C1812J)

router bgp 65002
 no synchronization
 bgp router-id 192.168.20.1
 bgp log-neighbor-changes
 neighbor AAA.AAA.AAA.AAA remote-as 65001
 neighbor AAA.AAA.AAA.AAA ebgp-multihop 255
 no auto-summary
!
ip route 0.0.0.0 0.0.0.0 Null0
ip route AAA.AAA.AAA.AAA 255.255.255.255 192.168.3.1 ←※
ip route 172.31.13.138 255.255.255.255 192.168.3.1
※ベストパスとして選定されるように、スタティックルートを追加しているのがポイントです

結果確認

124.83.147.249/32 が、経路登録されたのが分かります

経路配布側(EC2 のquagga)

bgpd# sh ip bgp summary
BGP router identifier 172.31.13.138, local AS number 65001
RIB entries 1, using 96 bytes of memory
Peers 1, using 4560 bytes of memory

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
BBB.BBB.BBB.BBB   4 65002      26      27        0    0    0 00:21:16        0

Total number of neighbors 1

bgpd# sh ip bgp
BGP table version is 0, local router ID is 172.31.13.138
Status codes: s suppressed, d damped, h history, * valid, > best, i – internal,
r RIB-failure, S Stale, R Removed
Origin codes: i – IGP, e – EGP, ? – incomplete

Network                   Next Hop  Metric LocPrf Weight Path
*> 124.83.147.249/32    0.0.0.0       0                  32768 i

Total number of prefixes 1
bgpd#

経路注入される側(C1812J)

C1812J#sh ip bgp summary
BGP router identifier 192.168.20.1, local AS number 65002
BGP table version is 4, main routing table version 4
1 network entries using 120 bytes of memory
1 path entries using 52 bytes of memory
1/1 BGP path/bestpath attribute entries using 124 bytes of memory
1 BGP AS-PATH entries using 24 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 320 total bytes of memory
BGP activity 2/1 prefixes, 2/1 paths, scan interval 60 secs
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
AAA.AAA.AAA.AAA     4        65001      29      30        4    0    0 00:23:44        1
C1812J#
C1812J#sh ip bgp
BGP table version is 4, local router ID is 192.168.20.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network          Next Hop            Metric LocPrf Weight Path
*> 124.83.147.249/32
                    172.31.13.138            0             0 65001 i
C1812J#
C1812J#sh ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, + - replicated route

Gateway of last resort is 0.0.0.0 to network 0.0.0.0

S*    0.0.0.0/0 is directly connected, Null0
52.0.0.0/32 is subnetted, 1 subnets
S        AAA.AAA.AAA.AAA [1/0] via 192.168.3.1
124.0.0.0/32 is subnetted, 1 subnets
B        124.83.147.249 [20/0] via 172.31.13.138, 00:09:52
172.31.0.0/32 is subnetted, 1 subnets
S        172.31.13.138 [1/0] via 192.168.3.1
192.168.3.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.3.0/24 is directly connected, FastEthernet0
L        192.168.3.20/32 is directly connected, FastEthernet0
192.168.20.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.20.0/24 is directly connected, Vlan1
L        192.168.20.1/32 is directly connected, Vlan1
C1812J#

拠点側テスト機

経路情報をC1812Jが持ち、正しくPingが当たりました

>ping 124.83.147.249

124.83.147.249 に ping を送信しています 32 バイトのデータ
124.83.147.249 からの応答: バイト数 =32 時間 =67ms TTL=50
124.83.147.249 からの応答: バイト数 =32 時間 =40ms TTL=50
124.83.147.249 からの応答: バイト数 =32 時間 =38ms TTL=50
124.83.147.249 からの応答: バイト数 =32 時間 =40ms TTL=50

最終的なconfig

経路配布側(EC2 のquagga)

!
! Zebra configuration saved from vty
!   2015/08/01 15:39:10
!
hostname bgpd
password zebra
log stdout
!
router bgp 65001
 bgp router-id 172.31.13.138
 network 124.83.147.249/32
 neighbor BBB.BBB.BBB.BBB remote-as 65002
 neighbor BBB.BBB.BBB.BBB ebgp-multihop 255
!
line vty
!

経路注入される側(C1812J)

!
! Last configuration change at 15:32:27 UTC Sat Aug 1 2015 by admin
!
version 15.1
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname C1812J
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
!
!
!
dot11 syslog
no ip source-route
!
!
no ip dhcp conflict logging
ip dhcp excluded-address 192.168.20.1
ip dhcp excluded-address 192.168.20.21 192.168.20.254
!
ip dhcp pool dhcp-pool
   network 192.168.20.0 255.255.255.0
   default-router 192.168.20.1
   domain-name localdomain
   dns-server 192.168.3.1
   lease 0 0 15
!
!
ip cef
no ip domain lookup
ip name-server 192.168.3.1
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
license udi pid CISCO1812-J/K9 sn XXXXXXXX
vtp domain test-dom
vtp mode transparent
vtp version 2
username XXXXX privilege 15 secret 5 XXXXXXXXX
!
!
crypto ikev2 diagnose error 50
!
!
!
!
!
!
!
!
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
!
interface FastEthernet0
 ip address 192.168.3.20 255.255.255.0
 ip nat outside
 ip virtual-reassembly
 duplex auto
 speed auto
!
interface FastEthernet1
 no ip address
 shutdown
 duplex auto
 speed auto
!
interface FastEthernet2
!
interface FastEthernet3
!
interface FastEthernet4
!
interface FastEthernet5
!
interface FastEthernet6
!
interface FastEthernet7
!
interface FastEthernet8
!
interface FastEthernet9
!
interface Vlan1
 ip address 192.168.20.1 255.255.255.0
 ip nat inside
 ip virtual-reassembly
!
router bgp 65002
 no synchronization
 bgp router-id 192.168.20.1
 bgp log-neighbor-changes
 neighbor AAA.AAA.AAA.AAA remote-as 65001
 neighbor AAA.AAA.AAA.AAA ebgp-multihop 255
 no auto-summary
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip nat inside source list 100 interface FastEthernet0 overload
ip route 0.0.0.0 0.0.0.0 Null0
ip route AAA.AAA.AAA.AAA 255.255.255.255 192.168.3.1
ip route 172.31.13.138 255.255.255.255 192.168.3.1
!
access-list 100 deny   ip 192.168.20.0 0.0.0.255 10.20.0.0 0.0.255.255
access-list 100 permit ip 192.168.20.0 0.0.0.255 any
!
!
!
!
!
!
control-plane
!
!
line con 0
 login local
line aux 0
line vty 0 4
 login local
 transport input telnet ssh
line vty 5 15
 login local
 transport input telnet ssh
!
end

参考ページ

ルーティングソフトウェア quagga の設定

BGP(基本設定 ベストパスの確認 その2)