Μετα απο τριβη ενος μηνα με το ubuntu ξεκινησα να ετοιμασω ενα σχετικα δυσκολο εγχειρημα για αρχαριο οπως εγω. Ηθελα να κανω Internet Connection Sharing μεσα απο ενα Ad-Hoc ασυρματο δικτυο. Αρχικα, για καποιες μερες διαβασα τους ακολουθους οδηγους απο το ubuntu.com (Οδηγος #1, Οδηγος #2, Οδηγος #3) και αφου σχηματισα μια καλη εικονα του τι γινεται, στην συνεχεια ξεκινησα τους πειραματισμους. Μετα απο καποιες μερες τελικα το συστημα δουλεψε και εφοσον δεν υπηρχε κατι σχετικο στο forum, σκεφτηκα να χρησιμοποιησω τις σημειωσεις μου γραφοντας τον ακολουθο οδηγο. Για τον οδηγο απαιτουνται καποιες βασικες γνωσεις δικτυωσης υπολογιστων.
Μεσα απο τους πειραματισμους διαπιστωσα οτι οι static ΙΡs δεν ηταν ιδιαιτερα βολικες, ολες οι συνδεσεις εγιναν μεσα απο DHCP.
Φάση 1η
Ξεκινω με τις ρυθμισεις του κεντρικου υπολογιστη ο οποιος ειναι συνδεδεμενος με τον adsl router.
Αρχικα αλλαζουμε το αρχειο με τα network interfaces...
- Κώδικας: Επιλογή όλων
sudo gedit /etc/network/interfaces
Και αντιγραφουμε επακριβως την παρακατω δομη. Σε αυτα επιλεγουμε οτι στην eth1 που ειναι η wireless καρτα μας (θα μπορουσε να λεγονταν και wlan0) να ετοιμασει ad-hoc δικτυο, στο καναλι τεσσερα, με ονομα 'my_lan' και κωδικο 1234567890. Ονομα δικτυου και κωδικο δινουμε κατι απολυτως της επιλογης μας. Τελος βαζω και την gateway, που ειναι η IP του router (η gateway ισως να ειναι περιττη, παντως δεν δημιουργει καποιο προβλημα).
- Κώδικας: Επιλογή όλων
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
wireless-mode ad-hoc
wireless-channel 4
wireless-essid 'my_wlan'
wireless-key 1234567890
gateway 192.168.2.1
Στην συνεχεια πρεπει να ρυθμισουμε τα iptables δινοντας τους κανονες που θα επιτρεψουν στα δεδoμενα να περασουν το firewall του Ubuntu.
Κανονας 1 : επιτρεπει την διελευση των forwarded packets (αρχικοποιηση)
- Κώδικας: Επιλογή όλων
sudo iptables -A FORWARD -i eth0 -o eth1 -s 192.168.2.0/24 -m state --state NEW -j ACCEPT
Να δωθει προσοχη στο παραπανω ωστε η IP που θα δωσουμε να σχετιζεται με την IP του router μας. Εδω η τιμη ειναι 192.168.2.0/24, γιατι ο router εχει 192.168.2.1... Αν ηταν 192.168.0.1 θα διναμε 192.168.0.0/24
Κανονας 2 : επιτρεπει την προωθηση των established connection packets (και αυτων που σχετιζονται με την αρχικοποιηση).
- Κώδικας: Επιλογή όλων
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Κανονας 3 : δημιουργια του ΝΑΤ
- Κώδικας: Επιλογή όλων
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Τελος, πρεπει να γινει ενοργοποιηση του IP Forwarding για την ρυθμιση του gateway μεταξυ των 2 interfaces (eth0 και eth1)
- Κώδικας: Επιλογή όλων
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Φάση 2η
Μετα ρυθμιζουμε τις συσκευες που θελουμε να συνδεσουμε και που δεν εχουν συνδεση ιντερνετ και υποθετουμε οτι τρεχουν επισης Ubuntu. Γενικα ο NetworkManager δεν ειναι πολυ συνεργασιμος, οποτε αν θελουμε τον σταματαμε, γιατι μας ειναι αχρηστος
- Κώδικας: Επιλογή όλων
sudo /etc/dbus-1/event.d/25NetworkManager stop
Ανοιγουμε το αρχειο με τα network interfaces...
- Κώδικας: Επιλογή όλων
sudo gedit /etc/network/interfaces
Και αντιγραφουμε τα παρακατω. (Η δηλωση της gateway ισως παλι να ειναι περιττη, παντως δεν δημιουργει καποιο προβλημα).
- Κώδικας: Επιλογή όλων
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet dhcp
wireless-mode ad-hoc
wireless-channel 4
wireless-essid 'my_wlan'
wireless-key 1234567890
gateway 192.168.2.1
Σε περιπτωση που δεν τρεχουν Ubuntu και τρεχουν κατι αλλο (π.χ. MACOSX το iPhone) το μονο που χρειαστηκε ηταν να δηλωσω τον DNS Server του ISP. Τα υπολοιπα τα βρηκε μονο του.
Φάση 3η
Επιστρεφουμε στον βασικο υπολογιστη που ειναι συνδεδεμενος με το ιντερνετ για να εγκαταστησουμε το dnsmasq απο το synaptic, το οποιο ειναι ενας DNS forwarder.
Για να τον ρυθμισουμε πρεπει να σταματησουμε την λειτουργια του.
- Κώδικας: Επιλογή όλων
sudo /etc/init.d/dnsmasq stop
Ανοιγουμε το configuration αρχειο
- Κώδικας: Επιλογή όλων
sudo gedit /etc/dnsmasq.conf
Και δινουμε το interace των συσκευων που συνδεονται στον κεντρικο υπολογιστη και θα μοιραστουν την ιντερνετ συνδεση του. Επισης πρεπει να δωσουμε και το ευρος των IP διευθυνσεων που επιθυμουμε να λαβουν. Για παραδειγμα αν θελουμε να δωσουμε ΙΡ μεσα στο 169.254.100.ΧΧΧ, μπορουμε να δωσουμε το ακολουθο ευρος τιμων...
- Κώδικας: Επιλογή όλων
interface=eth1
dhcp-range=169.254.100.50,169.254.100.200
Η παραπανω ρυθμιση του dnsmasq εχει πολλες δυνατοτητες, οπως π.χ. να δηλωθει η MAC address της καρτας, αλλα ξεφευγει απο τις απαιτησεις του παροντος tutorial.
Αφου τελειωσουμε ανοιγουμε παλι το dnsmasq
- Κώδικας: Επιλογή όλων
sudo /etc/init.d/dnsmasq start
Τελευταιο σταδιο της διαδικασιας ειναι η δηλωση των DNS Servers του ISP μας. Ανοιγουμε το configuration αρχειο του dhclient
- Κώδικας: Επιλογή όλων
sudo gedit /etc/dhcp3/dhclient.conf
Kαι ψαχνουμε για το "prepend domain-name-servers"... Για οσους εχουν ΟΤΕΝΕΤ ή conn-x πρεπει να βαλουν
- Κώδικας: Επιλογή όλων
prepend domain-name-servers 195.170.0.1,195.170.2.2;
Οι υπολοιποι τους DNS Servers των providers τους.
Για να φορτωθουν οι νεες ρυθμισεις τρεχουμε και στους 2 υπολογιστες του ad-hoc δικτυου
- Κώδικας: Επιλογή όλων
sudo /etc/init.d/networking restart
Αυτο ηταν! Τελος! Λογικα, ολα πρεπει να δουλευουν...
Αν ολα πανε κατ'ευχη και λειτουργουν οπως επιθυμουμε, θα πρεπει να σωσουμε τους κανονες των iptables, γιατι μετα απο καθε reboot θα χανονται.
Για να σωζουμε τους κανονες των iptables εκτελουμε
- Κώδικας: Επιλογή όλων
sudo sh -c "iptables-save > /etc/iptables.rules"
Τελος, πηγαινουμε στο αρχειο με τα network interfaces του βασικου υπολογιστη και αλλαζουμε το κομματι που αφορα το eth0...
- Κώδικας: Επιλογή όλων
sudo gedit /etc/network/interfaces
και το αλλαζουμε σε
- Κώδικας: Επιλογή όλων
auto eth0
iface eth0 inet dhcp
pre-up iptables-restore < /etc/iptables.rules
ωστε καθε φορα που ανοιγει ο υπολογιστης να φορτωνει τους κανονες μας.
Το αν και ποιοι κανονες υπαρχουν στο iptables φαινεται μεσα απο
- Κώδικας: Επιλογή όλων
sudo iptables -L -n
Μπραβο σε οσουν ειχαν την υπομονη και το διαβασαν ως το τελος!