V6.49 to 7.6

V6.49 to 7.6

The biggest change in 6 to 7 is that RouterOS 6 filters, by default, allow all prefixes to go through unless you discard them. If you have filters enabled in RouterOS 7, they reject all prefixes unless you explicitly allow them.

You can start by adding all the prefixes you want the router to announce. Or, if your old rules were set to reject a couple routes and allow everything else, add an “accept;” rule at the end of the chain to make it 6 compatible.

Or, if you know you want to announce everything you have, a single “accept;” rule will cause it to announce everything that it receives via eBGP as well as announcing anything you’ve enabled (static, connected, etc.).

Can you post your config and the output of


routing/bgp/session/print detail

Reinstall routeros 6.49.7 and reload backup,
next time try another machine before upgrade to another os version one critical network component.

CONFIG

Here are my examples of BGP and Filters that Works: ISP → My-EDGE-Router → My-Core-Router
Filters

/routing filter rule
add chain=eBGP-IN disabled=no rule="if (dst == A.A.A.0/24) { reject; }"
add chain=eBGP-IN disabled=no rule="if (dst == B.B.B.0/24) { reject; }"
add chain=eBGP-IN disabled=no rule="if (dst == C.C.C.0/24) { reject; }"
add chain=eBGP-IN disabled=no rule="if (dst == D.D.D.0/24) { reject; }"
add chain=eBGP-IN disabled=no rule="if (dst == E.E.E.0/24) { reject; }"
add chain=eBGP-IN disabled=no rule="if (dst == 0.0.0.0/0) { set pref-src A.A.A.1; accept; }"
add chain=eBGP-OUT disabled=no rule="if (dst == A.A.A.0/24) { accept; }"
add chain=eBGP-OUT disabled=no rule="if (dst == B.B.B.0/24) { accept; }"
add chain=eBGP-OUT disabled=no rule="if (dst == C.C.C.0/24) { accept; }"
add chain=eBGP-OUT disabled=no rule="if (dst == D.D.D.0/24) { accept; }"
add chain=eBGP-OUT disabled=no rule="if (dst == E.E.E.0/24) { accept; }"
add chain=eBGP-OUT disabled=no rule="reject;"
add chain=iBGP disabled=no rule="if (dst in X.X.X.0/22 && dst-len >=25 && dst-len <= 32) { accept; }"
add chain=iBGP disabled=no rule="if (dst in E.E.E.0/24 && dst-len >=25 && dst-len <= 32) { accept; }"
add chain=iBGP disabled=no rule="if (dst == 0.0.0.0/0) { accept; }"
add chain=iBGP disabled=no rule="reject;"

BGP

/routing bgp template
add as=MyAS disabled=no name=MyISPName nexthop-choice=force-self output.keep-sent-attributes=yes router-id=10.255.255.1 routing-table=main
/routing bgp connection
add as=MyAS connect=yes disabled=no input.filter=eBGP-IN listen=yes local.role=ebgp multihop=no name=Provider nexthop-choice=force-self output.filter-chain=eBGP-OUT .keep-sent-attributes=yes .redistribute=static remote.address=10.100.102.121/32 .as=35047 router-id=10.255.255.1 routing-table=main templates=MyISPName

We have managed to establish our BGP but we do not always have service on our private addresses as well as on the public addresses
we are posting a screenshot of our established BGP and another of our filters maybe we made a mistake somewhere.
filter.png
BGP V7.png

If you get 0.0.0.0/0 from providers you should accept 0.0.0.0/0 on filters!

We have the same problem after updating from 6 to 7, but from router I have internet connection and I can ping websites.
The problem is that I don’t have acces from our public ip networks (we have 2 networks /23).

The filters in ros6 are like this:
from_provider1 - prefix: x.x.96.0/23 (first public network) - action: discard
from_provider2 - prefix: x.x.96.0/23 (first public network) - action: discard
from_provider1 - prefix: x.x.98.0/23 (second public network) - action: discard
from_provider2 - prefix: x.x.98.0/23 (second public network) - action: discard
from_provider1 - prefix: 0.0.0.0/0 - action: accept
from_provider2 - prefix: none - action: accept
to_provider1 - prefix: x.x.96.0/23 (first public network) - action: accept
to_provider2 - prefix: x.x.96.0/23 (first public network) - action: accept
to_provider1 - prefix: x.x.98.0/23 (second public network) - action: accept
to_provider2 - prefix: x.x.98.0/23 (second public network) - action: accept
to_provider1 - prefix: none - action: discard
to_provider2 - prefix: none - action: discard

How should I change them in ros7 to work?

Rule 3 in the screenshot should be in the form

If (condition) {actions;}

Same for rule 1.