自宅の「Cisco/Juniper/Fortigate」でBGPを喋らせてみた
結構前から『自宅ラックでBGP喋らせたいな~ IHAnet繋ぎたいな~』と思いつつも、
やる事が多かったり、設備が足りなかったり、そもそもBGP知識が無かったりして断念していた。
ただ、このまま燻らせて画面しても体に悪いし、最近はNWネタに疎くなりつつあるので、
NW知識を定着させる意味も込めて、3ベンダーをごちゃ混ぜにしてBGPピアを張ってみた。
今回はIPv6オンリーでBGPを喋らせてみた。
ただ、このままだとIPv4へ接続出来ないので、FortigateでNAT64もしてみた。
コアの部分はiBGPにstaticとconnectedを再配布する構成にしてみた。
本当はクライアントPCセグメントでOSPFを喋らせて、BGPとOSPFで再配布したかったのだが、
Cisco 1812JでIPv6のVRFを使っているインターフェースではOSPFv3を喋れない事が判明し、
今回は断念してstaticでルーティングを切った。
あと、本業でBGP取り扱っている人には怒られそうだが、
各BGPスピーカーでピアを張るのが面倒くさかったので、Cisco 1812Jにルートリフレクタも兼用させ、
他のスピーカーからピアを張る形にしてセッション数削減。
こうした事で、別ベンダー装置のBGP検証を行う時も、
ルートリフレクタのみにピアを張ればルーティングテーブルを取得出来るようにした。
今回のキモとなったのは、実はJuniperSRX100の方だった。
今までJuniper製品を殆ど触った事が無いのと、
DefaultRouteをBGP網に流しつつも他NWへ「お漏らし」しないようにフィルタリングしたり、
loopback I/FからBGPのセッションが張れなかったりと四苦八苦した。
最終的にはACL制御をミスってloopback宛の通信をAnyDenyしていたり、
アドバタイズするプレフィックスをミスっているだけだったのだが、
原因調査の過程でコマンドを色々触ったので勉強になった。
FortigateのBGPは難なく設定が完了した。が、NAT64の方でハマった…
NAT64のフューチャーをenableにして、NAT64ルールを作成しても一向に通信出来なかった。
最後の方では、Fortigate上でパケットキャプチャ、デバッグモードでフロー確認もしたのだが、
「”64::FF9B::/96″宛のルーティングテーブルが無い」と言われているだけで謎だった。
海外のサイトも漁った所、「再起動するヨロシ」と書かれていたので再起動を試した所、
NAT64で接続が出来てしまい『自分の苦労は何だったんだろう…』と思ったが、
まぁこんな事もあるだろう _(:3」∠)_
………
着々と進んでいる”ns-lab BB”のIPv6対応だが、
今回の構築を行った事で、BGPの検証環境とNAT64実環境を構築出来たのは収穫。
自分が作成したコンフィグは、レベルが低くて公開出来るレベルでは無いのだが、
時間ある時に公開もしてみようと思う。
折角なので、コンフィグの一部を公開。
………
- Juniper SRX100
interfaces {
lo0 {
unit 0 {
family inet6 {
address 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:100/128;
}
}
}
}
routing-options {
rib inet6.0 {
static {
route ::/0 next-hop "DefaultRouteの向け先";
route 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:1812/128 next-hop "Cisco1812JのIPv6アドレス";
route 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:60/128 next-hop "Fortigate60DのIPv6アドレス";
}
}
router-id 10.0.0.100;
autonomous-system 65000;
}
protocols {
bgp {
export AS65000 {
group GROUP_AS65000 {
type internal;
local-address 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:100;
log-updown;
family inet6 {
unicast;
}
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:1812;
}
}
}
policy-options {
policy-statement AS65000 {
term redistribute {
from {
protocol static;
route-filter ::/0 exact;
}
then {
next-hop self;
accept;
}
}
then reject;
}
}
|
………
- Cisco 1812J
interface Loopback0
vrf forwarding vrf_ipv6
no ip address
ipv6 address 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:1812/128
ipv6 nd router-preference High
!
vrf definition vrf_ipv6
rd 10.0.18.12:6
!
address-family ipv4
exit-address-family
!
address-family ipv6
exit-address-family
!
router bgp 65000
bgp router-id 10.0.18.12
no bgp default ipv4-unicast
bgp log-neighbor-changes
!
address-family ipv4 vrf vrf_ipv6
no synchronization
exit-address-family
!
address-family ipv6 vrf vrf_ipv6
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:100 remote-as 65000
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:100 update-source Loopback0
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:100 activate
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:100 route-reflector-client
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:60 remote-as 65000
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:60 update-source Loopback0
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:60 activate
neighbor 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:60 route-reflector-client
redistribute connected
redistribute static
default-information originate
no synchronization
exit-address-family
!
ipv6 route vrf vrf_ipv6 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:100/128 "JuniperSRX100のIPv6アドレス"
ipv6 route vrf vrf_ipv6 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:60/128 "Fortigate60DのIPv6アドレス"
|
………
- Fortigate 60D
config system interface
edit "loopback1"
set vdom "root"
set type loopback
set snmp-index 1
config ipv6
set ip6-allowaccess ping
set ip6-address 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:60/128
end
next
end
config router access-list6
edit "bgp-nat64"
config rule
edit 10
set prefix6 64:ff9b::/96
set exact-match enable
next
edit 20
set action deny
set exact-match disable
next
end
next
end
config router route-map
edit "bgp-route-map"
config rule
edit 10
set match-ip6-address "bgp-nat64"
next
end
next
end
config router static6
edit 1
set dst 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:1812/128
set gateway "Cisco1812JのIPv6アドレス"
set device "wan2"
next
edit 2
set dst 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:100/128
set gateway "JuniperSRX100のIPv6アドレス"
set device "wan2"
next
edit 3
set dst 64:ff9b::/96
set gateway 2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:60
set device "loopback1"
next
end
config router bgp
set as 65000
set router-id 10.0.0.60
config neighbor
edit "2001:470:FDB0:FFFF:FFFF:FFFF:FFFF:1812"
set remote-as 65000
set route-map-out6 "bgp-route-map"
set update-source "loopback1"
next
end
config redistribute6 "static"
set status enable
end
end
|