Mikrotik + Quagga + OLSR for Dummies

Από TWMN Wiki

Μετάβαση σε: πλοήγηση, αναζήτηση

Το πακέτο routing του Mikrotik αφενός παρουσιάζει προβλήματα και αφετέρου έχει περιορισμένες δυνατότητες (π.χ. δεν υποστηρίζει το πρωτόκολλο OLSR). Αυτός είναι και ο λόγος που βάζουμε το πακέτο quagga που αποτελεί το routing πακέτο του Linux.

Ο οδηγός αυτός δεν αντικαθιστά τον οδηγό του mobius από το AWMN αλλά χρησιμοποιεί το True Linux Mikrotik για απομακρισμένη εγκατάσταση πακέτων σε Mikrotik. Πληροφορίες για άλλους τρόπους εγκατάστασης ή εγκατάσταση καθεαυτό True Linux Mikrotik μπορείτε να βρείτε στις διευθύνσεις

Πρόκειται για αλλαγή/συμπλήρωση δουλειάς που έχει ήδη γίνει από μέλη της κοινότητας του AWMN.

True Linux Mikrotik

Forum AWMN

Για τις ανάγκες του TWMN έγιναν edit τα αρχεία απο τον dfrago. Η διαδικασία βήμα προς βήμα:


Πίνακας περιεχομένων

Προφυλάξεις

Επειδή πάντα μπορεί να πάει κάτι στραβά, δεν παραλείπουμε πριν κάνουμε οτιδήποτε, να πάρουμε το backup του router. Από WinBox πάμε στο μενού Files και πατάμε backup. Το αρχείο σώζεται στον ftp του κόμβου απ' όπου το κατεβάζουμε. Το αποθηκεύουμε και... αχρείαστο να 'ναι!


Αφαίρεση των πακέτων routing/UPS και routing/web-proxy του Mikrotik

Αν έχουμε PC με Mikrotik (x86 αρχιτεκτονική) πρέπει να αφαιρεθoύν τα πακέτα routing και web-proxy. Σε περίπτωση που έχουμε routerboard (αρχιτεκτονική mips) πρέπει να αφαιρεθούν τα πακέτα routing και UPS.

Παράδειγμα για PC (x86):

Από Winbox: Πάμε System -> Packages και επιλέγουμε τα πακέτα routing/web-proxy (και του routing-test αν είναι εγκατεστημένο). Πατάμε Uninstall.

Από κονσόλα: Πρώτα εμφανίζουμε τη λίστα με τα εγκατεστημένα πακέτα δίνοντας

mikrotik> /system package print

Βλέπουμε τον κωδικό του πακέτου routing/web-proxy (και του routing-test αν είναι εγκατεστημένο) και δίνουμε

mikrotik> /system uninstall XX (όπου ΧΧ ο αριθμός του πακέτου)

Αφαίρεση πακέτων - παρατηρήσεις

Tip: τα πακέτα δεν βγαίνουν αμέσως με το που πατάτε "uninstall". Προγραμματίζονται για απεγκατάσταση, η οποία θα γίνει στο επόμενο reboot.

Tip: σε περίπτωση καινούργιας εγκατάστασης Mikrotik, δεν επιλέγουμε να εγκατασταθούν τα πακέτα routing και routing-test αφού πλέον θα χρησιμοποιούμε την quagga για το routing. Ταυτόχρονη λειτουργία και των 2 δεν μπορεί να υπάρξει στον ίδιο router.

Tip: Το πακέτο web-proxy μπορεί να ξαναμπεί αφού έχουμε τελειώσει όλη τη διαδικασία. Το ίδιο ισχύει αντίστοιχα και για το πακέτο UPS στα routerboards.

Convert του πακέτου web-proxy

Το πέρασμα του πακέτου True Linux βασίζεται σε μια ιδιαιτερότητα των πακέτων του Mikrotik. Το κυριότερο πακέτο που χρειαζόμαστε είναι το web-proxy-x.x.x.npk για τα x86 ή το ups-x.x.x-ns.npk για τα routerboard/mips το οποίο θα τροποποιηθεί για να εκτελέσει αυτά που χρειαζόμαστε. Για να μην φτιάξουμε τα πακέτα για την έκδοση Mikrotik του καθενός, ο mobius από το AWMN έφτιαξε ένα μικρό converter που κάνει ακριβώς αυτή τη δουλειά. To script αυτό είναι γραμμένο σε PHP και για να το εκτελέσετε πρέπει να έχετε προεγκατεστημένη την PHP σε Windows ή σε Linux.

Χρειαζόμαστε το πακέτο web-proxy που αντιστοιχεί στην έκδοση Mikrotik του router μας (δεν μπορούμε να το πάρουμε από τον router). Πηγαίνουμε στη σελίδα του Mikrotik και κατεβάζουμε το πακέτο που θέλουμε (ή το κατεβάζουμε από το DC αν υπάρχει). Τρέχουμε το convert.php για να μετατρέψουμε το πακέτο. Το πακέτο πρέπει να είναι στο ίδιο directory απ’ όπου τρέχουμε την εντολή. Το αποτέλεσμα θα είναι το παρακάτω:

> php convert.php package.npk
[*] Modifying file...
[*] Finished successfully...

Tip: Το convert.php είναι διαφορετικό για mips και διαφορετικό για x86. Χρησιμοποιήστε το αντίστοιχο για κάθε περίπτωση.


Upload των αρχείων

Τα παρακάτω αρχεία πρέπει να τα στείλουμε στον ftp του router.

install.tar.gz
busybox
S99tlinstall
web-proxy-x.x.x.npk
preinstall (!μόνο για routerboards)

ΠΡΟΣΟΧΗ: Τα αρχεία S99tlinstall και preinstall(!μόνο για routerboards) πρέπει να σταλούν σε ASCII mode. Τα υπόλοιπα σε binary

Ελέγχουμε ότι υπάρχει χώρος στο δίσκο του router και κάνουμε το upload των αρχείων είτε με κάποιον ftp client είτε με τη κονσόλα των Windows. Θα χρειαστούμε περίπου 20ΜΒ ελεύθερα στο router μας. Σε περίπτωση που δεν τα έχουμε απεγκαθιστούμε πακέτα που δεν χρησιμοποιούμε πχ πακέτα lcd, gps, hotspot, hotspot-fix, telephony, wireless-legacy, synchronous

Από Windows:

Στο παράδειγμα έχουμε βάλει τα αρχεία που θέλουμε στο c:\ και δίνουμε τις παρακάτω εντολές:

C:\>ftp 10.122.17.1
Connected to 10.122.17.1.
220 twmn::saintjohn FTP server (MikroTik 2.9.27) ready
User (10.122.17.1:(none)): skysurfer
331 Password required for skysurfer
Password:
230 User skysurfer logged in
ftp> asc
200 Type set to A
ftp> send S99tlinstall
200 PORT command successful
150 Opening ASCII mode data connection for '/S99tlinstall'
226 ASCII transfer complete
ftp: 7338 bytes sent in 0,00Seconds 7338000,00Kbytes/sec.
ftp> bin
200 Type set to I
ftp> send install.tar.gz
200 PORT command successful
150 Opening BINARY mode data connection for '/install.tar.gz'
226 BINARY transfer complete
ftp: 195374 bytes sent in 2,05Seconds 95,44Kbytes/sec.
ftp> send busybox
200 PORT command successful
150 Opening BINARY mode data connection for '/busybox'
226 BINARY transfer complete
ftp: 618556 bytes sent in 6,42Seconds 96,32Kbytes/sec.
ftp> send web-proxy-2.9.27.npk
200 PORT command successful
150 Opening BINARY mode data connection for '/web-proxy-2.9.27.npk'
226 BINARY transfer complete
ftp: 378522 bytes sent in 0,61Seconds 620,53Kbytes/sec.
ftp> bye


Εγκατάσταση True Linux + Quagga + OLSR

Αφού έχουμε επιλέξει τα κατάλληλα πακέτα για απεγκατάσταση (routing/web-proxy για PC / routing/UPS για routerboard) και αφού έχουμε κάνει upload τα απαραίτητα αρχεία, κάνουμε reboot τον router.

Σε αυτό το reboot βγαίνουν τα πακέτα που είχαμε επιλέξει και ταυτόχρονα εγκαθίσταται το νέο patched πακέτο web-proxy/UPS του Mikrotik.

Μετά το reboot, ξαναεπιλέγουμε το πακέτο web-proxy για απεγκατάσταση και ξανακάνουμε reboot.

Στο δεύτερο reboot βγαίνει το πακέτο web-proxy που έχουμε φτιάξει και μπαίνει το True Linux.

Χάρη στον dfrago από το TWMN η εγκατάσταση της Quagga καθώς και του OLSR γίνεται αυτόματα (έχει γίνει edit στο script εγκατάστασης του True Linux).

Πλέον το Mikrotik έχει γίνει κανονικό Linux! Μπορείτε να κάνετε κανονικά login ως root με telnet. Ελέγχουμε αν δουλέυει δίνοντας:

Απο Windows:

telnet iprouter

Απο Mikrotik πάμε New Terminal και δίνουμε:

system telnet 127.0.0.1

Το default password είναι κενό, επομένως πρώτη δουλειά είναι να ορίσουμε password για τον root.

Αφού κάνουμε login με τα default user/pass δίνουμε:

passwd

Ρύθμιση της Quagga

Κάνουμε εκ νέου reboot.

Ελέγχουμε ότι η Quagga παίζει κανονικά. Για να κάνουμε login στη Quagga δίνουμε από το telnet των Windows:

telnet iprouter 2601

ή από το terminal στο Winbox:

system telnet 127.0.0.1 2601

Αν όλα έχουν πάει καλά θα μας ζητήσει password που από default είναι zebra

Πλέον, η ρύθμιση του routing στον κόμβο σας θα γίνεται από τα conf αρχεία της quagga. Αυτά είναι τα ospfd.conf και zebra.conf.

Αναλυτικότερα παρακάτω


Edit των αρχείων zebra.conf και ospfd.conf

Με την εγκατάσταση του True Linux, τα αρχεία ospfd.conf και zebra.conf έχουν μπει αυτόματα στο φάκελο /usr/etc/ αλλά είναι κενά. Έχουν μπει και σε ένα νέο φάκελο στον ftp του κόμβου (στο /var/pckg/quagga_conf/).

ΠΡΟΣΟΧΗ κατά το editing των αρχείων στις κενές γραμμές και στα κενά στο τέλος των γραμμών!

Μπορείτε να κάνετε edit τα αρχεία με δυο τρόπους:


The easy way

Ανοίγετε τα ospfd.conf και zebra.conf με το Winvi και βάζετε τις απαραίτητες πληροφορίες όπως φαίνεται στα παρακάτω βήματα. Τα κάνετε upload στον ftp του router και κάνετε reboot. Με το reboot θα αντιγραφούν αυτόματα τα αρχεία .conf στον φάκελο /usr/etc/ και είστε έτοιμοι!

The terminal way

Αν προτιμάτε πιο "manual" τρόπο, τότε θα πρέπει να κάνετε edit τα αρχεία .conf με το vi μέσα από κονσόλα (θα πρέπει δηλαδή να μπείτε telnet ως root στον router).

vi /usr/etc/zebra.conf
vi /usr/etc/ospfd.conf


The vi editor

Μερικές χρήσιμες εντολές για το vi

Πατάμε a για να ενεργοποιηθεί το πληκτρολόγιο και να μπορούμε να γράψουμε.

Πατώντας Escape και γράφοντας :wq αποθηκεύονται οι αλλαγές και βγαίνουμε απο το αρχείο. Με :q βγαίνουμε απο το αρχείο χωρίς να αποθηκευτούν οι αλλαγές.

Για να σβήσουμε μια γραμμή: Πατάμε Escape και γράφουμε :xd. Όπου x είναι ο αριθμός της γραμμής που θέλουμε να σβήσουμε.

Για να σβήσουμε πολλές γραμμές: Πατάμε Escape και γράφουμε :x,yd. Όπου x είναι ο αριθμός της γραμμής που θέλουμε να αρχίσουμε να σβήνουμε και y η γραμμή που θέλουμε να τελειώσουμε.


zebra.conf

Στο αρχείο αυτό ορίζουμε το όνομα του κόμβου καθώς και το password με το οποίο θα γίνεται το login στην quagga.


Παράδειγμα:

hostname twmn::test
 password testpassword
 enable password testpassword


Αντικαταστήστε τα bold γράμματα με τα αντίστοιχα δικά σας στοιχεία.


ospfd.conf

Στο αρχείο αυτό γίνεται η όλη ρύθμιση του routing με OSPF. Ορίζουμε το password με το οποίο θα κάνουμε login στο δαίμονα του OSPF και τα interfaces τα οποία θα παίζουν με OSPF.

Κάνουμε login ως root στην ip του κόμβου και δίνουμε:

ifconfig –a

Με την εντολή αυτή βλέπουμε όλα τα interfaces του κόμβου και τα ορίζουμε στο ospfd.conf

Ως passive ορίζουμε τα interfaces που δεν τρέχουν OSPF.

Παράδειγμα:

hostname twmn::saintjohn
password test
enable password test
!
interface ath0
!
interface ath1
 description bb-xrist
 ip ospf authentication-key twmn
 ip ospf cost 45
!
interface ath2
 description bb-maax
 ip ospf authentication-key twmn
 ip ospf cost 23
!
interface ath3
 description bb-steel
 ip ospf authentication-key twmn
 ip ospf cost 45
!
interface dap
!
interface eogre
!
interface eth0
!
interface imq0
!
interface imq1
!
interface imq2
!
interface lo
!
interface tunl0
!
router ospf
 ospf router-id 10.122.17.0
 compatible rfc1583
 passive-interface eth0
 passive-interface lo
 network 10.122.255.16/29 area 0.0.0.0
 network 10.122.255.240/30 area 0.0.0.0
 network 10.124.255.252/30 area 0.0.0.0
 network 10.122.17.0/24 area 0.0.0.10
 area 0.0.0.10 range 10.122.17.0/24
 area 0.0.0.10 stub
 area 0.0.0.0 authentication
!
line vty
 access-class term
!


Επεξήγηση

 passive-interface eth0
 passive-interface lo

Εδώ δηλώνουμε όλα τα interfaces που δεν θέλουμε να παίζουν με OSPF. Αν έχετε πχ και δεύτερη κάρτα δικτύου στην οποία δεν θέλετε OSPF, θα βάλετε και passive-interface eth1 (ή όπως αλλιώς ονομάζεται)

 network 10.122.255.16/29 area 0.0.0.0
 network 10.122.255.240/30 area 0.0.0.0
 network 10.124.255.252/30 area 0.0.0.0

Εδώ δηλώνουμε τα networks των bblinks. Προσοχή στο network που δηλώνετε! Απο το Mikrotik πάμε IP -> Addresses και βλέπουμε την στήλη Network δίπλα απο την ip του bb-link. Αυτήν την ip βάζουμε και μετά με /xx το αντίστοιχο subnet (αυτό που λέει στη στήλη Address). Ως area 0.0.0.0 ορίζουμε την περιοχή των bb-links

 area 0.0.0.10 stub

Εδώ δηλώνουμε οτι η area 0.0.0.10 είναι stub, δηλαδή δεν θα παίζει με OSPF


Tip: Αν κάποιο bblink έχει ip απο το C class του κόμβου, ενεργοποιούμε το OSPF και στο C Class του κόμβου. Για να το κάνουμε αυτό, ορίζουμε στο ίδιο area το C class του κόμβου με αυτό των bblinks. Δηλαδή τα κάνουμε όλα 0.0.0.0 και αφαιρούμε τις παρακάτω γραμμές:

 area 0.0.0.10 range 10.122.17.0/24
 area 0.0.0.10 stub

Τροποποίηση του Address List

Πρόκειται για bug κατά το οποίο η Quagga δεν μπορεί να διαβάσει σωστά τη διεύθυνση του interface και να ανταλάξει πακέτα με τον απέναντι router. Γι'αυτό το λόγο κάνουμε κάτι "παράτυπο" αλλάζοντας το network που αντιστοιχεί στην ip address του interface που θα "τρέχει" OSPF στο Mikrotik. Μπαίνουμε στο router με Winbox και πάμε IP -> Addresses. Σε όλα τα interfaces που ακούνε στο ospf βάζουμε στο network την ip address του router στο συγκεκριμένο interface. Αν δεν γίνει η αλλαγή αυτή, δεν θα λειτουργεί το OSPF στο αντίστοιχο interface.

Παράδειγμα:

Εικόνα:ipaddresses.JPG

Κάνουμε reboot

Αυτό ήταν! Πλέον το Mikrotik σας routaρει με την quagga! Θα παρατηρήσετε ότι το μενού routing έχει φύγει από το Winbox (όπως είναι λογικό).


Πως βλέπουμε routes

Κάνουμε login στον δαίμονα του OSPF με την εντολή:

system telnet 127.0.0.1 2604

Το password το ορίσαμε στο ospfd.conf.

Με το ? βγαίνει λίστα με τις εντολές.

Παράδειγμα:

show ip ospf route (δείχνει τα routes)
show ip ospf interface (η κατάσταση των Interfaces)


Πως κάνουμε restart τη quagga

Αν δουλεύουμε τα conf μέσω telnet και vi δίνουμε:

ps

Η εντολή εμφανίζει κάθε διεργασία που τρέχει με τον αντίστοιχο κωδικό της. Θα μας δείξει κάτι παρόμοιο με αυτό:

311 root       1064 S   /usr/sbin/zebra -du root -g root 
314 root       2072 S   /usr/sbin/ospfd -du root -g root 

Το πρώτο νούμερο είναι αυτό που μα ενδιαφέρει. Δίνουμε:

kill xxx

Έτσι σταματάμε ότι θέλουμε και μετά για να ξαναξεκινήσει δίνουμε:

/etc/rc.d/run.d/S61quagga

Εναλλακτικά μπορούμε να γράψουμε τις εντολές σε μία γραμμή

killall zebra && killall ospfd ; /etc/rc.d/run.d/S61quagga

Απαραίτητα αρχεία

Στα παρακάτω zip υπάρχουν όλα τα αρχεία που θα χρησιμοποιήσουμε στον οδηγό:

Αρχεία για x86

Αρχεία για mips

Λειτουργεί mirror των πακέτων που διαθέτει ο mobius/openwrt στη διεύθυνση http://karagouna.dfragos.twmn/ipkg/x86 και http://karagouna.dfragos.twmn/ipkg/mips/openwrt . Οι διευθύνσεις αυτές υπάρχουν ήδη στις ρυθμίσεις του ipkg στα παραπάνω πακέτα.

Απαραίτητο για το editing των αρχείων είναι το Winvi

Winvi


Απαραίτητο update

Οι τελευταίες εκδόσεις των προγραμμάτων είναι διαθέσιμες μόνο για x86. Το μόνο που έχετε να κάνετε εφόσον έχετε χρησιμοποιήσει τα παραπάνω αρχεία είναι:

ipkg update
ipkg install quagga
ipkg install olsrd

Αν μας ρωτήσει αν θέλουμε να κάνουμε αντικατάσταση αρχεία πατάμε Ν ώστε να μη σβηστούν τυχόν αρχεία που ήδη έχουμε ώστε να δουλεύουν η quagga και το olsr.

Για τρέξουν κατεθευθείαν οι νέες εκδόσεις δίνουμε τις εντολές όπως σημειώνονται, σε μία γραμμή

killall zebra && killall ospfd ; /etc/rc.d/run.d/S61quagga

Αν μας βγάλει σφάλμα ότι δεν μπορεί να βρει τον server ελέγχουμε ότι όντως μπορούμε να δούμε από το router το 10.107.8.70(karagouna.dfragos.twmn)

ping 10.107.8.70

και ότι στο αρχείο /etc/resolv.conf υπάρχει DNS server που λειτουργεί σωστά

vi /etc/resolv.conf

Αν δεν προσπαθεί το πρόγραμμα ipkg να κατεβάσει τα προγράμματα από τον server karagouna.dfragos.twmn αλλάζουμε το αρχείο /etc/ipkg.conf

vi /etc/ipkg.conf

και αντικαθιστούμε την υπάρχουσα γραμμή που ξεκινά με src με την

src stable http://karagouna.dfragos.twmn/ipkg/x86

Το αρχείο /etc/ipkg.conf τελικά πρέπει να έχει τη μορφή

src stable http://karagouna.dfragos.twmn/ipkg/x86
dest root /

Στη συνέχεια ξανατρέχουμε τις εντολές του ipkg και συνεχίζουμε την εγκατάσταση κανονικά.

Προσοχή!!! πακέτα άλλων χρηστών μπορεί να μη λειτουργήσουν καθώς ανάλογα με την κοινότητα που χρησιμοποιούνται τα προγράμματα αυτά, χρησιμοποιούνται και άλλες ρυθμίσεις για τη λειτουργία τους.

Σε περίπτωση αλλαγής hardware

Σε περίπτωση που αλλαχτεί κάποια κάρτα απο τα interfaces του κόμβου θα πρέπει να ξαναγίνει edit το ospfd.conf. Πρώτα βέβαια θα ξαναδώσουμε ifconfig -a για να δούμε τη νέα λίστα με τα interfaces του κόμβου.


Notes

• Τα static routes μένουν ως έχουν.

• Η quagga με το configuration file που δίνεται ως παράδειγμα κάνει redistribute μόνο τα networks που έχουν δηλωθεί μέσα στο conf και όχι αυτά που ενδεχομένως υπάρχουν στον router. Παραπάνω πληροφορίες μπορεί να βρει ο χρήστης στη σελίδα του Quagga

• 2604 η πόρτα που ακούει ο δαίμονας για το ospf

• 2601 η πόρτα που ακούει η quagga.

• Στην quagga κάνεις login μόνο από το τοπικό δίκτυο.

• Στο vi σβήνουμε μόνο με backspace και όχι με delete.

• Στο vi η εντολή για έξοδο χωρίς αποθήκευση είναι :q (αν έχουμε κάνει αλλαγές και δεν θέλουμε να σώσουμε το αρχείο είναι :q!)

• Το license του Mikrotik μένει ως έχει.

• Tα user accounts του mikrotik παραμένουν ως έχουν.



'Ένα μεγάλο ευχαριστώ στον dfrago που έκανε όλη τη δουλειά για το TWMN και στα παιδιά απο το AWMN που έκαναν το όλο εγχείρημα δυνατό

Guide by SkySurfer & dfragos

στήσιμο υπηρεσιών