VyOS BGP-Konfiguration auf einem VPS: Dual-Stack-Anleitung

11 Min. Lesezeit·Matthieu·ip-transitipv6networkingvyosbgp|

BGP auf einer VyOS-Instanz auf einem VPS konfigurieren, um eigene IPv4- und IPv6-Prefixe anzukündigen. Mit Prefix-Lists, Route-Maps, Session-Absicherung und externer Verifizierung.

Netzwerktechniker, die täglich mit Junos oder IOS arbeiten, kennen den Schmerz, flache Konfigurationsdateien für BIRD2 oder FRR zu bearbeiten. VyOS bietet eine richtige Router-CLI auf einem VPS: hierarchische Konfiguration, Commit/Rollback, Tab-Completion. Dieses Tutorial führt durch ein vollständiges BGP-Setup auf einem Virtua Cloud VPS mit VyOS, von der Interface-Konfiguration bis zur verifizierten Dual-Stack Prefix-Ankündigung.

Am Ende haben Sie IPv4- und IPv6-Prefixe via BGP angekündigt, mit Prefix-Lists, Route-Maps, MD5-Authentifizierung, GTSM und Max-Prefix-Limits.

BGP und Bring Your Own IP auf einem VPS: Der vollständige Leitfaden

Voraussetzungen

Bevor Sie beginnen, benötigen Sie:

  1. Eine bei einer RIR (RIPE NCC, ARIN, APNIC) registrierte ASN. ASN bei der RIPE NCC registrieren: Ablauf, Kosten und Voraussetzungen
  2. Mindestens ein IPv4 /24- und/oder IPv6 /48-Prefix, das Ihrer ASN zugewiesen ist.
  3. Gültige ROA-Objekte, die in RPKI für jedes Prefix veröffentlicht sind. RPKI ROA für BGP: ROAs erstellen, Routen in BIRD2 und FRR validieren
  4. Einen Virtua Cloud VPS mit installiertem VyOS. Bestellen Sie einen VPS mit der ISO-Image-Option, mounten Sie das VyOS ISO und schließen Sie die Installation ab (install image vom Live-System). Neustart, ISO unmounten, und Sie haben eine persistente VyOS-Instanz.
  5. Eine von Ihrem Upstream-Provider bereitgestellte BGP-Session. Sie benötigen: dessen ASN, die Peering-IPv4/IPv6-Adressen und das MD5-Passwort (falls gesetzt).

In diesem Tutorial verwenden wir folgende Platzhalter. Ersetzen Sie diese durch Ihre eigenen Werte:

Parameter Platzhalter Beschreibung
Ihre ASN 64512 Ihre Autonomous System Number
Router ID 198.51.100.10 Üblicherweise Ihre primäre IPv4-Adresse
Upstream ASN 64501 Die AS-Nummer Ihres Providers
Upstream IPv4 198.51.100.1 Peering-IPv4 des Providers
Ihre Peering-IPv4 198.51.100.10 Ihre Seite der Point-to-Point-Verbindung
Upstream IPv6 2001:db8::1 Peering-IPv6 des Providers
Ihre Peering-IPv6 2001:db8::10 Ihre Seite der IPv6-Peering-Verbindung
Ihr IPv4-Prefix 203.0.113.0/24 Das Prefix, das Sie ankündigen
Ihr IPv6-Prefix 2001:db8:1000::/48 Das IPv6-Prefix, das Sie ankündigen
MD5-Passwort (vom Provider) Shared Secret für TCP MD5

Wie greife ich auf VyOS auf einem VPS zu und bereite es vor?

Nach der Bereitstellung verbinden Sie sich per SSH mit der VyOS-Instanz. VyOS startet in einer Operational-Mode-Shell. Um Konfigurationsänderungen vorzunehmen, wechseln Sie in den Konfigurationsmodus:

ssh vyos@198.51.100.10
configure

Der Prompt wechselt von $ zu #, was den Konfigurationsmodus anzeigt. Jeder set-Befehl stellt eine Änderung bereit. Nichts wird wirksam, bis Sie commit ausführen.

Interface überprüfen

Prüfen Sie, ob Ihr Netzwerk-Interface die korrekten Adressen zugewiesen hat. Auf einem Virtua VPS ist das primäre Interface typischerweise eth0:

show interfaces ethernet eth0

Falls Ihre Peering-Adressen noch nicht konfiguriert sind (manche Provider verwenden ein separates /30 oder /31 für die Point-to-Point-Verbindung), fügen Sie diese hinzu:

set interfaces ethernet eth0 address 198.51.100.10/24
set interfaces ethernet eth0 address 2001:db8::10/64

Wie richte ich eine BGP-Session auf VyOS ein?

Die VyOS BGP-Konfiguration beginnt mit set protocols bgp. In VyOS 1.4+ (Sagitta) wird die AS-Nummer mit system-as gesetzt, nicht im veralteten Format set protocols bgp <ASN> aus älteren Releases.

Setzen Sie Ihre AS-Nummer und Router-ID:

set protocols bgp system-as 64512
set protocols bgp parameters router-id 198.51.100.10

IPv4-Neighbor konfigurieren

set protocols bgp neighbor 198.51.100.1 remote-as 64501
set protocols bgp neighbor 198.51.100.1 description 'Upstream-v4'
set protocols bgp neighbor 198.51.100.1 update-source 198.51.100.10

IPv6-Neighbor konfigurieren

Falls Ihr Provider IPv6 über eine separate Adresse peert (üblich), fügen Sie einen zweiten Neighbor-Block hinzu:

set protocols bgp neighbor 2001:db8::1 remote-as 64501
set protocols bgp neighbor 2001:db8::1 description 'Upstream-v6'
set protocols bgp neighbor 2001:db8::1 update-source 2001:db8::10
set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast

Für den IPv4-Neighbor aktivieren Sie die ipv4-unicast Address Family explizit:

set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast

Wie kündige ich IPv4- und IPv6-Prefixe auf VyOS an?

Um ein Prefix via BGP anzukündigen, sind zwei Dinge nötig: ein network-Statement unter der richtigen Address Family und das Prefix muss in der Routing-Tabelle vorhanden sein. Der Standardansatz ist eine statische Blackhole-Route (Null-Route) für jedes Prefix.

Blackhole-Routen erstellen

set protocols static route 203.0.113.0/24 blackhole
set protocols static route6 2001:db8:1000::/48 blackhole

Diese Routen stellen sicher, dass das Prefix immer in der Routing-Tabelle vorhanden ist, auch wenn keine spezifischeren Routen existieren.

Network-Statements hinzufügen

set protocols bgp address-family ipv4-unicast network 203.0.113.0/24
set protocols bgp address-family ipv6-unicast network 2001:db8:1000::/48

Der network-Befehl weist BGP an, diese Prefixe zu originieren. Ohne die zugehörige Blackhole-Route wird BGP das Prefix nicht advertisieren.

Wie filtere ich BGP-Routen mit Prefix-Lists und Route-Maps auf VyOS?

BGP ohne Filter zu betreiben ist fahrlässig. Sie sollten sowohl ausgehend (nur ankündigen, was Ihnen gehört) als auch eingehend (begrenzen, was Sie vom Upstream akzeptieren) filtern. VyOS verwendet prefix-list für IPv4 und prefix-list6 für IPv6. Das ist ein häufiger Fehler: prefix-list mit einem IPv6-Prefix zu verwenden schlägt stillschweigend fehl.

Ausgehende Prefix-Lists

Erstellen Sie eine Prefix-List, die nur Ihre Prefixe erlaubt:

set policy prefix-list EXPORT4 rule 10 action permit
set policy prefix-list EXPORT4 rule 10 prefix 203.0.113.0/24

set policy prefix-list6 EXPORT6 rule 10 action permit
set policy prefix-list6 EXPORT6 rule 10 prefix 2001:db8:1000::/48

Am Ende jeder Prefix-List existiert ein implizites Deny-All. Nur explizit erlaubte Prefixe passieren.

Eingehende Prefix-Lists

Begrenzen Sie eingehende Routen, um zu verhindern, dass Ihr Upstream Ihre Tabelle mit einem Full Feed flutet (falls Sie keinen angefordert haben) oder ungültige Routen durchlässt:

set policy prefix-list IMPORT4 rule 10 action permit
set policy prefix-list IMPORT4 rule 10 prefix 0.0.0.0/0
set policy prefix-list IMPORT4 rule 10 le 24

set policy prefix-list6 IMPORT6 rule 10 action permit
set policy prefix-list6 IMPORT6 rule 10 prefix ::/0
set policy prefix-list6 IMPORT6 rule 10 le 48

Dies akzeptiert jedes IPv4-Prefix bis /24 und jedes IPv6-Prefix bis /48. Passen Sie die le-Werte nach Bedarf an. Wenn Sie nur eine Default-Route wollen, entfernen Sie die le-Zeile und setzen Sie das Prefix auf 0.0.0.0/0 oder ::/0 mit exaktem Match.

Route-Maps

Route-Maps verknüpfen Prefix-Lists mit Neighbor-Sessions:

set policy route-map UPSTREAM-OUT4 rule 10 action permit
set policy route-map UPSTREAM-OUT4 rule 10 match ip address prefix-list EXPORT4

set policy route-map UPSTREAM-OUT6 rule 10 action permit
set policy route-map UPSTREAM-OUT6 rule 10 match ipv6 address prefix-list EXPORT6

set policy route-map UPSTREAM-IN4 rule 10 action permit
set policy route-map UPSTREAM-IN4 rule 10 match ip address prefix-list IMPORT4

set policy route-map UPSTREAM-IN6 rule 10 action permit
set policy route-map UPSTREAM-IN6 rule 10 match ipv6 address prefix-list IMPORT6

Route-Maps auf Neighbors anwenden

set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast route-map export UPSTREAM-OUT4
set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast route-map import UPSTREAM-IN4

set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast route-map export UPSTREAM-OUT6
set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast route-map import UPSTREAM-IN6

Wie sichere ich eine VyOS BGP-Session ab?

Vier Mechanismen härten eine BGP-Session: TCP MD5-Authentifizierung, GTSM (TTL Security), Maximum-Prefix-Limits und die ebgp-requires-policy-Einstellung. Die meisten Konkurrenzanleitungen behandeln keinen davon. Alle vier sollten standardmäßig aktiviert sein.

MD5-Authentifizierung

MD5 (RFC 2385) signiert jedes TCP-Segment. Es verschlüsselt den Traffic nicht, verhindert aber gefälschte TCP-Resets und Session-Hijacks:

set protocols bgp neighbor 198.51.100.1 password 'your-md5-secret'
set protocols bgp neighbor 2001:db8::1 password 'your-md5-secret'

Beide Seiten müssen dasselbe Passwort verwenden. Sie erhalten es von Ihrem Upstream-Provider bei der Session-Bereitstellung.

GTSM (Generalized TTL Security Mechanism)

GTSM (RFC 5082) verwirft BGP-Pakete mit einem TTL-Wert unter dem erwarteten. Für direkt verbundene eBGP-Peers setzen Sie Hops auf 1:

set protocols bgp neighbor 198.51.100.1 ttl-security hops 1
set protocols bgp neighbor 2001:db8::1 ttl-security hops 1

Dies verwirft jedes BGP-Paket, das mehr als 1 Hop durchlaufen hat, und blockiert Spoofing-Versuche aus der Ferne. GTSM schließt sich gegenseitig mit ebgp-multihop aus. Verwenden Sie nicht beides auf demselben Neighbor.

Maximum-Prefix-Limits

Schützen Sie Ihre Routing-Tabelle davor, dass ein Peer versehentlich eine Full Table (900k+ IPv4-Prefixe) oder ein Route Leak sendet:

set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast maximum-prefix 10000
set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast maximum-prefix 5000

Die Session wird beendet, wenn der Peer dieses Limit überschreitet. Setzen Sie die Werte basierend auf dem, was Sie erwarten. Für einen einzelnen Upstream mit Default-Route reichen 10. Für eine Full Table: 1000000.

eBGP-Policy erzwingen

VyOS deaktiviert die RFC 8212-Durchsetzung standardmäßig aus Gründen der Rückwärtskompatibilität. Aktivieren Sie sie, damit BGP ohne explizite Policy keine Routen sendet oder akzeptiert:

set protocols bgp parameters ebgp-requires-policy

Mit dieser Einstellung tauscht ein Neighbor ohne angewandte Route-Map keine Routen aus. Das verhindert versehentliche Route Leaks, wenn Sie einen neuen Peer hinzufügen und die Filter vergessen.

Wie konfiguriere ich die VyOS-Firewall für BGP?

BGP läuft auf TCP-Port 179. Wenn Sie eine VyOS-Firewall betreiben (und das sollten Sie), erlauben Sie BGP-Traffic nur von den Peering-Adressen Ihres Upstreams.

IPv4-Firewall-Regeln

set firewall ipv4 input filter rule 20 action accept
set firewall ipv4 input filter rule 20 protocol tcp
set firewall ipv4 input filter rule 20 destination port 179
set firewall ipv4 input filter rule 20 source address 198.51.100.1
set firewall ipv4 input filter rule 20 description 'BGP from upstream v4'

set firewall ipv4 input filter rule 21 action accept
set firewall ipv4 input filter rule 21 protocol tcp
set firewall ipv4 input filter rule 21 source port 179
set firewall ipv4 input filter rule 21 source address 198.51.100.1
set firewall ipv4 input filter rule 21 description 'BGP return from upstream v4'

IPv6-Firewall-Regeln

set firewall ipv6 input filter rule 20 action accept
set firewall ipv6 input filter rule 20 protocol tcp
set firewall ipv6 input filter rule 20 destination port 179
set firewall ipv6 input filter rule 20 source address 2001:db8::1
set firewall ipv6 input filter rule 20 description 'BGP from upstream v6'

set firewall ipv6 input filter rule 21 action accept
set firewall ipv6 input filter rule 21 protocol tcp
set firewall ipv6 input filter rule 21 source port 179
set firewall ipv6 input filter rule 21 source address 2001:db8::1
set firewall ipv6 input filter rule 21 description 'BGP return from upstream v6'

Regel 21 behandelt Rückverkehr, wenn die Gegenseite die TCP-Verbindung auf Source-Port 179 initiiert. Falls Sie Established/Related Connection Tracking in Ihrer Firewall aktiviert haben, ist Regel 21 möglicherweise überflüssig. Fügen Sie sie sicherheitshalber ein.

Commit, Save und der VyOS-Konfigurations-Workflow

VyOS verwendet einen zweistufigen Workflow. commit aktiviert die bereitgestellten Änderungen in der laufenden Konfiguration. save schreibt die laufende Konfiguration auf die Festplatte, damit sie Neustarts übersteht. Wenn Sie save vergessen, gehen Ihre Änderungen bei einem Reboot verloren.

commit

Falls der Commit ohne Fehler durchläuft, speichern:

save

Erwartete Ausgabe:

Saving configuration to '/config/config.boot'...
Done

Falls commit fehlschlägt, zeigt VyOS den Fehler an und macht ein Rollback. Lesen Sie die Fehlermeldung. Häufige Ursachen: Tippfehler in IP-Adressen, widersprüchliche Optionen (wie ttl-security und ebgp-multihop auf demselben Neighbor) oder Referenzen auf eine nicht existierende Prefix-List.

Um Ihre bereitgestellten Änderungen vor dem Commit zu überprüfen:

compare

Dies zeigt ein Diff zwischen der laufenden Konfiguration und Ihren ausstehenden Änderungen. Um nicht committete Änderungen zu verwerfen:

discard

Um zu einem früheren Commit zurückzukehren:

rollback 1
commit
save

Wie überprüfe ich, ob meine BGP-Ankündigungen sichtbar sind?

Die Verifizierung erfolgt in zwei Stufen: lokal (auf der VyOS-Instanz) und extern (aus dem Internet). Verlassen Sie zuerst den Konfigurationsmodus:

exit

Lokale Verifizierung

Prüfen Sie den Session-Status für beide Address Families:

show bgp ipv4 summary

Erwartete Ausgabe:

IPv4 Unicast Summary:
BGP router identifier 198.51.100.10, local AS number 64512 vrf-id 0
BGP table version 3
RIB entries 5, using 960 bytes of memory
Peers 1, using 725 KiB of memory

Neighbor         V   AS   MsgRcvd  MsgSent  TblVer  InQ OutQ  Up/Down State/PfxRcd
198.51.100.1     4  64501     142      138       0    0    0 01:15:23            2

Die Spalte State/PfxRcd zeigt eine Zahl (empfangene Prefixe), wenn die Session aufgebaut ist. Falls dort Active, Connect oder OpenSent steht, ist die Session nicht aktiv. Siehe den Abschnitt zur Fehlerbehebung.

show bgp ipv6 summary

Überprüfen Sie, ob Sie die korrekten Prefixe advertisieren:

show bgp ipv4 neighbors 198.51.100.1 advertised-routes

Die erwartete Ausgabe enthält Ihr 203.0.113.0/24-Prefix. Falls es fehlt, prüfen Sie Ihr Network-Statement und die ausgehende Route-Map.

show bgp ipv6 neighbors 2001:db8::1 advertised-routes

Referenz der Verifizierungsbefehle

Befehl Was er anzeigt
show bgp ipv4 summary Session-Status, empfangene Prefixe pro Peer
show bgp ipv6 summary Dasselbe für IPv6
show bgp ipv4 neighbors <ip> advertised-routes Prefixe, die Sie senden
show bgp ipv4 neighbors <ip> received-routes Vom Peer empfangene Prefixe
show bgp ipv4 neighbors <ip> Vollständige Neighbor-Details (Timer, Capabilities, Zähler)
show ip route bgp In der Routing-Tabelle installierte BGP-Routen
show bgp ipv4 Vollständige IPv4 BGP-Tabelle

Externe Verifizierung

Lokale Prüfungen bestätigen nur, was Ihr Router denkt. Verifizieren Sie aus dem Internet, dass Ihre Prefixe tatsächlich propagieren.

bgp.tools: Öffnen Sie https://bgp.tools/prefix/203.0.113.0/24 im Browser. Es zeigt, welche ASes das Prefix sehen, den AS-Pfad und den RPKI-Validierungsstatus. Falls das Prefix nicht erscheint, warten Sie 5-10 Minuten für die Propagation und prüfen Sie erneut.

RIPE Stat: Öffnen Sie https://stat.ripe.net/203.0.113.0/24 für den Routing-Status, die Sichtbarkeit über Route Collectors und den RPKI-Validierungsstatus.

Looking Glass: Viele Transit-Provider bieten Looking-Glass-Tools an. Fragen Sie das Looking Glass Ihres Upstreams ab, um zu bestätigen, dass Ihre Ankündigung sichtbar ist.

Falls Ihr Prefix auf bgp.tools als RPKI-invalid angezeigt wird, ist Ihre ROA fehlerhaft. Korrigieren Sie sie im RIPE-Portal, bevor Sie fortfahren. RPKI ROA für BGP: ROAs erstellen, Routen in BIRD2 und FRR validieren

VyOS CLI vs. BIRD2 vs. FRR: Kurzvergleich

Alle drei können BGP auf einem Linux-VPS betreiben. Die Wahl hängt von Ihren Workflow-Präferenzen ab.

Aufgabe VyOS CLI BIRD2 Config-Datei FRR vtysh
AS-Nummer setzen set protocols bgp system-as 64512 protocol bgp { local 64512 as 64512; } router bgp 64512
Neighbor hinzufügen set protocols bgp neighbor 1.2.3.4 remote-as 64501 neighbor 1.2.3.4 as 64501; im Protocol-Block neighbor 1.2.3.4 remote-as 64501
Prefix ankündigen set protocols bgp address-family ipv4-unicast network 203.0.113.0/24 protocol static { route 203.0.113.0/24 blackhole; } + Export-Filter network 203.0.113.0/24
Prefix-List set policy prefix-list NAME rule 10 ... define PFXLIST = [ 203.0.113.0/24 ]; ip prefix-list NAME permit ...
Änderungen anwenden commit / save birdc configure write memory
Rollback rollback N + commit Backup-Konfigurationsdatei wiederherstellen Kein eingebautes Rollback
Konfigurationsformat Hierarchische CLI Eigene DSL (C-ähnlich) IOS-ähnliche CLI
Zugrunde liegender Daemon FRR (gebündelt) BIRD FRR

VyOS bündelt FRR intern, verpackt es aber in einen Commit/Rollback-Workflow. Wenn Sie atomare Konfigurationsänderungen und Rollback ohne eigene Skripte wollen, ist VyOS die richtige Wahl. Wenn Sie maximale Kontrolle über Filterlogik brauchen, bietet BIRD2 eine vollständige Programmiersprache. BIRD2 BGP-Konfiguration auf einem Linux VPS FRRouting BGP-Konfiguration auf einem Linux VPS

Was sind häufige VyOS BGP-Fehlerbehebungsschritte?

Wenn eine Session nicht aufgebaut wird oder Prefixe nicht sichtbar sind, arbeiten Sie diese Prüfungen systematisch ab.

Symptom Wahrscheinliche Ursache Lösung
Status bleibt auf Active TCP-Verbindung schlägt fehl. Firewall blockiert Port 179, falsche Neighbor-IP oder die Gegenseite ist nicht konfiguriert. Firewall-Regeln prüfen. Neighbor-IP mit der Konfiguration des Upstreams abgleichen. ping zur Peer-Adresse versuchen.
Status bleibt auf OpenSent TCP verbindet, aber BGP OPEN wird abgelehnt. AS-Nummern-Mismatch oder Capability-Negotiation-Fehler. Prüfen, ob system-as dem entspricht, was der Upstream erwartet. show bgp ipv4 neighbors <ip> auf "Notification received" prüfen.
Status bleibt auf OpenConfirm MD5-Passwort-Mismatch. TCP verbindet (SYN/ACK funktioniert ohne MD5-Prüfung), aber BGP-Nachrichten scheitern an der Authentifizierung. password auf beiden Seiten bestätigen. MD5 unterscheidet Groß-/Kleinschreibung.
Session aufgebaut, aber 0 Prefixe empfangen Upstream sendet keine Routen, oder Ihre eingehende Route-Map lehnt alles ab. show bgp ipv4 neighbors <ip> received-routes prüfen. Falls leer, beim Upstream nachfragen. Falls Routen dort sichtbar, aber nicht in der Tabelle, Import-Route-Map prüfen.
Ihr Prefix extern nicht sichtbar Ausgehende Route-Map blockiert, fehlendes Network-Statement oder keine Blackhole-Route. show bgp ipv4 neighbors <ip> advertised-routes ausführen. Falls das Prefix fehlt, ausgehende Route-Map und network-Statement prüfen. Blackhole-Route mit show ip route 203.0.113.0/24 verifizieren.
RPKI Invalid auf bgp.tools ROA-Mismatch. Die Origin-AS oder Max-Length in der ROA stimmt nicht mit Ihrer Ankündigung überein. ROA im RIPE-Portal korrigieren. Sicherstellen, dass die Origin-AS mit system-as übereinstimmt und Max-Length /24 abdeckt.
Session flapped MTU-Probleme, instabile Verbindung oder Max-Prefix-Limit erreicht. show log auf BGP-Meldungen prüfen. Falls Max-Prefix ausgelöst wurde, Limit erhöhen oder untersuchen, warum der Peer zu viele Routen sendet.

Logs lesen

VyOS protokolliert BGP-Ereignisse über das System-Journal:

show log | match bgp

Für Echtzeit-Monitoring:

monitor log | match bgp

Auf dem zugrunde liegenden System (falls Sie mehr Details benötigen):

journalctl -u frr -f

Dies zeigt die FRR-Daemon-Logs live an. Suchen Sie nach NOTIFICATION-Nachrichten, die den BGP-Fehlercode und Subcode enthalten.

Vollständige Konfigurationsreferenz

Hier der vollständige Konfigurationsblock als Referenz. Kopieren, Platzhalter ersetzen, in den Konfigurationsmodus einfügen, commit und save:

# Enter configuration mode
configure

# BGP core
set protocols bgp system-as 64512
set protocols bgp parameters router-id 198.51.100.10
set protocols bgp parameters ebgp-requires-policy

# Blackhole routes for prefix origination
set protocols static route 203.0.113.0/24 blackhole
set protocols static route6 2001:db8:1000::/48 blackhole

# Network statements
set protocols bgp address-family ipv4-unicast network 203.0.113.0/24
set protocols bgp address-family ipv6-unicast network 2001:db8:1000::/48

# IPv4 neighbor
set protocols bgp neighbor 198.51.100.1 remote-as 64501
set protocols bgp neighbor 198.51.100.1 description 'Upstream-v4'
set protocols bgp neighbor 198.51.100.1 update-source 198.51.100.10
set protocols bgp neighbor 198.51.100.1 password 'your-md5-secret'
set protocols bgp neighbor 198.51.100.1 ttl-security hops 1
set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast
set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast maximum-prefix 10000
set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast route-map export UPSTREAM-OUT4
set protocols bgp neighbor 198.51.100.1 address-family ipv4-unicast route-map import UPSTREAM-IN4

# IPv6 neighbor
set protocols bgp neighbor 2001:db8::1 remote-as 64501
set protocols bgp neighbor 2001:db8::1 description 'Upstream-v6'
set protocols bgp neighbor 2001:db8::1 update-source 2001:db8::10
set protocols bgp neighbor 2001:db8::1 password 'your-md5-secret'
set protocols bgp neighbor 2001:db8::1 ttl-security hops 1
set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast
set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast maximum-prefix 5000
set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast route-map export UPSTREAM-OUT6
set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast route-map import UPSTREAM-IN6

# Outbound prefix-lists (only announce what you own)
set policy prefix-list EXPORT4 rule 10 action permit
set policy prefix-list EXPORT4 rule 10 prefix 203.0.113.0/24
set policy prefix-list6 EXPORT6 rule 10 action permit
set policy prefix-list6 EXPORT6 rule 10 prefix 2001:db8:1000::/48

# Inbound prefix-lists
set policy prefix-list IMPORT4 rule 10 action permit
set policy prefix-list IMPORT4 rule 10 prefix 0.0.0.0/0
set policy prefix-list IMPORT4 rule 10 le 24
set policy prefix-list6 IMPORT6 rule 10 action permit
set policy prefix-list6 IMPORT6 rule 10 prefix ::/0
set policy prefix-list6 IMPORT6 rule 10 le 48

# Route-maps
set policy route-map UPSTREAM-OUT4 rule 10 action permit
set policy route-map UPSTREAM-OUT4 rule 10 match ip address prefix-list EXPORT4
set policy route-map UPSTREAM-OUT6 rule 10 action permit
set policy route-map UPSTREAM-OUT6 rule 10 match ipv6 address prefix-list EXPORT6
set policy route-map UPSTREAM-IN4 rule 10 action permit
set policy route-map UPSTREAM-IN4 rule 10 match ip address prefix-list IMPORT4
set policy route-map UPSTREAM-IN6 rule 10 action permit
set policy route-map UPSTREAM-IN6 rule 10 match ipv6 address prefix-list IMPORT6

# Firewall - allow BGP from upstream only
set firewall ipv4 input filter rule 20 action accept
set firewall ipv4 input filter rule 20 protocol tcp
set firewall ipv4 input filter rule 20 destination port 179
set firewall ipv4 input filter rule 20 source address 198.51.100.1
set firewall ipv4 input filter rule 20 description 'BGP from upstream v4'
set firewall ipv6 input filter rule 20 action accept
set firewall ipv6 input filter rule 20 protocol tcp
set firewall ipv6 input filter rule 20 destination port 179
set firewall ipv6 input filter rule 20 source address 2001:db8::1
set firewall ipv6 input filter rule 20 description 'BGP from upstream v6'

# Apply
commit
save

Weiterführende Lektüre