Mikrotik + Quagga + OLSR for Dummies
Από TWMN Wiki
Το πακέτο routing του Mikrotik αφενός παρουσιάζει προβλήματα και αφετέρου έχει περιορισμένες δυνατότητες (π.χ. δεν υποστηρίζει το πρωτόκολλο OLSR). Αυτός είναι και ο λόγος που βάζουμε το πακέτο quagga που αποτελεί το routing πακέτο του Linux.
Ο οδηγός αυτός δεν αντικαθιστά τον οδηγό του mobius από το AWMN αλλά χρησιμοποιεί το True Linux Mikrotik για απομακρισμένη εγκατάσταση πακέτων σε Mikrotik. Πληροφορίες για άλλους τρόπους εγκατάστασης ή εγκατάσταση καθεαυτό True Linux Mikrotik μπορείτε να βρείτε στις διευθύνσεις
Πρόκειται για αλλαγή/συμπλήρωση δουλειάς που έχει ήδη γίνει από μέλη της κοινότητας του 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.
Παράδειγμα:
Κάνουμε 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 υπάρχουν όλα τα αρχεία που θα χρησιμοποιήσουμε στον οδηγό:
Λειτουργεί mirror των πακέτων που διαθέτει ο mobius/openwrt στη διεύθυνση http://karagouna.dfragos.twmn/ipkg/x86 και http://karagouna.dfragos.twmn/ipkg/mips/openwrt . Οι διευθύνσεις αυτές υπάρχουν ήδη στις ρυθμίσεις του ipkg στα παραπάνω πακέτα.
Απαραίτητο για το editing των αρχείων είναι το 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

