使用瞻博网络 SRX 防火墙通告除默认网关之外的所有静态路由

网络工程 路由 bgp 杜松 瞻博网络 杜松-srx
2021-07-21 00:24:40

使用以下策略,所有静态路由都通过 BGP 通告给我的邻居:

root@Nitrogen# show policy-options 
policy-statement bgp-export-policy {
    term export-statics {
        from protocol static;
        then accept;
    }
}
root@Nitrogen# show routing-instances myinstance
instance-type virtual-router;
interface ...
routing-options {
    static {
        route 0.0.0.0/0 next-hop ...;                   # I don't want to send this route
        route x.x.x.x next-hop st0.1;
        route x.x.x.x next-hop st0.1;
        route x.x.x.x next-hop st0.1;
        ...
    }
    autonomous-system XXX;
}
protocols {
    bgp {
        group mygroup {
            type external;
            export bgp-export-policy;
            neighbor XXX {
                peer-as XXX;
            }
        }
    }
}

除了默认的 0.0.0.0/0 之外,我怎样才能通告所有静态路由?或者,如果这更容易,我如何通告st0.1用作下一跳的所有路由

预先感谢您的帮助。

1个回答

您需要在您的策略声明中添加一个明确拒绝默认路由术语,并将其添加到术语之前export-statics

policy-statement bgp-export-policy {
    term reject-default {
        from {
            route-filter 0.0.0.0/0 through 0.0.0.0/32;
        then reject;
    }
    term export-statics {
        from protocol static;
        then accept;
    }
}

另一种稍微复杂但也更通用的方法是用选定的社区标记要导出的路由,然后编写一个导出策略,该策略仅接受具有该特定社区的路由并拒绝所有其他路由:

routing-options {
    static {
        route 0.0.0.0/0 next-hop 192.0.2.1;
        route x.x.x.x {
            next-hop st0.1;
            community 64496:1000;
        }
        route x.x.x.x {
            next-hop st0.1;
            community 64496:1000;
        }
        route x.x.x.x {
            next-hop st0.1;
            community 64496:1000;
        }
    }
}

policy-statement bgp-export-policy {
    term export-routes {
        from {
            protocol static;
            community 64496:1000;
        }
        then accept;
    }
    term reject {
        then reject;
    }
}

在策略链的末尾有一个明确的拒绝策略总是一个好主意,不管你将如何实现它。