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)