diff --git a/el_GR.ISO8859-7/articles/dialup-firewall/article.sgml b/el_GR.ISO8859-7/articles/dialup-firewall/article.sgml index 83bfd5f748..c472d664f5 100644 --- a/el_GR.ISO8859-7/articles/dialup-firewall/article.sgml +++ b/el_GR.ISO8859-7/articles/dialup-firewall/article.sgml @@ -1,389 +1,389 @@ %man; ]> -
+
Σύνδεση μέσω τηλεφώνου και firewalling στο FreeBSD Marc Silver
marcs@draenor.org
$FreeBSD$ Αυτό το άρθρο περιγράφει πως μπορείτε να ρυθμίσετε ένα firewall χρησιμοποιώντας μια PPP σύνδεση μέσω τηλεφώνου στο FreeBSD με το IPFW. Πιο συγκεκριμένα, ένα firewall πάνω από μια σύνδεση μέσω τηλεφώνου που έχει δυναμική IP διεύθυνση. Αυτό το κείμενο δεν ασχολείται με το πως θα ρυθμίσετε την PPP σύνδεσή σας.
Πρόλογος Σύνδεση μέσω τηλεφώνου και firewalling στο FreeBSD Αυτό το κείμενο περιγράφει την διαδικασία που χρειάζεται για να ρυθμίσετε ένα firewall στο FreeBSD όταν η IP διεύθυνση δίνεται δυναμικά από τον ISP σας. Παρόλο που έχω προσπαθήσει να κάνω αυτό το κείμενο όσο το δυνατόν πιο πλήρες και σωστό, είστε ευπρόσδεκτοι να στείλετε τα σχόλιά ή τις προτάσεις σας στην διεύθυνση marcs@draenor.org. Παράμετροι του πυρήνα Το πρώτο πράγμα που θα χρειαστεί να κάνετε είναι να μεταγλωττίσετε τον πυρήνα σας. Αν χρειάζεστε βοήθεια για να το κάνετε αυτό, τότε το καλύτερο μέρος να ξεκινήσετε είναι το τμήμα ρυθμίσεων του πυρήνα στο Εγχειρίδιο. Θα πρέπει να προσθέσετε τις παρακάτω επιλογές στις ρυθμίσεις του πυρήνα σας: options IPFIREWALL Ενεργοποιεί τον firewall κώδικα του πυρήνα. options IPFIREWALL_VERBOSE Στέλνει τα μηνύματα για τα κατάλληλα πακέτα στο log του συστήματος. options IPFIREWALL_VERBOSE_LIMIT=100 Βάζει κάποιο όριο στις φορές που κάποια εγγραφή θα καταγράφεται. Αυτό εμποδίζει τα log αρχεία σας από το να γεμίσουν με πολλές επαναλαμβανόμενες εγγραφές. 100 είναι μια αρκετά λογική τιμή, αλλά μπορείτε να το ρυθμίσετε ανάλογα με τις απαιτήσεις σας. options IPDIVERT Ενεργοποιεί τα divert sockets, που θα δούμε αργότερα τι κάνουν. Υπάρχουν κι άλλα προαιρετικά πράγματα που μπορείτε να προσθέσετε στον πυρήνα σας για ακόμα μεγαλύτερη ασφάλεια. Δεν είναι απαραίτητα για να ρυθμίσετε ένα firewall έτσι ώστε να δουλεύει, αλλά κάποιοι αρκετά παρανοϊκοί χρήστες μπορεί να θέλουν να τα ενεργοποιήσουν. options TCP_DROP_SYNFIN Αυτή η επιλογή δίνει την δυνατότητα στον πυρήνα να αγνοεί τα TCP πακέτα που έχουν και την SYN και την FIN επιλογή. Έτσι εμποδίζονται εργαλεία όπως το nmap κλπ. στην προσπάθειά τους να αναγνωρίσουν το TCP stack του μηχανήματος, αλλά επίσης είναι ασύμβατο με τις επεκτάσεις που περιγράφει το RFC1644. Αυτό δεν προτείνεται για ένα μηχάνημα που θα τρέχει κάποιο web server. Μην κάνετε reboot όταν έχετε μεταγλωττίσει τον πυρήνα. Ελπίζουμε πως θα χρειαστεί μόνο μια επανεκκίνηση, στο τέλος της εγκατάστασης του firewall. Αλλαγές στο <filename>/etc/rc.conf</filename> για να φορτώνεται το firewall Τώρα πρέπει να κάνουμε κάποιες αλλαγές στο /etc/rc.conf με τις ρυθμίσεις μας για το firewall. Απλά προσθέστε τις παρακάτω γραμμές: firewall_enable="YES" firewall_script="/etc/firewall/fwrules" natd_enable="YES" natd_interface="tun0" natd_flags="-dynamic" Για περισσότερες πληροφορίες σχετικά με τη σημασίας καθεμιάς από αυτές τις γραμμές, ρίξτε μια ματιά στο /etc/defaults/rc.conf και διαβάστε την man σελίδα &man.rc.conf.5; Απενεργοποιήστε την ενσωματωμένη μετάφραση διευθύνσεων του PPP Μπορεί ήδη να χρησιμοποιείτε την ενσωματωμένη μετάφραση διευθύνσεων του PPP (NAT). Αν ναι, τότε θα πρέπει να την απενεργοποιήσετε, αφού τα παραδείγματα που θα δούμε παρακάτω χρησιμοποιούν το &man.natd.8; για να κάνουν το ίδιο πράγμα. Αν έχετε ήδη τις απαραίτητες γραμμές για να ξεκινάει το PPP αυτόματα, μάλλον μοιάζουν κάπως έτσι: ppp_enable="YES" ppp_mode="auto" ppp_nat="YES" ppp_profile="profile" Αν ναι, αφαιρέστε την γραμμή ppp_nat="YES". Θα πρέπει επίσης να αφαιρέσετε τυχόν nat enable yes ή alias enable yes έχει το /etc/ppp/ppp.conf σας. Οι κανόνες του firewall Έχουμε σχεδόν τελειώσει. Το μόνο που απομένει τώρα είναι να ορίσουμε τους κανόνες του firewall και τότε μπορούμε να επανεκκινήσουμε το σύστημα ώστε να ξεκινήσει το firewall. Καταλαβαίνω πως ο καθένας θα θέλει κάτι λίγο ή πολύ διαφορετικό στους κανόνες του. Αυτό που προσπάθησα να κάνω είναι να γράψω κάποιους βασικούς κανόνες που ταιριάζουν στους πιο πολλούς χρήστες που συνδέονται στο δίκτυο μέσω τηλεφώνου. Μπορείτε προφανώς να κάνετε αλλαγές σύμφωνα με τις ανάγκες σας, χρησιμοποιώντας τους παρακάτω κανόνες σαν την βάση για το δικό σας σετ κανόνων. Ας αρχίσουμε όμως με τις βασικές αρχές ενός κλειστού firewall. Αυτό που θέλετε να κάνετε είναι να κλείσετε τα πάντα και μετά να ανοίξετε μόνο ότι πραγματικά σας χρειάζεται. Οι κανόνες θα πρέπει λοιπόν πρώτα να επιτρέπουν και μετά να απαγορεύουν. Η λογική πίσω από αυτό είναι ότι πρώτα βάζετε τους κανόνες που επιτρέπουν πράγματα να περάσουν και ύστερα όλα τα άλλα απαγορεύονται. :) Ύστερα, φτιάξτε ένα κατάλογο /etc/firewall. Αλλάξτε κατάλογο μέσα σε αυτόν και δημιουργήστε το αρχείο fwrules που το όνομά του είχαμε γράψει στο rc.conf. Σημειώστε πως μπορείτε να αλλάξετε το όνομα του αρχείου αυτού σε ότι θέλετε. Αυτός ο οδηγός δίνει αυτό το όνομα σαν παράδειγμα και μόνο. Ας δούμε τώρα ένα παράδειγμα firewall, που έχει αρκετά καλά σχόλια. # Firewall rules # Written by Marc Silver (marcs@draenor.org) # http://draenor.org/ipfw # Freely distributable # Define the firewall command (as in /etc/rc.firewall) for easy # reference. Helps to make it easier to read. fwcmd="/sbin/ipfw" # Force a flushing of the current rules before we reload. $fwcmd -f flush # Divert all packets through the tunnel interface. $fwcmd add divert natd all from any to any via tun0 # Allow all data from my network card and localhost. Make sure you # change your network card (mine was fxp0) before you reboot. :) $fwcmd add allow ip from any to any via lo0 $fwcmd add allow ip from any to any via fxp0 # Allow all connections that I initiate. $fwcmd add allow tcp from any to any out xmit tun0 setup # Once connections are made, allow them to stay open. $fwcmd add allow tcp from any to any via tun0 established # Everyone on the internet is allowed to connect to the following # services on the machine. This example shows that people may connect # to ssh and apache. $fwcmd add allow tcp from any to any 80 setup $fwcmd add allow tcp from any to any 22 setup # This sends a RESET to all ident packets. $fwcmd add reset log tcp from any to any 113 in recv tun0 # Allow outgoing DNS queries ONLY to the specified servers. $fwcmd add allow udp from any to x.x.x.x 53 out xmit tun0 # Allow them back in with the answers... :) $fwcmd add allow udp from x.x.x.x 53 to any in recv tun0 # Allow ICMP (for ping and traceroute to work). You may wish to # disallow this, but I feel it suits my needs to keep them in. $fwcmd add 65435 allow icmp from any to any # Deny all the rest. $fwcmd add 65435 deny log ip from any to any Τώρα έχετε ένα ολοκληρωμένο firewall που επιτρέπει συνδέσεις στις θύρες 22 και 80 και καταγράφει όλες τις άλλες συνδέσεις στο log του συστήματος. Πλέον είστε έτοιμοι για επανεκκίνηση και το firewall θα πρέπει να ξεκινήσει να δουλεύει. Αν δείτε ότι αυτό είναι λάθος, ή έχετε οποιαδήποτε προβλήματα, ή ακόμα καλύτερα έχετε κάποιες προτάσεις για να διορθωθεί αυτή η σελίδα, επικοινωνήστε μαζί μου με email. Ερωτήσεις Γιατί χρησιμοποιείς το &man.natd.8; και το &man.ipfw.8; αφού θα μπορούσες να χρησιμοποιήσεις τα φίλτρα του &man.ppp.8;; Θα πρέπει να είμαι ειλικρινής και να πω ότι δεν υπάρχει κάποιος σοβαρός λόγος που χρησιμοποιώ το ipfw και το natd αντί για τα ενσωματωμένα φίλτρα του ppp. Από συζητήσεις που είχα με διάφορα άτομα φαίνεται πως οι πιο πολλοί συμφωνούν στο εξής: το ipfw έχει σαφώς πιο πολλές δυνατότητες και είναι πιο ευέλικτο στις ρυθμίσεις του από ότι τα φίλτρα του ppp, αλλά ότι κερδίζει σε δυνατότητες το χάνει σε ευκολία τροποποίησης των ρυθμίσεων. Ένας από τους λόγους που το χρησιμοποιώ είναι επειδή προτιμώ το φιλτράρισμα του firewall να γίνεται στο επίπεδο του πυρήνα, κι όχι από ένα πρόγραμμα στο επίπεδο του χρήστη. Βλέπω μηνύματα όπως limit 100 reached on entry 2800 και μετά από αυτό δεν ξαναβλέπω ποτέ μηνύματα στο log μου. Δουλεύει ακόμα το firewall μου; Αυτό απλά σημαίνει πως έχει χρησιμοποιηθεί το μέγιστο όριο καταγραφής (logging) για αυτό τον κανόνα. Ο κανόνας ο ίδιος εξακολουθεί να δουλεύει, αλλά δεν θα στέλνει πια μηνύματα στο log του συστήματος μέχρι να μηδενίσετε πάλι τους μετρητές. Μπορείτε να μηδενίσετε τους μετρητές με την εντολή ipfw resetlog. Εναλλακτικά, μπορείτε να αυξήσετε το όριο καταγραφής στις ρυθμίσεις του πυρήνα σας με την επιλογή όπως περιγράψαμε παραπάνω. Αν χρησιμοποιώ διευθύνσεις εσωτερικά που ανήκουν στην ομάδα 192.168.0.0 range, μπορώ να αλλάξω την εντολή σε κάτι όπως $fwcmd add deny all from any to 192.168.0.0:255.255.0.0 via tun0 στους κανόνες του firewall για να εμποδίσω τα μηχανήματα έξω από το δίκτυο από το να συνδέονται με τα εσωτερικά μηχανήματα; Η σύντομη απάντηση είναι όχι. Ο λόγος γι αυτό είναι ότι το natd κάνει μετάφραση διευθύνσεων για οτιδήποτε περνάει μέσω του interface tun0. Έτσι, τα εισερχόμενα πακέτα θα εμφανίζονται μόνο στην δυναμικά ορισμένη IP διεύθυνση του ξωτερικού interface και όχι στην διεύθυνση του εσωτερικού δικτύου. Σημειώστε όμως ότι μπορείτε να προσθέσετε ένα κανόνα $fwcmd add deny all from 192.168.0.4:255.255.0.0 to any via tun0 ο οποίος θα απαγορεύει σε ένα μηχάνημα του εσωτερικού δικτύου να στείλει οτιδήποτε πέρα από το firewall. Κάποιο λάθος πρέπει να έγινε. Ακολούθησα τις εντολές κατά γράμμα και τώρα κλειδώθηκα απέξω. Αυτός ο οδηγός υποθέτει ότι χρησιμοποιείτε το userland-ppp, γι αυτό κι οι κανόνες που δίνονται χρησιμοποιούν το tun0 interface, που αντιστοιχεί στην πρώτη σύνδεση που φτιάχνεται με το &man.ppp.8; (αλλιώς γνωστό και ως user-ppp). Η επόμενη σύνδεση θα χρησιμοποιούσε το tun1, μετά το tun2 και πάει λέγοντας. Θα πρέπει επίσης να θυμάστε ότι το &man.pppd.8; χρησιμοποιεί το interface ppp0, οπότε αν ξεκινήσετε τη σύνδεσή σας με το &man.pppd.8; θα πρέπει να αντικαταστήσετε το tun0 με ppp0. Παρακάτω θα δείξουμε ένα εύκολο τρόπο να αλλάξετε τους κανόνες του firewall κατάλληλα. Οι αρχικοί κανόνες σώζονται σε ένα αρχείο με όνομα fwrules_tun0. &prompt.user; cd /etc/firewall /etc/firewall&prompt.user; su Password: /etc/firewall&prompt.root; mv fwrules fwrules_tun0 /etc/firewall&prompt.root; cat fwrules_tun0 | sed s/tun0/ppp0/g > fwrules Για να καταλάβετε αν χρησιμοποιείτε το &man.ppp.8; ή το &man.pppd.8; μπορείτε να εξετάσετε την έξοδο της &man.ifconfig.8; αφού ενεργοποιηθεί η σύνδεσή σας. Π.χ., για μια σύνδεση που ενεργοποιήθηκε από το &man.pppd.8; θα δείτε κάτι σαν αυτό (δείχνονται μόνο οι σχετικές γραμμές): &prompt.user; ifconfig (skipped...) ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524 inet xxx.xxx.xxx.xxx --> xxx.xxx.xxx.xxx netmask 0xff000000 (skipped...) Από την άλλη, για μια σύνδεση που ενεργοποιήθηκε με το &man.ppp.8; (user-ppp) θά πρεπε να δείτε κάτι παρόμοιο με το παρακάτω: &prompt.user; ifconfig (skipped...) ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500 (skipped...) tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524 (IPv6 stuff skipped...) inet xxx.xxx.xxx.xxx --> xxx.xxx.xxx.xxx netmask 0xffffff00 Opened by PID xxxxx (skipped...)
diff --git a/el_GR.ISO8859-7/articles/explaining-bsd/article.sgml b/el_GR.ISO8859-7/articles/explaining-bsd/article.sgml index 31d5910920..3ae9b41a94 100644 --- a/el_GR.ISO8859-7/articles/explaining-bsd/article.sgml +++ b/el_GR.ISO8859-7/articles/explaining-bsd/article.sgml @@ -1,595 +1,595 @@ %man; ]> -
+
Explaining BSD Greg Lehey
grog@FreeBSD.org
Στον κόσμο του open source, η λέξη Linux είναι σχεδόν συνώνυμη με την έννοια Λειτουργικό Σύστημα, αλλά δεν είναι το μόνο open source UNIX λειτουργικό σύστημα. Σύμφωνα με τον Μετρητή Λειτουργικών Συστημάτων του Internet, από τον Απρίλιο του 1999 το 31.3% των υπολογιστών του κόσμου που είναι συνδεδεμένοι στο δίκτυο τρέχουν Linux. Το 14.6% τρέχουν BSD UNIX. Κάποιες από τις μεγαλύτερες εφαρμογές του παγκόσμιου ιστού, όπως το Yahoo!, τρέχουν BSD. Ο πιο μεγάλος σε φόρτο FTP εξυπηρέτης του κόσμου, το ftp.cdrom.com, χρησιμοποιεί BSD για να μεταφέρει πάνω από 1.4 TB δεδομένων τη μέρα. Είναι προφανές ότι αυτή δεν είναι μια περιορισμένη αγορά: το BSD είναι ένα καλά κρατημένο μυστικό. Λοιπόν, ποιο είναι το μυστικό; Γιατί το BSD δεν είναι πιο ευρέως γνωστό; Αυτό το άρθρο είναι μια προσπάθεια να απαντηθούν αυτές και άλλες ερωτήσεις. Σε αυτό το άρθρο, οι διαφορές μεταξύ του BSD και του Linux θα σημειώνονται με αυτό τον τρόπο.
Τί είναι το BSD; BSD σημαίνει Berkeley Software Distribution. Είναι το όνομα από τις διανομές πηγαίου κώδικα που έκανε το Πανεπιστήμιο της Καλιφόρνια, Berkeley (University of California, Berkeley), οι οποίες ήταν αρχικά επεκτάσεις στο UΝΙΧ ερευνητικό λειτουργικό σύστημα της AT&T. Διάφορα open source λειτουργικά συστήματα είναι βασισμένα σε μια έκδοση αυτού του πηγαίου κώδικα γνωστή ως 4.4BSD-Lite. Εκτός από αυτό, περιέχουν και μια ποικιλία από πακέτα από άλλες Open Source πηγές, με την ομάδα GNU να είναι μια από τις πιο σημαντικές. Συνολικά, το λειτουργικό σύστημα περιλαμβάνει: Τον BSD πυρήνα, που διαχειρίζεται την δρομολόγηση των διεργασιών, την μνήμη, την συμμετρική πολυ-επεξεργασία (symmetric multi-processing, SMP) τους οδηγούς συσκευών, κλπ. Σε αντίθεση με τον πυρήνα του Linux, υπάρχουν παραπάνω από ένα διαφορετικοί BSD πυρήνες με ποικίλες δυνατότητες. Η βιβλιοθήκη της C, το βασικό API του συστήματος. Η C βιβλιοθήκη του BSD είναι βασισμένη σε κώδικα από το Berkeley, όχι από την ομάδα GNU. Εργαλεία όπως φλοιοί (shells), προγράμματα διαχείρισης αρχείων, μεταγλωττιστές (compilers, linkers). Κάποια από τα εργαλεία είναι βασισμένα σε κώδικα GNU, κάποια άλλα όχι. Το Σύστημα X Window, που υλοποιεί το γραφικό περιβάλλον. Το σύστημα X Window που χρησιμοποιείται στις πιο πολλές εκδόσεις του BSD συντηρείται από μια διαφορετική ομάδα προγραμματιστών, την ομάδα XFree86. Αυτός είναι ο ίδιος κώδικας που χρησιμοποιεί και το Linux. Το BSD συνήθως δεν ορίζει ένα συγκεκριμένο γραφικό περιβάλλον, όπως το GNOME ή το KDE, παρόλο που και τα δυο είναι διαθέσιμα. Πολλά άλλα προγράμματα και εργαλεία. Τί, ένα αληθινό UNIX; Τα BSD λειτουργικά συστήματα δεν είναι κλώνοι, αλλά open source προϊόντα που έχουν βγει από το Πειραματικό UNIX λειτουργικό σύστημα της AT&T, που είναι επίσης πρόγονος του μοντέρνου UNIX System V. Αυτό ίσως σας προκαλέσει έκπληξη. Πώς μπορεί κάτι τέτοιο να γίνει, αφού η AT&T δεν έχει διανείμει ποτέ τον κώδικά της σαν open source; Είναι αλήθεια ότι το AT&T UNIX δεν είναι open source, και κατά μια έννοια, αν είμαστε αυστηροί με το θέμα των πνευματικών δικαιωμάτων, το BSD σίγουρα δεν είναι UNIX, αλλά από την άλλη, η ίδια η AT&T έχει ενσωματώσει κώδικα από άλλες ομάδες ανάπτυξης, με μια από τις πιο σημαντικές να είναι η Ομάδα Έρευνας της Επιστήμης των Υπολογιστών του Πανεπιστημίου της California, Berkeley, CA (CSRG: Computer Sciences Research Group, University of California, Berkeley, CA). Ξεκινώντας το 1976, η CSRG ξεκίνησε να διανέμει tapes με το λογισμικό τους, αποκαλώντας το Berkeley Software Distribution or BSD. Οι αρχικές εκδόσεις του BSD αποτελούνταν κυρίως από προγράμματα για χρήστες, αλλά αυτό άλλαξε δραματικά όταν η CSRG έκλεισε ένα συμβόλαιο με την Defense Advanced Projects Research Agency (DARPA) για να αναβαθμίσει τα πρωτόκολα επικοινωνίας του δικτύου της DARPA, του ARPANET. Τα νέα πρωτόκολα ήταν γνωστά ως Internet Protocols, αργότερα TCP/IP παίρνοντας το όνομά τους από τα δύο πιο σημαντικά πρωτόκολα. Η πρώτη ευρέως γνωστή υλοποίηση ήταν μέρος του 4.2BSD, που ανακοινώθηκε το 1982. Κατά τη διάρκεια των '80s, ένας αριθμός από εταιρείες που διέθεταν σταθμούς εργασίας αναπτύχθηκαν. Πολλές προτίμησαν να αγοράσουν την άδεια του UNIX αντί να αναπτύξουν δικά τους λειτουργικά συστήματα. Συγκεκριμένα, η Sun Microsystems αγόρασε την άδεια του UNIX και ανέπτυξε μια έκδοση του 4.2BSD την οποία ονόμασε SunOS. Όταν και η ίδια η AT&T μπόρεσε άρχισε να πουλά το UNIX, με μια έκδοση περιορισμένων δυνατοτήτων που λεγόταν System III, την οποία γρήγορα ακολούθησε το System V. Η βάση πηγαίου κώδικα του System V δεν περιείχε κώδικα δικτύωσης, οπότε όλες οι υλοποιήσεις περιείχαν επιπλέον λογισμικό από το BSD, συμπεριλαμβανομένου του λογισμικού TCP/IP, αλλά και προγράμματα όπως τον φλοιό csh και τον επεξεργαστή κειμένου vi. Συνολικά, αυτές οι βελτιώσεις ήταν γνωστές σαν οι Επεκτάσεις Berkeley. Τα tapes του BSD περιείχαν πηγαίο κώδικα της AT&T κι έτσι απαιτούσαν μια άδεια πηγαίου κώδικα του UNIX. Μέχρι το 1990, η χρηματοδότηση της CSRG τέλειωνε, και πήγαινε για κλείσιμο. Κάποια μέλη της ομάδας αποφάσισαν να διανείμουν τον BSD κώδικα, που ήταν Open Source, χωρίς τα κομμάτια του εμπορικού AT&T κώδικα. Αυτό έγινε τελικά με την Networking Tape 2, γνωστή και ως Net/2. Η Net/2 δεν ήταν ένα ολοκληρωμένο λειτουργικό σύστημα. Περίπου 20% από τον κώδικα του πυρήνα έλειπε. Ένα από τα μέλη της CSRG, ο William F. Jolitz, έγραψε τον υπόλοιπο κώδικα που έλειπε και τον έδωσε νωρίς το 1992 με όνομα 386BSD. Την ίδια στιγμή, μια άλλη ομάδα από πρώην μέλη της CSRG ίδρυσε μια εμπορική εταιρεία με όνομα Berkeley Software Design Inc. και εξέδωσε μια πειραματική έκδοση ενός λειτουργικού συστήματος που λεγόταν BSD/386, το οποίο ήταν βασισμένο στον ίδιο πηγαίο κώδικα. Το όνομα του λειτουργικού συστήματος έχει πλέον αλλάξει σε BSD/OS. Το 386BSD ποτέ δεν έγινε ένα σταθερό λειτουργικό σύστημα. Αντί γι αυτό, δύο άλλες ομάδες ξεπήδησαν από αυτό το 1993. Η ομάδα του NetBSD και η ομάδα του FreeBSD. Οι δυο ομάδες αρχικά ξεχώρισαν επειδή είχαν διαφορετική υπομονή όσον αφορά σε κάποιες βελτιώσεις στο 386BSD. Η ομάδα του NetBSD ξεκίνησε στην αρχή της χρονιάς, και η πρώτη έκδοση του FreeBSD δεν ήταν έτοιμη μέχρι το τέλος της χρονιάς. Στο μεταξύ η βάση του πηγαίου κώδικα είχε πλέον τόσες διαφορές που ήταν δύσκολο να ενωθεί η μια με με την άλλη ομάδα. Επιπλέον, οι δυο ομάδες είχαν και διαφορετικούς στόχους όπως θα δούμε παρακάτω. Το 1996, μια διαφορετική ομάδα, αυτή του OpenBSD, βγήκε από το NetBSD. Γιατί δεν είναι το BSD πιο γνωστό; Για διάφορους λόγους, το BSD είναι σχετικά άγνωστο: Αυτοί που αναπτύσσουν το BSD ασχολούνται συχνά περισσότερο με το να διορθώνουν τον κώδικά τους παρά με το να τον διαφημίζουν. Αρκετή από την δημοσιότητα του Linux οφείλεται σε παράγοντες εξωτερικούς (σε σχέση με αυτούς που αναπτύσσουν το Linux), όπως στα μέσα ενημέρωσης, και σε εταιρείες που έχουν φτιαχτεί για να παρέχουν υπηρεσίες βασισμένες σε Linux. Μέχρι πρόσφατα, τα open source BSD δεν είχαν τέτοιους διαφημιστές. Αυτοί που αναπτύσσουν το BSD τείνουν να είναι πιο έμπειροι από τους χρήστες του Linux και δεν τους ενδιαφέρει τόσο πολύ να το κάνουν εύκολο στη χρήση. Οι καινούριοι χρήστες έχουν την τάση να αισθάνονται πιο άνετα με το Linux. Το 1992, η AT&T έκανε μήνυση στην BSDI, την εταιρεία που ανέπτυσσε το BSD/386, κατηγορώντας την ότι το προϊόν περιείχε κώδικα του οποίου τα πνευματικά δικαιώματα ανήκαν στην AT&T. Η υπόθεση κανονίστηκε εκτός δικαστηρίου το 1994, αλλά το φάντασμα της μήνυσης ακόμα συνεχίζει να τρομάζει τον κόσμο. Ακόμα και σχετικά πρόσφατα, τον Μάρτιο του 2000, ένα άρθρο που βγήκε στον παγκόσμιο ιστό υποστηρίζει ότι η υπόθεση έκλεισε με πρόσφατο διακανονισμό. Μια λεπτομέρεια που η μήνυση ξεκαθάρισε είναι η κατάσταση των ονομάτων: κατά τη διάρκεια της δεκαετίας του'80, το BSD ήταν γνωστό ως BSD UNIX. Με την αφαίρεση ακόμα και του τελευταίου κομματιού κώδικα από την AT&T, έχασε και το δικαίωμα στο όνομα UNIX. Έτσι θα δείτε αναφορές σε βιβλία με τίτλους όπως the 4.3BSD UNIX operating system και the 4.4BSD operating system. Υπάρχει η εντύπωση πως τα BSD λειτουργικά συστήματα είναι κομματιασμένα και αντιμαχόμενα. Η Wall Street Journal μιλούσε για balkanization των ομάδων ανάπτυξης του BSD. Ακριβώς όπως και η μήνυση, αυτή η εντύπωση βασίζεται κυρίως σε παλιές ιστορίες. Σύγκριση του BSD με το Linux Τελικά ποια είναι η διαφορά μεταξύ, ας πούμε, του Debian Linux και του FreeBSD; Για τον μέσο χρήστη, η διαφορά είναι στην πραγματικότητα μικρή: και τα δυο είναι λειτουργικά συστήματα που μοιάζουν με το UNIX. Και τα δυο αναπτύσσονται απο μή εμπορικές οντότητες (αυτό δεν ισχύει για πολλές άλλες διανομές του Linux φυσικά). Στις επόμενες παραγράφους, θα πούμε λίγα πράγματα για το BSD και θα το συγκρίνουμε με το Linux. Η περιγραφή ταιριάζει πιο πολύ στο FreeBSD, το οποίο είναι περίπου το 80% των εγκατεστημένων BSD, αλλά οι διαφορές από το NetBSD και το OpenBSD είναι μικρές. Σε ποιον ανήκει το BSD; Δεν υπάρχει ένα άτομο ή οργανισμός στον οποίο να ανήκει το BSD. Αναπτύσσεται και διανέμεται από μια κοινότητα προγραμματιστών από όλο τον κόσμο που έχουν αρκετές γνώσεις και είναι αφοσιωμένοι στην ανάπτυξή του. Κάποια από τα κομμάτια του BSD είναι ανεξάρτητα Open Source projects που συντηρούνται από κάποια διαφορετική ομάδα ή άτομο. Πως αναπτύσσεται και ενημερώνεται το BSD; Οι BSD πυρήνες αναπτύσσονται ακολουθώντας το Open Source μοντέλο ανάπτυξης. Κάθε ομάδα διατηρεί ένα δέντρο πηγαίου κώδικα στο οποίο έχουν όλοι πρόσβαση, χρησιμοποιώντας το Concurrent Versions System (CVS). Το δέντρο πηγαίου κώδικα περιέχει όλο τον πηγαίο κώδικα για τα αρχεία του συστήματος, καθώς και τεκμηρίωση ή άλλα σχετικά αρχεία. Το CVS επιτρέπει στους χρήστες να εξάγουν (με άλλα λόγια να πάρουν ένα αντίγραφο) οποιασδήποτε έκδοσης του συστήματος. Ένας μεγάλος αριθμός προγραμματιστών από όλο τον κόσμο συνεισφέρουν με βελτιώσεις για το BSD. Χωρίζονται σε τρεις κατηγορίες: Οι Contributors γράφουν κώδικα ή τεκμηρίωση. Δεν έχουν δικαίωμα να κάνουν commit (να προσθέσουν κώδικα) απευθείας στον πηγαίο κώδικα. Για να μπει ο κώδικάς τους στο σύστημα πρέπει να περάσει από έλεγχο και να δοκιμαστεί από κάποιον προγραμματιστή που έχει τέτοια δικαιώματα, ο οποίος λέγεται και committer. Οι Committers είναι προγραμματιστές με δικαίωμα να προσθέτουν πράγματα απευθείας στον πηγαίο κώδικα. Για να γίνει κάποιος committer πρέπει να δείξει ότι έχει ικανότητες σε κάποιο συγκεκριμένο τομέα, στον οποίο είναι ενεργός. Αφήνεται στην διακριτικότητα του committer το αν θα πρέπει να πάρει άδεια πριν κάνει αλλαγές σε ένα συγκεκριμένο μέρος του πηγαίου κώδικα. Γενικά, ένας έμπειρος committer μπορεί να κάνει αλλαγές που είναι προφανώς σωστές χωρίς να ζητήσει άδεια. Για παράδειγμα, ένας committer από την ομάδα τεκμηρίωσης μπορεί να διορθώνει ορθογραφικά ή γραμματικά λάθη χωρίς να ζητήσει επιβεβαίωση. Από την άλλη, προγραμματιστές που κάνουν μεγάλες ή περίπλοκες αλλαγές θα πρέπει να δίνουν κάπως τις αλλαγές τους στους άλλους για έλεγχο πριν κάνουν commit. Σε εξαιρετικές περιπτώσεις, ένα μέλος της βασικής ομάδας (core team) με την ιδιότητα του Principal Architect μπορεί να απαιτήσει οι αλλαγές να αφαιρεθούν από τον πηγαίο κώδικα, μια διαδικασία που λέγεται backing out. Όλοι οι committers παίρνουν mail που περιγράφουν κάθε ξεχωριστή αλλαγή που γίνεται commit, οπότε δεν είναι δυνατόν να προστεθεί κάτι κρυφά. Η Core team. Τέλος, το FreeBSD και το NetBSD έχουν το καθένα μια βασική ομάδα (core team) που έχει την διαχείριση του συστήματος. Η βασική ομάδα έχει αναπτυχθεί στην πορεία του project, και ο ρόλος της δεν είναι πάντα σαφώς καθορισμένος. Δεν είναι απαραίτητο να είναι κάποιος προγραμματιστής, αν και συνήθως τα μέλη της βασικής ομάδας είναι από τα άτομα που αναπτύσσουν το BSD. Οι κανόνες για την βασική ομάδα διαφέρουν από το ένα project στο άλλο, αλλά γενικά η γνώμη της βασικής ομάδας μετράει περισσότερο στην κατεύθυνση του project από αυτή των υπόλοιπων. Αυτή η οργάνωση διαφέρει από αυτή του Linux σε διάφορα σημεία: Δεν υπάρχει ένα μοναδικό άτομο που να ελέγχει τα περιεχόμενα του συστήματος. Πρακτικά, αυτή η διαφορά υπερεκτιμάται, αφού ο Chief Architect μπορεί να απαιτήσει κάποιος κώδικας να αφαιρεθεί, και ακόμα και στο Linux υπάρχουν αρκετά άτομα που τους επιτρέπεται να κάνουν αλλαγές. Από την άλλη, υπάρχει ένα κεντρικό repository, ένα μέρος που μπορείτε να βρείτε ολόκληρο το λειτουργικό σύστημα σε μορφή πηγαίου κώδικα, σε οποιαδήποτε έκδοση, ακόμα και παλιότερες. Τα BSD project συντηρούν ολόκληρο το Λειτουργικό Σύστημα, κι όχι μόνο τον πυρήνα. Αυτή η διαφορά είναι μόνο οριακά χρήσιμη. Ούτε το BSD, ούτε το Linux δεν είναι πολύ χρήσιμα χωρίς εφαρμογές. Οι εφαρμογές που χρησιμοποιούνται στο BSD είναι συχνά οι ίδιες εφαρμογές που χρησιμοποιούνται κάτω από το Linux. Σαν αποτέλεσμα της κεντρικής και σαφώς ορισμένης συντήρησης ενός CVS δέντρου πηγαίου κώδικα, η ανάπτυξη του BSD είναι ξεκάθαρη, και είναι έυκολη η πρόσβαση σε οποιαδήποτε έκδοση του συστήματος είτε με αριθμό έκδοσης, είτε με ημερομηνία. Το CVS επίσης επιτρέπει αθροιστικές αλλαγές στο σύστημα. Για παράδειγμα, το repository του FreeBSD ενημερώνεται περίπου 100 φορές τη μέρα. Οι πιο πολλές από αυτές τις αλλαγές είναι μικρές. Εκδόσεις του BSD Κάθε BSD project διαθέτει το σύστημα σε τρεις διαφορετικές εκδόσεις. Όπως και με το Linux, σε κάθε έκδοση δίνεται ένας αριθμός, π.χ. 1.4.1 ή 3.5. Εκτός από αυτό, ο αριθμός της έκδοσης έχει ένα επίθεμα, το οποίο υποδηλώνει το σκοπό της έκδοσης: Η πειραματική έκδοση του συστήματος λέγεται CURRENT. Το FreeBSD ορίζει ένα αριθμό έκδοσης για το CURRENT, για παράδειγμα FreeBSD 5.0-CURRENT. Το NetBSD χρησιμοποιεί ένα κάπως διαφορετικό τρόπο ονοματολογίας και προσθέτει γράμμα στο τέλος του αριθμού έκδοσης το οποίο αντιστοιχεί σε αλλαγές εσωτερικών λειτουργιών, για παράδειγμα NetBSD 1.4.3G. Το OpenBSD δεν ορίζει κάποιο αριθμό ("OpenBSD-current"). Η ανάπτυξη καινούριων πραγμάτων πάντα γίνεται σε αυτόν τον κλάδο. Σε τακτά χρονικά διαστήματα, από δυο μέχρι και τέσσερεις φορές το χρόνο, τα project ανακοινώνουν μια RELEASE έκδοση του συστήματος, η οποία διατίθεται σε CD-ROM και μπορεί κάποιος να την κατεβάσει από FTP εξυπηρέτες, για παράδειγμα ανακοινώνεται το OpenBSD 2.6-RELEASE ή το NetBSD 1.4-RELEASE. Η RELEASE έκδοση απευθύνεται σε τελικούς χρήστες, και είναι η κανονική μορφή του συστήματος. Το NetBSD διαθέτει επίσης και patch εκδόσεις με ένα τρίτο ψηφίο, όπως για παράδειγμα την NetBSD 1.4.2. Καθώς προβλήματα βρίσκονται σε κάποια RELEASE έκδοση, διορθώνονται, και οι αλλαγές προστίθενται στο CVS. Στο FreeBSD, το αποτέλεσμα ονομάζεται η STABLE έκδοση, ενώ στο NetBSD και στο OpenBSD συνεχίζει να λέγεται η RELEASE έκδοση. Μικρά καινούρια χαρακτηριστικά μπορεί να προστεθούν και σε αυτόν τον κλάδο μετά από μια δοκιμαστική περίοδο στον CURRENT κλάδο. Το Linux, σε αντίθεση, συντηρεί δυο ξεχωριστά δέντρα πηγαίου κώδικα. Την σταθερή και την πειραματική έκδοση. Οι σταθερές εκδόσεις έχουν ένα ζυγό αιρθμό έκδοσης, όπως 2.0, 2.2 ή 2.4. Οι πειραματικές εκδόσεις έχουν περιττό αριθμό έκδοσης, όπως 2.1, 2.3 ή 2.5. Σε κάθε περίπτωση, ο αριθμός ακολουθείται από ένα ακόμα αριθμό που υποδεικνύει την ακριβή έκδοση. Ακόμα, κάθε διανομέας προσθέτει τα δικά του προγράμματα χρήστη και εργαλεία, οπότε το όνομα της διανομής είναι επίσης σημαντικό. Κάθε διανομέας επίσης προσθέτει τον δικό του αριθμό στην διανομή, οπότε μια πλήρης περιγραφή μπορεί να είναι κάτι σαν TurboLinux 6.0 με πυρήνα 2.2.14 Τι εκδόσεις του BSD είναι διαθέσιμες; Σε αντίθεση με τις διανομές του Linux, υπάρχουν μόνο τρία διαφορετικά open source BSD. Κάθε BSD ομάδα συντηρεί τον δικό της πηγαίο κώδικα και τον δικό της πυρήνα. Πρακτικά, φυσικά, υπάρχουν πολύ λιγότερες διαφορές στα προγράμματα χρήστη των BSD ομάδων από ότι υπάρχουν στο Linux. Είναι δύσκολο να κατηγοριοποιηθούν οι σκοποί της κάθε BSD ομάδας. Οι διαφορές είναι πολύ υποκειμενικές. Βασικά, Το FreeBSD έχει ως στόχο την υψηλή απόδοση και την ευκολία χρήσης από τους τελικούς χρήστες. Είναι επίσης το αγαπημένο των υπηρεσιών παροχής περιεχομένου στον παγκόσμιο ιστό. Τρέχει σε PCs και σε Alpha επεξεργαστές της Compaq. Το FreeBSD έχει σημαντικά περισσότερους χρήστες από τα άλλα projects. Το NetBSD στοχεύει στην μέγιστη μεταφερσιμότητα: μα φυσικά και τρέχει NetBSD. Τρέχει σε μηχανές από υπολογιστές χειρός μέχρι μεγάλους εξυπηρέτες, και έχει χρησιμοποιηθεί ακόμα και σε αποστολές της NASA. Είναι μια πολύ καλή επιλογή για παλιό μη-Intel hardware. Το OpenBSD δίνει μεγάλη σημασία στην ασφάλεια και στην καθαρότητα του κώδικα: χρησιμοποιεί ένα συνδυασμό από ιδέες open source και λεπτομερή έλεγχο του κώδικα για να φτιάξει ένα σύστημα που είναι ολοφάνερα σωστό, κάτι που το κάνει να είναι η επιλογή των οργανισμών που δίνουν σημασία στην ασφάλεια, όπως τράπεζες, χρηματιστήρια και παραρτήματα της κυβέρνησης των ΗΠΑ. Όπως και το NetBSD τρέχει σε αρκετές πλατφόρμες. Υπάρχουν ακόμη και δύο BSD λειτουργικά συστήματα που δεν είναι open source, το BSD/OS και το Mac OS X της Apple: Το BSD/OS είναι το πιο παλιό από τα βασισμένα στο 4.4BSD λειτουργικά συστήματα. Δεν είναι open source, παρόλο που άδειες πηγαίου κώδικα είναι διαθέσιμες με σχετικά χαμηλό κόστος. Μοιάζει πολύ με το FreeBSD. Το Mac OS X είναι η πιο πρόσφατη έκδοση του λειτουργικού συστήματος για την γραμμή υπολογιστών Macintosh της Apple Computer Inc. Αντίθετα με το υπόλοιπο λειτουργικό σύστημα, ο πυρήνας είναι open source. Σαν μέρος της ανάπτυξης του Mac OS X, συγκεκριμένοι προγραμματιστές της Apple έχουν commit δικαιώματα στο FreeBSD. Τι διαφορά έχει η άδεια του BSD από την GNU Public άδεια; Το Linux διατίθεται σύμφωνα με τους όρους της GNU General Public License (GPL), η οποία είναι σχεδιασμένη για να αποκλείσει το μη-ελεύθερο λογισμικό. Ειδικότερα, οποιοδήποτε προϊόν βασισμένο σε κάποιο προϊόν διαθέσιμο σύμφωνα με τους όρους της GPL πρέπει κι αυτό να δίνεται σε μορφή πηγαίου κώδικα αν ζητηθεί. Αντίθετα, η BSD άδεια είναι λιγότερο περιοριστική: διανομές μόνο-εκτελέσιμες επιτρέπονται. Αυτό είναι πολύ χρήσιμο σε embedded εφαρμογές. Τί άλλο θά 'πρεπε να ξέρω; Επειδή λιγότερες εφαρμογές είναι διαθέσιμες για BSD από ότι για Linux, οι προγραμματιστές του BSD έγραψαν ένα πακέτο συμβατότητας με το Linux, που επιτρέπει σε προγράμματα για Linux να τρέξουν κάτω από BSD. Το πακέτο περιλαμβάνει τόσο αλλαγές στον πυρήνα, έτσι ώστε να εκτελούνται σωστά οι κλήσεις συστήματος του Linux, όσο και αρχεία συμβατότητας με το Linux όπως η βιβλιοθήκη της C. Δεν υπάρχει πρακτικά διαφορά στην ταχύτητα εκτέλεσης μεταξύ μιας εφαρμογής για Linux που τρέχει σε ένα Linux μηχάνημα και μιας εφαρμογής για Linux που τρέχει σε ένα BSD μηχάνημα ίδιας ταχύτητας. Η λογική του BSD, όλα από μια πηγή, σημαίνει ότι οι αναβαθμίσεις είναι πολύ πιο εύκολες να γίνουν από ότι στο Linux. Το BSD παρέχει επίσης και βιβλιοθήκες συμβατότητας με παλιότερες εκδόσεις, οπότε μπορείτε να τρέχετε εκτελέσιμα που είναι αρκετά χρόνια παλιά χωρίς προβλήματα. Τι προτείνετε να χρησιμοποιήσω, BSD ή Linux; Κι αυτό τι υποτίθεται ότι σημαίνει πρακτικά; Ποιος θά 'πρεπε να χρησιμοποιεί BSD, και ποιος θά 'πρεπε να χρησιμοποιεί Linux; Αυτή είναι μια πολύ δύσκολη ερώτηση να απαντήσει κανείς. Ας δούμε μερικές γενικές οδηγίες: Αν δεν έχει χαλάσει, μην το φτιάξετε: Αν ήδη χρησιμοποιείτε κάποιο open source λειτουργικό σύστημα, και είστε ικανοποιημένοι από αυτό, μάλλον δεν υπάρχει κανένας καλός λόγος να το αλλάξετε. Τα BSD συστήματα, και ειδικά το FreeBSD, μπορούν να έχουν αξιοσημείωτα καλύτερη απόδοση από το Linux. Αλλά αυτό δεν ισχύει πάντα. Σε πολλές περιπτώσεις, δεν υπάρχει διαφορά στην απόδοση ή είναι πολύ μικρή. Σε μερικές περιπτώσεις μπορεί το Linux να αποδίδει καλύτερα από το FreeBSD. Γενικά, τα BSD συστήματα έχουν καλύτερη φήμη όσον αφορά στην αξιοπιστία που έχουν, κυρίως σαν αποτέλεσμα της πιο ώριμης βάσης κώδικα. Η BSD άδεια μπορεί να σας αρέσει περισσότερο από την GPL. Το BSD μπορεί να τρέξει εκτελέσιμα του Linux, ενώ το Linux δεν μπορεί να εκτελέσει προγράμματα για BSD. Σαν αποτέλεσμα, περισσότερο λογισμικό είναι διαθέσιμο για BSD από ότι για Linux. Ποιος παρέχει υποστήριξη, service και εκπαίδευση για το BSD; Η BSDi πάντα παρείχε υποστήριξη για το BSD/OS και πρόσφατα ανακοίνωσε ότι παρέχει συμβόλαια υποστήριξης και για το FreeBSD. Επίσης, κάθε ένα από τα BSD έχει μια λίστα με consultants που μπορείτε να προσλάβετε: για το FreeBSD, το NetBSD, και το OpenBSD.