Ubuntu server με δύο κάρτες δικτύου

Ξεκίνησε από gvasilopo, 20 Μαρ 2013, 09:57:35 ΠΜ

« προηγούμενο - επόμενο »

gvasilopo

Σε εργαστήριο με 2 gigabit switch, server με 2 gigabit κάρτες δικτύου και Ubuntu 12.04 LTSP, τότε μπορούμε να συνδέσουμε τη μια κάρτα με το ένα switch και την άλλη κάρτα με το άλλο switch, για να βελτιωθεί η ταχύτητα επικοινωνίας client - server ;

Στην περίπτωση αυτή, στο αρχείο ρυθμίσεων dnsmasq πρέπει να προσθέσουμε τις παρακάτω γραμμές ;
(υποθέτουμε ότι η μια κάρτα είναι η 10.x.y.10  (όπου x, y είναι διαφορετικά για κάθε σχολείο) και η άλλη είναι η 192.168.67.1)

dhcp-range=10.x.y.10,proxy
dhcp-range=192.168.67.1,proxy

alkisg

#1
Όπως τα λες. Ξεκαθαρίζω μερικές λεπτομέρειες με παράδειγμα:

Σε ένα 8-port switch, ας το πούμε "Α", βάζουμε:

  • τον router
  • τη μία κάρτα του server, ρυθμισμένη με στατική IP=10.x.y.10,
  • ως 6 clients
Σε ένα άλλο 8-port switch, ας το πούμε "Β", βάζουμε:

  • την άλλη κάρτα του server, ρυθμισμένη με στατική IP=192.168.67.1,
  • ως 7 clients
Πιθανώς μετά τις στατικές IP να χρειαστεί να τρέξουμε χειρωνακτικά `sudo ltsp-config dnsmasq --overwrite`.
ΔΕΝ βραχυκυκλώνουμε τα switch μεταξύ τους.
Εάν στο switch "B" είναι μόνο thin clients, όλα καλά.
Εάν είναι (και) fat cliets, ο LTSP server χρειάζεται να κάνει NAT (connection sharing, να γράψω μια σελίδα wiki γι' αυτό), αλλιώς οι clients δεν θα βλέπουν Internet. Και επίσης εάν είναι dual boot με Windows, όταν μπουτάρουν σε Windows, θα χρειάζεται ο LTSP server να είναι ανοιχτός για να τους δώσει Internet.



edit: σημειώσεις μέχρι να γράψω τη wiki page:
sysctl net.ipv4.ip_forward=1 (ή echo 1 > /proc/sys/net/ipv4/ip_forward)
iptables -s 192.168.67.0/24 -t nat -A POSTROUTING -j MASQUERADE (ή και χωρίς την παράμετρο -s)

Το αντίθετο, διακοπή διαμοιρασμού:
sysctl net.ipv4.ip_forward=0 (ή echo 0 > /proc/sys/net/ipv4/ip_forward)
iptables -t nat -D POSTROUTING -s 192.168.67.0/24 -j MASQUERADE

Αυτές οι εντολές να εκτελούνται από το /etc/network/if-up.d/sch-scripts όταν χρειάζεται, σε επόμενη έκδοση των sch-scripts.

Και να μπει σχετική επιλογή στον διάλογο στατικής IP ώστε να γίνονται αυτόματα.

dio3

Παράθεση από: alkisg στις 20 Μαρ 2013, 11:45:43 ΠΜ
Εάν είναι (και) fat cliets, ο LTSP server χρειάζεται να κάνει NAT (connection sharing, να γράψω μια σελίδα wiki γι' αυτό), αλλιώς οι clients δεν θα βλέπουν Internet.

Αυτό ισχύει. Απλά να σημειώσω τι έγινε στη δική μου περίπτωση
eth0 LTSP Private Network για επικοινωνία με τους clients
eth1 Δίκτυο για σύνδεση στο internet κ.α.


$ sudo iptables-save > iptables_rules.bak
$ cat iptables_rules.bak 
# Generated by iptables-save v1.4.12 on Fri Mar 22 12:19:47 2013
*filter
:INPUT ACCEPT [50095998:14202390107]
:FORWARD ACCEPT [191:7640]
:OUTPUT ACCEPT [31944869:64489922747]
-A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j ACCEPT
COMMIT
# Completed on Fri Mar 22 12:19:47 2013
# Generated by iptables-save v1.4.12 on Fri Mar 22 12:19:47 2013
*nat
:PREROUTING ACCEPT [359162:36025275]
:INPUT ACCEPT [227428:23789195]
:OUTPUT ACCEPT [75411:7357751]
:POSTROUTING ACCEPT [51942:5166674]
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Fri Mar 22 12:19:47 2013


το αρχείο iptables_rules.bak μπορεί να γίνει load
iptables-restore < iptables_rules.bak

gvasilopo

Προσοχή !

ΔΕΝ πρέπει να προσθέσουμε τη γραμμή    dhcp-range=192.168.67.1,proxy
στο dnsmasq.conf

Απλά δηλώνουμε στη δεύτερη κάρτα δικτύου τη στατική διεύθυνση 192.168.67.1 με μάσκα 255.255.255.0 και πύλη 0.0.0.0

Με την προσθήκη της δεύτερης κάρτας και αυτές τις ρυθμίσεις πέτυχα αύξηση του ρυθμού στους clients από 10Mbps σε 50Mbps!!!!

a-theodore

Έχω έναν server Ubuntu 12.04 LTSP με δύο κάρτες gigabit στη μητρική. Το εργαστήριο (No 2) έχει 8 thin clients με gigabit switch το οποίο συνδέεται με ένα καλώδιο ethernet σε ένα άλλο gigabit switch που βρίσκεται σε μια άλλη αίθουσα στο 1ο εργαστήριο Πληροφορικής.
Θα ήθελα κάποιος να με καθοδηγήσει ώστε να κάνω bonding τις δύο κάρτες δικτύου του Ubuntu server μιας και από τα παραπάνω λεγόμενα έχω λίγο μπερδευτεί στο πως μπορεί να γίνει αυτό.
Να σημειώσω ότι στο server έχω δώσει την static IP 10.x.y.20.

alkisg

Λόγω του συνεδρίου, συνοπτική απάντηση, και θα ακολουθήσει αναλυτικότερη αργότερα.
Δίνεις:
Κώδικας: shell
sudo apt-get install ifenslave-2.6
sudo cp /etc/network/interfaces /etc/network/interfaces.backup
sudo gedit /etc/network/interfaces


για να εγκαταστήσεις την απαραίτητη βιβλιοθήκη και να ανοίξεις το σχετικό αρχείο, κρατώντας και backup.

Μέσα στο αρχείο βάζεις κάτι τέτοιο:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
    bond-master bond0

auto eth1
iface eth1 inet manual
    bond-master bond0

auto bond0
iface bond0 inet static
    address 10.160.67.10
    netmask 255.255.255.0
    gateway 10.160.67.1
    metric 500
#    bond-mode balance-rr
    bond-mode balance-tlb
    bond-miimon 100
    bond-slaves none
    dns-nameservers 127.0.0.1 194.63.238.4 8.8.8.8


Και στη συνέχεια κάνεις επανεκκίνηση.
Ο network manager δεν θα διαχειρίζεται πια αυτή τη σύνδεση, οπότε δεν θα μπορείς να δεις τις ιδιότητες του δικτύου από το εικονίδιο πάνω δεξιά στον πίνακα εφαρμογών.
Στην 14.04 έκδοση του Ubuntu το bonding θα γίνεται πιο εύκολα, μέσω από τον network manager.

a-theodore

Όλα δούλεψαν άψογα. Άλκη σ' ευχαριστώ πολύ.

richard

#7
Θα ήθελα να σας περιγράφω μία εγκατάσταση σε ένα σχολείο για να δούμε εάν κάτι είναι λάθος.

Ο σκοπός: να έχει ένα χωριστός subnet για το ltsp στο εργαστήρι και το άλλο subnet (με του router) για τα γραφεία στο σχολείο.

Το εργαστήρι έχει 12 clients (10 thin και 2 fat) και έναν εξυπηρετητή για την δασκάλα. Στο rack είναι ένα Cisco router με 4 θέσεις για ethernet, ένα TP-Link switch με 16 θήρες του 100 και μία του 1000 bit, ένα 3-Com switch με 16 θήρες με 100 bit και ένα patch panel με 32 θέσεις. Στο τοίχο είναι 13 έξοδα με δύο θέσεις rj45 για το δίκτυο. Κάθε έξοδο του client έχει μία θέση που πάει στο TP-Link για το ltsp και μία θέση που πάει στο 3-Com για standalone διαδίκτυο. Κάθε client έχει μία κάρτα δικτύου του 100 bit που είναι με καλώδιο στο ltsp. Η άλλη θέση μένει ανοικτή. Το έξοδο στο server έχει μία θέση με καλώδιο cat 6 που πάει στην 1000 bit θήρα του TP-Link και μία θέση που πάει στο Cisco για το Διαδίκτυο.

Στην αρχή που πρώτο είχα τον εξυπηρετητή στο σπίτι μου ο η/υ είχε μόνο την ενσωματωμένη 1000 bit κάρτα δικτύου έβαλα την 12.04.3 Ubuntu σας και δούλευε καλά με ένα client στο ίδιο subnet με το router. Όταν τον έφερα στο εργαστήρι έβαλα μία 100 bit κάρτα δικτύου σε pci θέση στον εξυπηρετητή (eth1,) με ένα καλώδιο cat 5 από την 100 bit κάρτα στην θέση που πάει στο Cisco, και ένα καλώδιο cat 6 από την 1000 bit κάρτα (eth0) στην θέση που πάει στην 1000 bit θέση στο TP-Link.

Η πρώτη ένδειξη ότι κάτι ήταν λάθος: Στο wiki λέει "για να ρυθμίσετε στατική IP στον εξυπηρετητή, από το πεδίο Μέθοδος επιλέγετε Χειροκίνητα, όπως φαίνεται και στην εικόνα δεξιά σας (στο παράδειγμα το υποδίκτυο του σχολείου είναι το 10.50.40.0). Η εφαρμογή Διαχείριση ΣΕΠΕΗΥ(sch-scripts) προτείνει να χρησιμοποιήσετε την IP 10.x.y.10.  ανοίγω το sch-scripts applet για να βάζω στατικό ip στο eth0." Αλλά όταν ανοίγω την εφαρμογή η επιλογή "χειροκίνητα" ήταν απενεργοποιημένη. Δηλαδή η οδηγία αυτή ισχύει μόνο στην περίπτωση που έχει ο εξυπηρετητής μία κάρτα δικτύου;

Πήγα στο network-manager και κανόνισα από εκεί να έχει η 1000 bit κάρτα δικτύου (eth0) σταθερό  192.168.67.1, έβαλα στο dnsmasq να μη κάνει dhcp proxy, αλλά να δώσει dhcp στο eth0. Τότε ξεκίνησε και τα fat και τα thin clients και μπόρεσα να κάνω login.

Η δεύτερη ένδειξη ότι κάτι ήταν λάθος: ανοίγω την επόπτης και τα clients δεν φαινόταν σε thumbnail αλλά σε εικονίδιο. Παρ'όλα αυτό, όμως, δούλευαν όλες τις επιλογές επάνω τους.

Η τρίτη ένδειξη ότι κάτι ήταν λάθος: ενώ στο τερματικό στο fat η εντολή netstat -nr ένδοξε σωστά και gateway 192.168.67.1 και destination 192.168.67.0 και η εντολή cat /etc/resolv.config ένδοξε σωστά nameserver 192.168..67.1 δεν έγινε ping στο Διαδίκτυο.

Η λύση που πρότεινε ο Άλκης στο irc έδωσε ping στο Διαδίκτυο: (1) στο αρχείο /etc/sysctl.conf επιτρέπω η γραμμή net.ipv4.ip_forward = 1 και  (2) έβαλα σε τερματικό τις εντολές (σαν root)

iptables -s 192.168.67.0/24 -t nat -A POSTROUTING -j MASQUERADE

iptables-save > /usr/local/sbin/iptables-share-internet

και έβαλα μία επιπλέω γραμμή στο /etc/rc.local αμέσως πριν από την γραμμή exit 0:

iptables-restore < /usr/local/sbin/iptables-share-internet

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

apapakL

#8
Κάτι που εφαρμόζω σε περιπτώσεις με δυο κάρτες δικτύου για να έχουν internet και οι fat clients (NAT):

Από το network manager δίνω στατική δ/νση στη κάρτα που έχει επικοινωνία με το router και το λοιπό υποδίκτυο του σχολείου. Προφανώς, η ip θα είναι στο υποδίκτυο του DHCP του router. Εστω, η eth0. Για παράδειγμα

10.χ.ψ.10
255.255.255.0
10.χ.ψ.1

και στα dns 127.0.0.1 194.63.238.4 8.8.8.8

Από το network manager δίνω στατική δ/νση στη κάρτα που είναι στο switch μόνο για το ltsp. Έστω η eth1. Για παράδειγμα

192.168.67.1
255.255.255.0
192.168.67.1

και στα dns τίποτα

Στη συνέχεια σε τερματικό ανοίγω το αρχείο /etc/sysctl.conf
sudo gedit /etc/sysctl.conf


και αλλάζω (αποσχολιάζω) τη γραμμή
#net.ipv4.ip_forward=1

σε
net.ipv4.ip_forward=1


Αποθηκεύω και τρέχω την εντολή

sudo sysctl -w net.ipv4.ip_forward=1


για να εφαρμοστεί η αλλαγή άμεσα χωρίς reboot.

Στη συνέχεια ανοίγω το αρχείο /etc/rc.local

sudo gedit /etc/rc.local


και πριν το

exit 0


εισάγω τις γραμμές

Κώδικας: bash
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE


και αποθηκεύω για να φορτώνονται οι συγκεκριμένες ρυθμίσεις iptables κατά την εκκίνηση του συστήματος.  Ωστόσο για να γίνουν οι αλλαγές άμεσα διαθέσιμες χωρίς reboot εκτελούμε

Κώδικας: bash
sudo iptables -P FORWARD ACCEPT

sudo iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE


Στη συνέχεια, αν θέλω να έχω ltsp clients τόσο στο υποδίκτυο της eth0 όσο και στο υποδίκτυο της eth1, προσέχω στο αρχείο ρυθμίσεων dnsmasq να έχω τις εξής γραμμές

Κώδικας: bash
dhcp-range=10.χ.ψ.0,proxy
dhcp-range=192.168.67.20,192.168.67.250,8h


Αλλιώς αν θέλω ltsp μόνο στην (eth1) η γραμμή

Κώδικας: bash
dhcp-range=10.χ.ψ.0,proxy


μπορεί να γίνει σχόλιο.

Μπορούμε να επεξεργαστούμε το αρχείο ρυθμίσεων dnsmasq μέσα από τα sch-scripts (Εξυπηρετητής - Αρχεία ρυθμίσεων...)

richard

Επειδή δεν δουλεύω στα σχολεία, απλώς κάνω που και που επίσκεψη να τους βοηθήσω, συχνά βρίσκω μία κατάσταση στο Cisco router που έχει ένα dhcp range που είναι και άγνωστο και δεν έχω την πρόσβαση να το αλλάξω.

Και εγώ προτιμώ σταθερά ip αλλά για να μη υπάρξει σύγκρουση αφήνω το δυναμικό στο subnet με το router. Επίσης, έβαλα τις εντολές για nat για να είναι και έγκαιρα αφού κάνει επανεκκίνηση ο η/υ.

Richard

apapakL

Παράθεση από: richard... στο Cisco router που έχει ένα dhcp range που είναι και άγνωστο και δεν έχω την πρόσβαση να το αλλάξω...

Συνήθως στα σχολεία οι routers είναι ρυθμισμένοι έτσι ώστε να δίνουν δ/νσεις τύπου 10.χ.ψ.ζ με τα χ και ψ να αλλάζουν ανάλογα με το σχολείο και με DHCP range απο 10.χ.ψ.128 μέχρι 10.χ.ψ.254, με gateway την 10.χ.ψ.1 (η ip του router). Για dns δίνεται η 10.χ.ψ.10 που την βάζουμε στατική στο μηχάνημα που παρέχει local dns (μερικές φορές έχεις διαθέσιμη και την 10.χ.ψ.11) ενώ για εξωτερικό dns δίνονται οι dns servers του Πανελλήνιου Σχολικού Δικτύου.

richard

Ευχαριστώ, Ανδρέα, για την χρήσιμα πληροφορία για το dhcp range που διαλέγει η πληνέτ. Χρόνια πολλά για αύριο.

Richard