====== Ρύθμιση Δικτύου ====== {{:en:networking.jpg|:en:networking.jpg}} ===== /etc/hosts ===== Έστω το όνομα του μηχανήματος είναι **myserver** και το όνομα του domain **mydomain.local** Σε μια τυπικά σωστή ρύθμιση το αρχείο /etc/hosts θα πρέπει να περιέχει τα παρακάτω 127.0.0.1 localhost.localdomain localhost 127.0.0.1 myserver.mydomain.local myserver 127.0.1.1 myserver.mydomain.local myserver .. ===== Λαμβάνωντας ips από dhcp ===== Για να πάρουμε ips από έναν dhcp server εκτελούμε aptitude install dhclient dhclient Εάν θέλουμε να απορίψουμε ips που δίνονται από συγκεκριμένο server π.χ. από τον 192.168.1.1 και τον 10.2.12.1 αλλάζουμε το αρχείο /etc/dhclient.conf και εισάγουμε τις παρακάτω γραμμές reject 192.168.1.1; reject 10.2.12.1; Για να πέρνουμε τις ips από dhcp κατά την εκκίνηση αλλάζουμε το αρχείο /etc/network/interfaces βάζοντας την γραμμή iface eth0 inet dhcp αντί για iface eth0 inet static address 10.26.145.16 netmask 255.0.0.0 gateway 192.168.1.254 ===== ifconfig - ορισμός ip διευθύνσεων προσωρινά ===== Μπορείτε να ορίσετε προσωρινές ip διευθύνσεις με την εντολή ifconfig. Αρχικά δοκιμάστε ifconfig Θα φανούν όλες οι διευθύνσεις στις ενεργοποιημένες διασυνδέσεις του υπολογιστή σας Έστω ότι θέλετε να ορίσετε την διεύθυνση 192.168.1.10 στην διασύνδεση eth0 του υπολογιστή σας. Δοκιμάστε ifconfig eth0 192.168.1.10 Εάν θέλετε να ορίσετε και 2η ip διευθυνση στην διασύνδεση eth0 π.χ. 10.2.12.8 ως eth0:0 χρησιμοποιήστε ifconfig eth0:0 10.2.12.8 Με κάθε εκτέλεση της ifconfig γράφετε επίσης και η αντίστοιχη δρομολόγηση προς τον προκαθορίσμένο δρομολογητή. Δείτε [[#route_s_elgs | route ορισμός δρομολόγησης]] Για να ενεργοποιήσετε μια διασύνδεση, π.χ. eth0 ifconfig eth0 up Για να την απενεργοποιήσετε ifconfig eth0 down ===== route ορισμός δρομολόγησης ===== Για να δείτε τον εκάτοτε πίνακα δρομολόγησης εκτελέστε route -n (η παράμετρος -n δίνει ip διευθύνσεις και δεν επιλύει στα ονόματά τους, και έτσι εκτελείτε πιο γρήγορα) Εναλλακτικά μια και η παραπάνω εντολή είναι παρωχημένη μπορούμε να εκτελέσουμε ip r Για να προσθέσετε έναν προεπιλεγμένο δρομολογητή για όλες τις ips που δεν έχουν συγκεκριμένη δρομολόγηση route add default gw 192.168.1.254 Για να ορίσετε δρομολόγηση για μια περιοχή ips π.χ. όλες τις 10.x.x.x route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.26.145.1 Για να ενεργοποιήσετε αυτές τις δρομολογήσεις κατά την εκκίνηση προσθέστε στο αρχείο /etc/init.d/networking iface eth0 inet static address 10.26.145.16 netmask 255.0.0.0 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.26.145.1 down route del -net 10.0.0.0 netmask 255.0.0.0 gw 10.26.145.1 gateway 192.168.1.254 Μετά δοκιμάστε /etc/init.d/networking stop /etc/init.d/networking start και τσέκαρετε με τις εντολές ifconfig και route -n εάν οι αλλαγές εφαρμόστηκαν. ===== Ορισμός μόνιμης δρομολόγησης και ip διευθύνσεων ===== Αφού κάνετε δοκιμές με την ifconfig γράψτε τις μόνιμες αλλαγές στο αρχείο /etc/network/interfaces για να φορτώνονται κατά την εκκίνηση. Παρακάτω δίνεται ένα τυπικό αρχείο. # The loopback network interface auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 # This is a list of hotpluggable network interfaces. # They will be activated automatically by the hotplug subsystem. mapping eth0 script grep map eth0 # The primary network interface auto eth0:0 eth0 iface eth0 inet static address 10.26.145.16 netmask 255.0.0.0 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.26.145.1 down route del -net 10.0.0.0 netmask 255.0.0.0 gw 10.26.145.1 gateway 192.168.1.254 iface eth0:0 inet static address 192.168.1.68 netmask 255.255.255.0 Για άλλα παραδείγματα δείτε /usr/share/doc/ifupdown/examples/network-interfaces.gz ===== Ορισμός μόνιμου ονόματος διεπαφής δικτύου ===== ==== Παλιός τρόπος ==== Τα ονόματα των διεπαφών ορίζονται προκαθορισμένα από το σύστημα Για παράδειγμα * οι κάρτες ethernet έχουν ονόματα όπως eth0, eth1, eth2 κτλ * οι ασύρματες κάρτες που χρησιμοποιούν ndiswrapper υποσύστημα για drivers έχουν ονόματα όπως wlan0.. * οι ασύρματες κάρτες με atheros chipset έχουν ονόματα ath0.. Υπάρχει περίπτωση όμως αλλάζωντας μητρική ή απλά αλλάζωντας kernel να αλλάξουν αυτά τα ονόματα, με αποτέλεσμα το δικτυό μας να μην λειτουργεί προσωρινά. Μπορούμε να κάνουμε ρύθμιση βάση της MAC Address έτσι ώστε να κρατάνε σταθερά ονόματα. Την MAC address την βλέπουμε εκτελώντας ifconfig -a Στο αρχείο /etc/udev/rules.d/70-persistent-net.rules εισάγουμε την MAC address και το όνομα που θέλουμε να έχει η διεπαφή δικτύου. Π.χ. # PCI device 0x10ec:0x8167 (r8169) SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:8d:c0:49:6a", NAME="eth3" # PCI device 0x10ec:0x8139 (8139too) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:80:48:26:98:7d", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" Προσοχή να μην έχουμε στο παραπάνω αρχείο, διπλοεγγραφές για το ίδιο interface. Αν έχουμε καλό είναι να βάλουμε αυτές που δεν θέλουμε σε σχόλια Επανεκκινούμε τον υπολογιστή για να εφαρμοστούν οι αλλαγές. (Φροντίζουμε να έχουμε κάνει αντίστοιχες αλλαγές στα ονόματα των διεπαφών και στο αρχείο /etc/network/interfaces) ==== Νέος τρόπος ==== Βλ. http://forums.debian.net/viewtopic.php?f=19&t=122795 ===== nslookup - Επίλυση ονομάτων περιοχών===== Τροποποίησε το αρχείο /etc/resolv.conf Εάν οι διευθύνσεις σου έχουν ένα επίθεμα .mydomain π.χ. myrouter.mydomain τότε για να μπορέσεις να χρησιμοποιήσεις το όνομα μόνο π.χ. myrouter πρόσθεσε search mydomain Πρόσθεσε επίσης την λίστα των dns servers με την σειρά που θέλεις να τους γίνεται ερώτηση nameserver 10.26.126.15 nameserver 192.168.1.254 Μετά δοκίμασε με την εντολή aptitude install dnsutils nslookup ===== ping - έλεγχος επικοινωνίας ===== Από όλες τις εντολές η ping είναι η πιο συχνά χρησιμοποιούμενη κατά το στήσιμο ή την αντιμετώπιση προβλημάτων δικτύων. Για να δοκιμάσεις εάν μπορείς να επικοινωνήσεις με έναν υπολογιστή κάνε ping στην ip διεύθυνσή του ή την ονομαστική (dns) διεύθυνση. ping 192.168.1.10 ping www.google.com Για να την σταματήσεις όπως θα έκανες σε οποιαδήποτε άλλη διεργασία, πάτα CTRL-C ===== Διαμοιρασμός σύνδεσης Internet ===== Οι παρακάτω οδηγίες είναι για ένα pc που είναι συνδεδεμένο σε έναν διανομέα στον οποίο είνα συνδεδεμένα επίσης το τοπικό δίκτυο και ο δρομολογητής για το Internet. Ο δρομολογητής επιτρέπει μόνο σε αυτό την χρήση του Internet. Εμείς θα προωθήσουμε όλα τα εισερχόμενα πακέτα από το τοπικό δίκτυο από την διασύνδεση eth0 στην eth0 και ο δρομολογητής θα τα δει σαν να ήταν από το pc που του επιτρέπεται η σύνδεση στο Internet και θα τα προωθήσει με την σειρά του προς το Internet. Για άλλες περιπτώσεις π.χ. σύνδεση modem ως ppp0 αντικαταστήστε το 2ο eth0 (έξοδος) με ppp0. Για Debian κάντε τα παρακάτω Ορίστε DNS servers στο /etc/resolv.conf Το βασικό πρόβλημα είναι η προώθηση IP (IP forwarding) Για να δοκιμάσουμε τις ρυθμίσεις δημιουργούμε ένα καινούργιο εκτελέσιμο αρχείο /usr/bin/myrouter με τις παρακάτω ρυθμίσεις τείχους προστασίας (firewall). Για να το δημιουργήσουμε σαν υπηρεσία εκκίνησης δες οδηγίες στο [[#eg_psp_ps|Δημιουργία Νέας Προσωπικής Υπηρεσίας]]. #!/bin/sh # This is first to clear any already existing rules /sbin/iptables -P INPUT ACCEPT /sbin/iptables -F INPUT /sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -F OUTPUT /sbin/iptables -P FORWARD ACCEPT /sbin/iptables -F FORWARD # load iptables modules /sbin/modprobe iptable_nat /sbin/modprobe ip_conntrack # enable ip forwarding /bin/echo 1 > /proc/sys/net/ipv4/ip_forward # flush tables $IPTABLES -F $IPTABLES -X # enable masquerading to allow LAN internet access $IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE # forward internal LAN traffic from eth0 to eth0 internet interface $IPTABLES -A FORWARD -i eth0 -o eth0 -m state --state NEW,ESTABLISHED -j ACCEPT # block out internet intrusion on eth0 #$IPTABLES -A INPUT -i eth0 -m state --state NEW,INVALID -j DROP #$IPTABLES -A FORWARD -i eth0 -m state --state NEW,INVALID -j DROP ===== Link Aggregation ===== Έστω **eth2** η σύνδεσή μας με έναν **router** για internet και **eth0, eth1** που συνδέονται σε **τοπικό δίκτυο με ένα switch** με δυνατότητα LAG. Εάν το switch υποστηρίζει το **πρωτόκολλο LAG (active)** ορίζουμε bond στα interfaces **eth0** και **eth1** τροποποιώντας το αρχείο **/etc/network/interfaces** ως εξής. auto bond0 iface bond0 inet static address 192.168.1.10 netmask 255.255.255.0 bond-mode 4 bond-slaves eth0 eth1 bond-miimon 100 bond-lacp-rate 1 bond-downdelay 200 bond-updelay 200 bond-xmit-hash-policy layer2+3 #bond-ad_select bandwidth auto eth0 iface eth0 inet manual bond-master bond0 auto eth1 iface eth1 inet manual bond-master bond0 Εάν το switch υποστηρίζει μόνο **trunks (passive)** αλλάζουμε το **bond-mode 4** σε **bond-mode 2** και βάζουμε σε σχόλια το **bond-lacp-rate 1** (βλ.https://www.kernel.org/doc/Documentation/networking/bonding.txt στο **5.Switch Configuration**) Εάν δεν ρυθμίζεται το bond interface στην εκκίνηση προσθέτουμε στο **rc.local** echo "ifdown bond0; ifup bond0" |at now +1 minute Ελέγχουμε με cat /proc/net/bonding/bond0 Δοκιμές ταχύτητας Για δοκιμή **scp**. Θα πρέπει και ο server και οι clients να έχουν ssd δίσκο Για δοκιμή **iperf** - Στον server iperf -s και σε άλλο παράθυρο ελέγχουμε με iftop -P -b -i bond0 - Σε κάθε client ξεχωριστά εκκινούμε iperf -c [serverip] -P 30 -W 32k -t 10 και βλέπουμε από τον server την ταχύτητα που έπιασε - Ξαναδοκιμάζουμε ταυτόχρονα. - Εάν δούμε με την **iftop** το άθροισμα τότε έχουμε κάνει **link aggregation** με επιτυχία. Άλλη δοκιμή μπορεί να γίνει από 2 clients με yes | pv | ssh [serverip] "cat > /dev/null" ===== Παρακολούθηση δικτύου ===== Βλ. [[el:linux:debian:desktop:monitoring?&#δίκτυο|Παρακολούθηση δικτύου]] ====== Πηγές ====== * Παρωχημένες εντολές και αντικαταστάτες * http://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/ * Ορισμός μόνιμου ονόματος διεπαφής δικτύου * http://www.science.uva.nl/research/air/wiki/LogicalInterfaceNames * http://www.nabble.com/-Bug-49710--NEW:-Install-writes-an--etc-udev-rules.d-70-persistent-net.rules-with-two-entries-for-eth0-(one-wrong)-td22958131.html * http://reactivated.net/writing_udev_rules.html * Μετονομασία διεπαφής * http://www.science.uva.nl/research/air/wiki/LogicalInterfaceNames * dhclient * Τρόποι απενεργοποίησης : http://www.cyberciti.biz/faq/dhclient-etcresolvconf-hooks/ * link aggregation * https://www.kernel.org/doc/Documentation/networking/bonding.txt * http://www.cyberciti.biz/tips/debian-ubuntu-teaming-aggregating-multiple-network-connections.html (βλ. και σχόλιο Armin September 5, 2011) * on boot : https://ubuntuforums.org/showthread.php?t=1451369 * full setup : https://delightlylinux.wordpress.com/2014/07/12/speed-up-your-home-network-with-link-aggregation-in-linux-mint-17-and-xubuntu-14-04/