# Software > Linux >  Zebra HOWTO

## spirosco

Αυτος ειναι ενας συνοπτικος οδηγος εγκαταστασης του πακετου Zebra για λειτουργικο Linux.
Η παρακατω διαδικασια εχει δοκιμασθει σε Slackware αλλα πρεπει να ισχυει και για τα Redahat, Mandrake.

Για τη παρακατω διαδικασια δεν απαιτουνται ιδιαιτερες γνωσεις.

Το software μπορειτε να το κατεβασετε απο τη διευθυνση ftp://ftp.zebra.org/pub/zebra/zebra-0.93a.tar.gz

Μπαινουμε στο directory που εχουμε σωσει το αρχειο zebra-0.93a.tar.gz.
Δινουμε την εντολη `*tar zxvf zebra-0.93a.tar.gz*` για να αποσυμπιεσουμε τα περιεχομενα του αρχειου.
Με την αποσυμπιεση του αρχειου δημιουργειται ενας υποκαταλογος με ονομα zebra-0.93a.
Μπαινουμε στο νεο καταλογο με την εντολη `*cd zebra-0.93a*`.
Εκτελουμε την παρακατω εντολη για να γινει το configuration του λογισμικου:

'*./configure --prefix=/usr --sysconfdir=/etc*'
Το _prefix_ καθοριζει τον καταλογο εγκαταστασης και το _sysconfdir_ τον καταλογο που θα βρισκονται τα αρχεια ρυθμισεων (zebra.conf, ripd.conf...)
Πιο συγκεκριμενα τα εκτελεσιμα αρχεια θα εγκατασταθουν στο καταλογο /usr/sbin. Επειδη αυτος ο καταλογος περιλαμβανεται εξ ορισμου στο PATH των περισσοτερων διανομων, ετσι δεν θα χρειαζεται να επεμβουμε εμεις σε καποιο αρχειο του συστηματος.

Κατοπιν εκτελουμε την εντολη `*make*`.
Με την εντολη αυτη γινεται το compilation του λογισμικου. Δεν χρειαζεται να παρακολουθησουμε ολο το κατεβατο που θα μας εμφανισει στην οθονη αυτη η εντολη, αρκει να μην υπαρχουν errors.

Εφοσον η προηγουμενη εντολη ολοκληρωθηκε επιτυχως, εκτελουμε `*make install*`.
Αυτη η εντολη εγκαθιστα ολα τα αρχεια στους καταλογους που ορισαμε νωριτερα και ρυθμιζει τα απαραιτητα δικαιωματα προσβασης.

Αν ολα εχουν παει καλα, δινοντας την εντολη `*zebra --help*` θα πρεπει να δουμε τα παρακατω:

[email protected]:~# zebra --help
Usage : zebra [OPTION...]

Daemon which manages kernel routing table management and redistribution between different routing protocols.

-b, --batch Runs in batch mode
-d, --daemon Runs in daemon mode
-f, --config_file Set configuration file name
-i, --pid_file Set process identifier file name
-k, --keep_kernel Don't delete old routes which installed by zebra.
-l, --log_mode Set verbose log mode flag
-A, --vty_addr Set vty's bind address
-P, --vty_port Set vty's port number
-r, --retain When program terminates, retain added route by zebra.
-v, --version Print program version
-h, --help Display this help and exit

Report bugs to [email protected]

Αυτο ηταν το πρωτο και βασικο μερος της εγκαταστασης.
Θα ακολουθησει κι ενα ακομη το οποιο αφορα τα αρχεια ρυθμισεων zebra.conf και ripd.conf.

----------


## Achille

Στο debian, αντικαταστήστε τα παραπάνω με το εξής:

# apt-get install zebra

----------


## stardust

Πέρα από το install μήπως θα πρέπει να υπάρχει και ένα HOW-TO για το τι πακέτα πρέπει να εγκαταστήσεις στον kernel ώστε να δουλέψει το zebra?

----------


## Renos

Με τα βασικα σου πακετα (ο default kernel ειναι μια χαρα) μπορεις να χρησιμοποιησεις το Zebra ανετα.

Για την θεωρια (ξεκιναμε το μαθημα...) ο Zebra daemοn απλα δεχεται routing entries τα οποια και περναει μεσα στο routing table του kernel. Αυτα τα routing entries τα παιρνει απο τον RIP daemοn, OSPF daemon, κοκ.

Kernel Routing Table
^ 
||
Zebra
^
||
RIPd, OSPFd,...


Το γεγονος οτι ο Zebra δεν χρησιμοποιει advanced routing, QOS, κτλ τον κανει ιδανικο να τρεχει στα περισσοτερα *ΝΙΧ συστηματα.

Ο καλυτερος τροπος να ρυθμισεις το Zebra ειναι με telnet στον zebr, για να "δει" μονος του τα interfaces που εχεις επανω, και μετα telnet στο RIPd για την ενεργοποιηση του RIP.

----------


## stardust

Aπλά για να είμαστε σίγουροι,αυτά που χρείαζεται το zebra από τον kernel είναι τα εξής:
CONFIG_NETLINK
Kernel/User Netlink socket
CONFIG_RTNETLINK
Routing messages
CONFIG_IP_MULTICAST
IP:multicasting

----------


## spirosco

Λιγα λογια σχετικα με το περιεχομενο του αρχειου zebra.conf.


!
! Zebra configuration
! zebra.conf
!
! Hostname του router.
hostname ns2 
!
! Password για telnet administration. 
! Το _password_ χρειαζεται για το telnet administration mode.
! `telnet localhost zebra` η `telnet 127.0.0.1 zebra`
password awmn
!
! Το _enable password_ μας δινει write access στο
! configuration μεσα απο το telnet administration.
! Μετα το login για να μπορουμε να κανουμε αλλαγες δινουμε
! την εντολη `enable` η `en`. 
! Με `list` βλεπουμε τις διαθεσιμες εντολες.
enable password awmn
!
! Το αρχειο οπου γραφονται τα log events απο τη zebra.
log file /var/log/zebra.log
!
! Για καθε καρτα δικτυου/wireless προσθετουμε και μια γραμμη.
!interface eth0
!
! Αντιστοιχα για καθε καρτα δικτυου/wireless βαζουμε την ΙΡ της και το
! Subnet Mask.
! Το 24 αντιστοιχει σε 255.255.255.0, το 26 σε 255.255.255.192, το 29
! σε 255.255.255.248 κ.λ.π.
!ip address 10.17.119.129/26
!
! Το _description_ ειναι τυπικο. Κανει πιο ευαναγνωστο το αρχειο.
description eth0: Localnet
!
! Cisco style Telnet administration.
line vty

Διορθωση :
Οι γραμμες _interface_ και _ip address_ ειναι προαιρετικες. 

Προσθεστε/διορθωστε ελευθερα  ::

----------


## Achille

> Λιγα λογια σχετικα με το περιεχομενο του αρχειου zebra.conf.
> ! Ενεργοποιει το παραπανω.
> enable password awmn


Όχι ακριβώς. Το απλό password είναι μόνο για monitoring. Για να κάνεις αλλαγές, πρέπει αφού δώσεις το απλό password και μπεις στη zebra, να γράψεις "enable" (ή απλά "en") και να δώσεις το enable password.



> ! Για καθε καρτα δικτυου/wireless προσθετουμε και μια γραμμη.
> interface eth0
> !
> ! Αντιστοιχα για καθε καρτα δικτυου/wireless βαζουμε την ΙΡ της και το
> ! Subnet Mask.
> ! Το 24 αντιστοιχει σε 255.255.255.0, το 26 σε 255.255.255.192, το 29
> ! σε 255.255.255.248 κ.λ.π.
> ip address 10.17.119.129/26


Όχι, δεν προσθέτουμε τίποτα! Η zebra τα βρίσκει μόνη της διαβάζοντας τον πυρήνα, και εμείς έχουμε φροντίσει να τα δηλώσουμε σωστά ώστε να μπορεί να τα ανεβοκατεβάζει το λειτουργικό στα δικά του init scripts.

----------


## Renos

Θελω να συμπληρωσω τον Achille και να πω οτι στην Zebra το μονο που ισως να μας ενδιαφερει να αλλαξουμε ειναι το interface σε passive ωστε να λαμβανει μονο και να μην στελνει updates. Αυτο ειδικα πρεπει να το κανουν οσοι εχουν LAN αλλα δεν εχουν κανονικο subnet και χρησιμοποιουν ΙΡ του στυλ 192.168.x.x
Κατα τα αλλα οπως ειπε και ο Achille καλο ειναι να αφησουμε την Zebra να ανακαλυψει μονη της τι εχει το συστημα μας.

----------


## nvak

Στο slackware 9 όπως σωστά αναφέρει ο spirosco τις IP διευθύνσεις των wireless καρτών ( και μόνον) τις βάζουμε στο /etc/quagga/zebra.conf. ενώ τις διευθύνσεις των καρτών ethernet στο /etc/rc.d/rc.inet1.conf
( τις υπόλοιπες ρυθμίσεις των wireless καρτών τις βάζουμε με διαδοχικές εντολές iwconfig στο τέλος του αρχείου /etc/rc.d/rc.inet2 )

Στο debian ισχύει ότι αναφέρει ο Αχιλέας και περιγράφεται αναλυτικά στο σχετικό tutorial.

----------


## Cha0s

Μάλλον έχεις lag ενώς χρόνου και 2 ημερών  ::  ::  ::   ::

----------


## spirosco

> Στο slackware 9 όπως σωστά αναφέρει ο spirosco τις IP διευθύνσεις των wireless καρτών ( και μόνον) τις βάζουμε στο /etc/quagga/zebra.conf. ενώ τις διευθύνσεις των καρτών ethernet στο /etc/rc.d/rc.inet1.conf
> ( τις υπόλοιπες ρυθμίσεις των wireless καρτών τις βάζουμε με διαδοχικές εντολές iwconfig στο τέλος του αρχείου /etc/rc.d/rc.inet2 )
> 
> Στο debian ισχύει ότι αναφέρει ο Αχιλέας και περιγράφεται αναλυτικά στο σχετικό tutorial.


Νικο, για να ειναι ακομη πιο "σουλουπωμενη" η κατασταση με τα confs των καρτων, εχω κανει τροποποιησεις σε δυο βασικα πακετα του slack τα οποια βρισκονται ηδη στο repository και υπαρχει και ο καταλληλος οδηγος εδω :

http://slackware.mirrors.spirosco.awmn/ ... cripts.php
η εδω :
http://spirosco.awmn.gr:8005/Guides/cus ... cripts.php

----------


## ysam

> ειναι το interface σε passive ωστε να λαμβανει μονο και να μην στελνει updates. Αυτο ειδικα πρεπει να το κανουν οσοι εχουν LAN αλλα δεν εχουν κανονικο subnet και χρησιμοποιουν ΙΡ του στυλ 192.168.x.x


Να συμπληρώσω όμως εδώ ότι το passive δεν θα καταργήσει πoτέ το announcement του δικτύου αυτού στο ospf οπότε καλό είναι στο..
network x.x.x.x area y να βάλουμε ΜΟΝΟ το/τα δίκτυα που πραγματικά θέλουμε να κάνουμε announce. 

Για παράδειγμα όταν έχουμε ένα Interface που δεν θέλουμε να συμπεριλυφθεί στο ospf, ούτε το δίκτυο στο οποίο είναι attached αλλά ούτε φυσικά να δέχεται και να στέλνει updates τότε ακολουθούμε το παρακάτω παράδειγμα. 



```
-----eth0------10.1.1.0/30 [router] 10.1.1.128/30----eth1--------
                                 |
                          10.1.1.252/30
                              eth2
```

router ospf
network 10.1.1.0/30 area 0
network 10.1.1.128/30 area 0

Δεν βάζουμε δλδ καθόλου το δίκτυο 10.1.1.252/30 οπότε το καταργούμε εντελός και το ospf δεν το σκεύτεται καν. 

-Γιάννης

----------


## ysam

once upon a time it was zebra... now it became quagga... 

Απλά σταμάτησε το open source toy zebra και έγινε commercial και έτσι το συνεχισαν κάποιοι και το είπαν quagga.. Βασικά είναι το ίδιο πράγμα.. 

-Γιάννης

----------


## xpapazaf

Οι access-lists παίζουν στην zebra? Ενώ δημιουργώ access-list δεν μου δίνει την δυνατότητα να την κάνω assign σε interface (access-group κτλ).
Ξέρει κανείς τί γίνεται?

----------


## ysam

Οχι οι ACLs είναι για το policy που θέλεις να εφαρμώσεις στο routing και μόνο. Δεν έχουν σχέση με ACLs που μπορείς να κάνεις assign σε interface.. Τι το κάναμε το zebra/quagga cisco router ??  :: 


-Γιάννης

----------


## xpapazaf

Δηλαδή εάν εγώ φτιάξω την εξής ACL:
access-list 1 deny host 10.1.1.1
τί επίπτωση θα έχει στο routing? Πακέτα τα οποία προορίζονται για τον συγκεκριμένο host θα κόβονται (όταν πάνε να περάσουν) σε όλα τα interface του συγκεκριμένου router?
Βασικά αυτό που ρωτάω είναι τί δυνατότητα δίνουν οι ACLs που μπορεί κανείς να φτιάξει στη zebra.

----------


## ysam

Οχι αυτή η ACL από μόνη της δεν μπορεί να κάνει τίποτα. 

Πρέπει να την βάλεις κάπου. 

Που μπορείς να την βάλεις? 

Σε ένα route-map ας πούμε...

route-map test1 permit 10
match ip access-list 1
set ip next-hop 10.1.1.1 

αλλά και αυτό το route-map από μόνο του δεν λέει τίποτα.. Πρέπει να το βάλεις κάπου.. πχ 

router bgp 1 
neighbor 10.1.2.1 remote-as 2
neighbor 10.1.2.1 route-map test1 in

-Γιάννης

----------


## xpapazaf

Χρησιμοποιείται δηλαδή μόνο για routes redistribution into routing protocols, και για routing policy?
Καλή φάση απο την quagga, δεν το περίμενα!  ::  
Πάντος, Γιάννη, σε ευχαριστώ που μου έλυσες την απορία.

----------


## ysam

Ναι ακριβώς αυτό.. 

thx.. my pleasure..

-Γιάννης

----------

