eBGP受信経路に関する設定

動作確認バージョン:vSRX Version22.4R1

ここでは ファイアウォール(vSRX) でeBGPで受信した経路に関する設定例を紹介します。

受信した経路をiBGPピアへ配信する設定

eBGPで受信した経路をiBGPピアへ経路配信するために必要な設定を行います。

注釈

通常eBGPから受信した経路は特別な設定がなくてもiBGP側へ経路を自動配信しますが、AS内部のiBGPルーターは、受信した経路を自身のBGP経路としてそのまま採用しません。 BGPでは、宛先経路情報だけではなく経路に紐づく各種属性情報も配信されますのでこの情報も適切に設定する必要があります。 iBGP経由で受信したBGP経路を採用するための1つの条件として、受信経路に付加された属性情報(Nexthop)のIPアドレスへ受信したBGPルーターから到達性が必要になります。 eBGPはAS間のピアリングのため、ピアを直接確立するネットワークの情報はAS内部に展開されていないケースがほとんどです。 そのため、eBGPで受信した経路には、対向のピアのアドレスがそのままNexthop情報として設定されており、AS内部のBGPルーターは、Nexthopに到達できないと判断されて BGP経路として採用されません。 ここでは、Nexthopの到達性をつくるための設定として、vSRX-03がiBGPに配信する経路に対してのNexthop属性を自身のIPアドレスに変更する設定(Nexthop-self)を紹介します。

サンプル設定のシナリオ

  • vSRX-03でeBGPで受信した経路を自身のiBGPピアに経路配信したい
  • 経路配信のためにNexthop selfの設定をしたい
vsrx_ebgp_fig3

シナリオにおける設定のながれ

1.OSPFを使ってvSRX-03とvSRX-01のLoopbackアドレス(lo0.0)と経路交換できるようにOSPF設定
2.AS65200のvSRX-04とeBGPでピア確立する設定をgroup名 EBGP で設定
3.AS内のiBGPで経路交換できるようにgroup名 IBGP でピア確立の設定
4.Nexthop-selfのための設定ポリシー名 NH-SELF を設定
5.ポリシー内でBGP経路に対してNexthop属性を自分のIPアドレスにする(next-hop self)設定
6.iBGP配信経路に対して export NH-SELF することでポリシーを適用

CLIにて入力するコマンド

  • vSRX-01では、vSRX-03とIBGPを設定し経路交換できるような設定
[vSRX-01]
user01@vSRX-01# set protocols ospf area 0.0.0.0 interface ge-0/0/4.0
user01@vSRX-01# set protocols ospf area 0.0.0.0 interface lo0.0
user01@vSRX-01# set routing-options autonomous-system 65100
user01@vSRX-01# set protocols bgp group IBGP type internal
user01@vSRX-01# set protocols bgp group IBGP local-address 10.1.1.1
user01@vSRX-01# set protocols bgp group IBGP neighbor 10.3.3.3
  • vSRX-03では、BGPで経路交換する設定とIBGP向けの配信経路にNexthop selfを設定
[vSRX-03]
user01@vSRX-03# set protocols ospf area 0.0.0.0 interface ge-0/0/4.0
user01@vSRX-03# set protocols ospf area 0.0.0.0 interface lo0.0
user01@vSRX-03# set routing-options autonomous-system 65100
user01@vSRX-03# set protocols bgp group EBGP type external
user01@vSRX-03# set protocols bgp group EBGP peer-as 65200
user01@vSRX-03# set protocols bgp group EBGP neighbor 10.0.40.2
user01@vSRX-03# set protocols bgp group IBGP type internal
user01@vSRX-03# set protocols bgp group IBGP local-address 10.3.3.3
user01@vSRX-03# set protocols bgp group IBGP neighbor 10.1.1.1
user01@vSRX-03# set policy-options policy-statement NH-SELF term 1 from protocol bgp
user01@vSRX-03# set policy-options policy-statement NH-SELF term 1 then next-hop self
user01@vSRX-03# set protocols bgp group IBGP export NH-SELF
  • vSRX-04では、192.168.10.0/24,192.168.20.0/24,192.168.30.0/24,192.168.40.0/24をEBGPで経路通知する設定
[vSRX-04]
user01@vSRX-04# set routing-options static route 192.168.10.0/24 discard
user01@vSRX-04# set routing-options static route 192.168.20.0/24 discard
user01@vSRX-04# set routing-options static route 192.168.30.0/24 discard
user01@vSRX-04# set routing-options static route 192.168.40.0/24 discard
user01@vSRX-04# set routing-options autonomous-system 65200
user01@vSRX-04# set protocols bgp group EBGP type external
user01@vSRX-04# set protocols bgp group EBGP peer-as 65100
user01@vSRX-04# set protocols bgp group EBGP neighbor 10.0.40.1
user01@vSRX-04# set policy-options policy-statement EXPORTSTATIC term 1 from protocol static
user01@vSRX-04# set policy-options policy-statement EXPORTSTATIC term 1 from route-filter 192.168.0.0/18 orlonger
user01@vSRX-04# set policy-options policy-statement EXPORTSTATIC term 1 then accept
user01@vSRX-04# set protocols bgp group EBGP export EXPORTSTATIC

注釈

一般的にiBGPピアを確立する際には、Loopbackアドレスを用います。vSRX-01とvSRX-03のIBGPでは、OSPFを利用してLoopbackアドレス(lo0.0)を用いて到達性を確保しています。

正しく設定が完了したときのコンフィグレーションは次のとおりです。

[vSRX-01]
routing-options {
    autonomous-system 65100;
}
protocols {
    bgp {
        group IBGP {
            type internal;
            local-address 10.1.1.1;
            neighbor 10.3.3.3;
        }
    }
    ospf {
        area 0.0.0.0 {
            interface ge-0/0/4.0;
            interface lo0.0;
        }
    }
}
[vSRX-03]
routing-options {
    autonomous-system 65100;
}
protocols {
    bgp {
        group EBGP {
            type external;
            peer-as 65200;
            neighbor 10.0.40.2;
        }
        group IBGP {
            type internal;
            local-address 10.3.3.3;
            export NH-SELF;
            neighbor 10.1.1.1;
        }
    }
    ospf {
        area 0.0.0.0 {
            interface ge-0/0/4.0;
            interface lo0.0;
        }
    }
}
policy-options {
    policy-statement NH-SELF {
        term 1 {
            from protocol bgp;
            then {
                next-hop self;
            }
        }
    }
}
[vSRX-04]
routing-options {
    static {
        route 192.168.10.0/24 discard;
        route 192.168.20.0/24 discard;
        route 192.168.30.0/24 discard;
        route 192.168.40.0/24 discard;
    }
    autonomous-system 65200;
}
protocols {
    bgp {
        group EBGP {
            type external;
            export EXPORTSTATIC;
            peer-as 65100;
            neighbor 10.0.40.1;
        }
    }
}
policy-options {
    policy-statement EXPORTSTATIC {
        term 1 {
            from {
                protocol static;
                route-filter 192.168.0.0/18 orlonger;
            }
            then accept;
        }
    }
}

注釈

スタティックルートを再配信する設定についての注意事項

スタティックルートを再配信するためにpolicy-options policy-statement設定でプロトコルを条件に設定が可能ですが、スタティックルートだけの条件指定で BGPへ再配信設定をしますとSDPF側で管理しているスタティックルートの設定も再配信対象になります。 スタティックルートを再配信する際には、プロトコル指定だけではなく、実際に配信したいネットワークの指定をお願いします。

配信したい経路(192.168.10.0/24,192.168.20.0/24,192.168.30.0/24,192.168.40.0/24)を含む経路を指定するコマンド

BGPではルーティングプロトコルの性質上、数万単位の大量の経路交換また受信・配信経路に対する制御を設定することが多くあります。 経路をフィルタする際に該当の経路を個別に細かく設定するとフィルタリングのルール数が大量になってしまうことがあります。 今回はBGPで4つの経路情報を制御するケースですが、敢えて対象のNWの範囲を1行のルールで設定する方法でテストしています。

# set policy-options policy-statement EXPORTSTATIC term 1 from route-filter 192.168.0.0/18 orlonger

※192.168.0.0/18 orlonger は 192.168.0.0 から 192.168.63.255 までの範囲のIPネットワークを示しています。

動作確認結果

vSRX-01でiBGPによって配信されてきた経路(192.168.10.0/24,192.168.20.0/24,192.168.30.0/24,192.168.40.0/24)が ルーティングテーブル上確認できており、Nexthop情報がvSRX03のIPアドレス(10.3.3.3)になっていることからeBGP経路を 正しくiBGPピアに経路配信ができました。

  • vSRX-01でのBGP経路情報のログ
user01@vSRX-01> show route protocol bgp

inet.0: 16 destinations, 16 routes (16 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.10.0/24    *[BGP/170] 00:12:32, localpref 100, from 10.3.3.3
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.20.103 via ge-0/0/4.0
192.168.20.0/24    *[BGP/170] 00:12:32, localpref 100, from 10.3.3.3
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.20.103 via ge-0/0/4.0
192.168.30.0/24    *[BGP/170] 00:12:32, localpref 100, from 10.3.3.3
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.20.103 via ge-0/0/4.0
192.168.40.0/24    *[BGP/170] 00:12:32, localpref 100, from 10.3.3.3
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.20.103 via ge-0/0/4.0

user01@vSRX-01>

user01@vSRX-01> show route receive-protocol bgp 10.3.3.3

inet.0: 16 destinations, 16 routes (16 active, 0 holddown, 0 hidden)
  Prefix                 Nexthop              MED     Lclpref    AS path
* 192.168.10.0/24         10.3.3.3                     100        65200 I
* 192.168.20.0/24         10.3.3.3                     100        65200 I
* 192.168.30.0/24         10.3.3.3                     100        65200 I
* 192.168.40.0/24         10.3.3.3                     100        65200 I

user01@vSRX-01>
  • vSRX-03がiBGPで配信した経路に関するログ

IBGP設定に適用したNexthop self設定が効いていることが確認できます。

user01@vSRX-03> show route advertising-protocol bgp 10.1.1.1

inet.0: 17 destinations, 17 routes (17 active, 0 holddown, 0 hidden)
  Prefix                 Nexthop              MED     Lclpref    AS path
* 192.168.10.0/24         Self                         100        65200 I
* 192.168.20.0/24         Self                         100        65200 I
* 192.168.30.0/24         Self                         100        65200 I
* 192.168.40.0/24         Self                         100        65200 I

user01@vSRX-03>

(参考)Nexthop Self設定が正しく設定されていない動作確認結果

vSRX-03でNexthop selfの設定が無い場合は、Nexthop属性情報が書き換わりませんので10.0.40.2のままになります。 この場合、vSRX-01は10.0.40.2への経路到達性がないため、ルーティングテーブル上有効な経路として扱いません。 以下のような状態で確認できますのでご参考情報として掲載します。

Nexthop属性が変わっておらず10.0.40.2が確認できます。 BGPプロトコル上は経路情報を受信してますが、採用されていない経路になるためhiddenとしてカウントされています。

user01@vSRX-01> show route receive-protocol bgp 10.3.3.3

inet.0: 16 destinations, 16 routes (12 active, 0 holddown, 4 hidden)

user01@vSRX-01>

user01@vSRX-01> show route receive-protocol bgp 10.3.3.3 hidden

inet.0: 16 destinations, 16 routes (12 active, 0 holddown, 4 hidden)
  Prefix                 Nexthop              MED     Lclpref    AS path
  192.168.10.0/24         10.0.40.2                    100        65200 I
  192.168.20.0/24         10.0.40.2                    100        65200 I
  192.168.30.0/24         10.0.40.2                    100        65200 I
  192.168.40.0/24         10.0.40.2                    100        65200 I

user01@vSRX-01>

BGP配信経路に対するフィルタ設定

サンプル設定のシナリオ

  • vSRX-03でvSRX-04から配信されてくる経路(192.168.20.0/24)をフィルタしたい
  • その他のBGP配信経路はすべて採用したい
vsrx_ebgp_fig4

シナリオにおける設定のながれ

1.OSPFを使ってvSRX-03とvSRX-01のLoopbackアドレス(lo0.0)と経路交換できるようにOSPF設定
2.AS65200のvSRX-04とeBGPでピア確立する設定をgroup名 EBGP で設定
3.AS内のiBGPで経路交換できるようにgroup名 IBGP でピア確立の設定
4.Nexthop-selfのための設定ポリシー名 NH-SELF を設定
5.ポリシー内でBGP経路に対してNexthop属性を自分のIPアドレスにする(next-hop self)設定
6.設定グループ IBGP でexport NH-SELF することでポリシーを適用
7.EBGP受信経路の192.168.20.0/24をフィルタするためのポリシー NW20_BLOCK を設定
8.設定グループ EBGP でimport NW20_BLOCK を指定しポリシー適用

CLIにて入力するコマンド

[vSRX-01]
user01@vSRX-01# set protocols ospf area 0.0.0.0 interface ge-0/0/4.0
user01@vSRX-01# set protocols ospf area 0.0.0.0 interface lo0.0
user01@vSRX-01# set routing-options autonomous-system 65100
user01@vSRX-01# set protocols bgp group IBGP type internal
user01@vSRX-01# set protocols bgp group IBGP local-address 10.1.1.1
user01@vSRX-01# set protocols bgp group IBGP neighbor 10.3.3.3
[vSRX-03]
user01@vSRX-03# set protocols ospf area 0.0.0.0 interface ge-0/0/4.0
user01@vSRX-03# set protocols ospf area 0.0.0.0 interface lo0.0
user01@vSRX-03# set routing-options autonomous-system 65100
user01@vSRX-03# set protocols bgp group EBGP type external
user01@vSRX-03# set protocols bgp group EBGP peer-as 65200
user01@vSRX-03# set protocols bgp group EBGP neighbor 10.0.40.2
user01@vSRX-03# set protocols bgp group IBGP type internal
user01@vSRX-03# set protocols bgp group IBGP local-address 10.3.3.3
user01@vSRX-03# set protocols bgp group IBGP neighbor 10.1.1.1
user01@vSRX-03# set policy-options policy-statement NH-SELF term 1 from protocol bgp
user01@vSRX-03# set policy-options policy-statement NH-SELF term 1 then next-hop self
user01@vSRX-03# set policy-options policy-statement NW20_BLOCK term 1 from route-filter 192.168.20.0/24 exact
user01@vSRX-03# set policy-options policy-statement NW20_BLOCK term 1 then reject
user01@vSRX-03# set protocols bgp group IBGP export NH-SELF
user01@vSRX-03# set protocols bgp group EBGP import NW20_BLOCK
[vSRX-04]
user01@vSRX-04# set routing-options static route 192.168.10.0/24 discard
user01@vSRX-04# set routing-options static route 192.168.20.0/24 discard
user01@vSRX-04# set routing-options static route 192.168.30.0/24 discard
user01@vSRX-04# set routing-options static route 192.168.40.0/24 discard
user01@vSRX-04# set routing-options autonomous-system 65200
user01@vSRX-04# set protocols bgp group EBGP type external
user01@vSRX-04# set protocols bgp group EBGP peer-as 65100
user01@vSRX-04# set protocols bgp group EBGP neighbor 10.0.40.1
user01@vSRX-04# set policy-options policy-statement EXPORTSTATIC term 1 from protocol static
user01@vSRX-04# set policy-options policy-statement EXPORTSTATIC term 1 from route-filter 192.168.0.0/18 orlonger
user01@vSRX-04# set policy-options policy-statement EXPORTSTATIC term 1 then accept
user01@vSRX-04# set protocols bgp group EBGP export EXPORTSTATIC

正しく設定が完了したときのコンフィグレーションは次のとおりです。

[vSRX-01]
routing-options {
    autonomous-system 65100;
}
protocols {
    bgp {
        group IBGP {
            type internal;
            local-address 10.1.1.1;
            neighbor 10.3.3.3;
        }
    }
    ospf {
        area 0.0.0.0 {
            interface ge-0/0/4.0;
            interface lo0.0;
        }
    }
}
[vSRX-03]
routing-options {
    autonomous-system 65100;
}
protocols {
    bgp {
        group EBGP {
            type external;
            import NW20_BLOCK;
            peer-as 65200;
            neighbor 10.0.40.2;
        }
        group IBGP {
            type internal;
            local-address 10.3.3.3;
            export NH-SELF;
            neighbor 10.1.1.1;
        }
    }
    ospf {
        area 0.0.0.0 {
            interface ge-0/0/4.0;
            interface lo0.0;
        }
    }
}
policy-options {
    policy-statement NH-SELF {
        term 1 {
            from protocol bgp;
            then {
                next-hop self;
            }
        }
    }
    policy-statement NW20_BLOCK {
        term 1 {
            from {
                route-filter 192.168.20.0/24 exact;
            }
            then reject;
        }
    }
}
[vSRX-04]
routing-options {
    static {
        route 192.168.10.0/24 discard;
        route 192.168.20.0/24 discard;
        route 192.168.30.0/24 discard;
        route 192.168.40.0/24 discard;
    }
    autonomous-system 65200;
}
protocols {
    bgp {
        group EBGP {
            type external;
            export EXPORTSTATIC;
            peer-as 65100;
            neighbor 10.0.40.1;
        }
    }
}
policy-options {
    policy-statement EXPORTSTATIC {
        term 1 {
            from {
                protocol static;
                route-filter 192.168.0.0/18 orlonger;
            }
            then accept;
        }
    }
}

注釈

スタティックルートを再配信する設定についての注意事項

スタティックルートを再配信するためにpolicy-options policy-statement設定でプロトコルを条件に設定が可能ですが、スタティックルートだけの条件指定で BGPへ再配信設定をしますとSDPF側で管理しているスタティックルートの設定も再配信対象になります。 スタティックルートを再配信する際には、プロトコル指定だけではなく、実際に配信したいネットワークの指定をお願いします。

配信したい経路(192.168.10.0/24,192.168.20.0/24,192.168.30.0/24,192.168.40.0/24)を含む経路を指定するコマンド

BGPではルーティングプロトコルの性質上、数万単位の大量の経路交換また受信・配信経路に対する制御を設定することが多くあります。 経路をフィルタする際に該当の経路を個別に細かく設定するとフィルタリングのルール数が大量になってしまうことがあります。 今回はBGPで4つの経路情報を制御するケースですが、敢えて対象のNWの範囲を1行のルールで設定する方法でテストしています。

# set policy-options policy-statement EXPORTSTATIC term 1 from route-filter 192.168.0.0/18 orlonger

※192.168.0.0/18 orlonger は 192.168.0.0 から 192.168.63.255 までの範囲のIPネットワークを示しています。

動作確認結果

vSRX-03でフィルタに該当する経路(192.168.20.0/24)がルーティングテーブル上になくhiddenとしてフィルタが効いていることが確認できました。vSRX-03からは192.168.20.0/24を配信していないこと、またiBGPピアであるvSRX-01でも受信していないことからvSRX-04の配信経路に対するフィルタ動作も確認できました。

  • vSRX-03でのルーティングテーブル確認結果とiBGPへの配信経路確認結果
user01@vSRX-03> show route protocol bgp

inet.0: 17 destinations, 17 routes (16 active, 0 holddown, 1 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.10.0/24    *[BGP/170] 2w4d 18:56:49, localpref 100
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.40.2 via ge-0/0/6.0
192.168.30.0/24    *[BGP/170] 2w4d 18:56:49, localpref 100
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.40.2 via ge-0/0/6.0
192.168.40.0/24    *[BGP/170] 2w4d 18:56:49, localpref 100
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.40.2 via ge-0/0/6.0

user01@vSRX-03>

user01@vSRX-03> show route hidden

inet.0: 17 destinations, 17 routes (16 active, 0 holddown, 1 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.20.0/24     [BGP ] 2w5d 04:29:52, localpref 100
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.40.2 via ge-0/0/6.0

user01@vSRX-03>

user01@vSRX-03> show route advertising-protocol bgp 10.1.1.1

inet.0: 17 destinations, 17 routes (16 active, 0 holddown, 1 hidden)
  Prefix                 Nexthop              MED     Lclpref    AS path
* 192.168.10.0/24         Self                         100        65200 I
* 192.168.30.0/24         Self                         100        65200 I
* 192.168.40.0/24         Self                         100        65200 I

user01@vSRX-03>
  • vSRX-01でのルーティングテーブル確認結果とiBGPで受信した経路確認結果
user01@vSRX-01> show route protocol bgp

inet.0: 15 destinations, 15 routes (15 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

192.168.10.0/24    *[BGP/170] 1d 00:24:01, localpref 100, from 10.3.3.3
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.20.103 via ge-0/0/4.0
192.168.30.0/24    *[BGP/170] 1d 00:24:01, localpref 100, from 10.3.3.3
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.20.103 via ge-0/0/4.0
192.168.40.0/24    *[BGP/170] 1d 00:24:01, localpref 100, from 10.3.3.3
                      AS path: 65200 I, validation-state: unverified
                    > to 10.0.20.103 via ge-0/0/4.0

user01@vSRX-01>

user01@vSRX-01> show route receive-protocol bgp 10.3.3.3

inet.0: 15 destinations, 15 routes (15 active, 0 holddown, 0 hidden)
  Prefix                 Nexthop              MED     Lclpref    AS path
* 192.168.10.0/24         10.3.3.3                     100        65200 I
* 192.168.30.0/24         10.3.3.3                     100        65200 I
* 192.168.40.0/24         10.3.3.3                     100        65200 I

user01@vSRX-01>