Έστηνα έναν Thin client σαν lightweight server, το οποίο τρέχει κάποια cron scripts.
'Ομως επειδή το στήνω για non tech-savvy άτομα ήθελα να είναι εύκολο στην διαχείρηση. Εφεξής θα το αναφέρω σαν server.
Έτσι είδα την λύση του avahi. Το avahi είναι μια mdns λύση που πρακτικά δημοσιεύει ένα domain στο τοπικό δίκτυό του και όσοι έχουν mdns client μπορούν να κάνουν resolve την ip αυτού. Δε η αρχική υλοποίηση ήταν το προτόκολλο Bonjour της Apple (άρα its a given ότι παίζει και σε MAC).
Υποστίριξη στην παρούσα φάση
Τα windows 10 το υποστιρίζουν (με τελευταίο update) και καθώς και ουκ ολίγα linux distros (Ubuntu, debian, Mint στανταρτ).
Αν δεν είστε σίγουροι ελέγξτε ότι στο linux μηχάνημα το οποίο θα έχει access στον server έχει την παρακάτω έγγραφή mdns4_minimal
(μαζί με τις υπόλοιπες) στην ρύθμιση hosts
στο αρχείο /etc/nsswitch.conf
.
Ένα default config είναι:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] resolve dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Παρατηρείστε το:
hosts: files mdns4_minimal [NOTFOUND=return] resolve dns myhostname
Κατά 99% ΔΕΝ θα χρειαστεί να πειράξετε το /etc/nsswitch.conf
.
Εγκατάσταση και Ρύθμιση στον server
Σε debian έτρεξα:
sudo apt-get install avahi-daemon libnss-mdns
Ίσως, να υπάρχει πρόβλημα αν συνυπάρχει το systemd-resolved
επειδή ΚΑΙ αυτό υποστιρίζει mDNS. Στην περίπτωσή μου το αφαίρεσα (αν και δεν ήταν εγκατεστημένο). Ακόμα ΔΕΝ δοκίμασα περαιτέρω ρύθμιση του systemd-resolved
ώστε να συνυπάρχει με το avahi.
sudo apt-get purge systemd-resolved
sudo service networking restart
Ενδεχομένως αν ρυθμιστεί να μην διαχερίζετε το mDNS το systemd-resolved να μην έχει θεμα απλά δεν το δοκίμασα.
Ρύθμιση του Avahi
Άνοιξα με έναν text editor το αρχείο /etc/avahi/avahi-daemon.conf
. Σε αυτό ρύθμισα τα εξής:
Στο setting host-name=
όρισα το domain το οποίο θα είναι διαθέσιμο το μηχάνημα μου στο τοπικό δίκτυο. Το όνονμα αυτό είναι σε μικρά λατινικά χωρίς .
(τελεία) και ,
κόμματα. πχ.
host-name=webserver
Μετέπειτα κάνουμε uncomment την ρύθμιση:
publish-domain=yes
Και επανεκκινούμε τον Avahi Daemon:
sudo service avahi-daemon restart
Παράδειγμα ρύθμισης
Μια ολοκληρωμένη ρύθμιση είναι:
[server]
host-name=test
#domain-name=local
#browse-domains=0pointer.de, zeroconf.org
use-ipv4=yes
use-ipv6=yes
#allow-interfaces=eth0
#deny-interfaces=eth1
#check-response-ttl=no
#use-iff-running=no
#enable-dbus=yes
#disallow-other-stacks=no
#allow-point-to-point=no
#cache-entries-max=4096
#clients-max=4096
#objects-per-client-max=1024
#entries-per-entry-group-max=32
ratelimit-interval-usec=1000000
ratelimit-burst=1000
[wide-area]
enable-wide-area=yes
[publish]
#disable-publishing=no
#disable-user-service-publishing=no
#add-service-cookie=no
#publish-addresses=yes
publish-hinfo=no
publish-workstation=no
publish-domain=yes
#publish-dns-servers=192.168.50.1, 192.168.50.2
#publish-resolv-conf-dns-servers=yes
#publish-aaaa-on-ipv4=yes
#publish-a-on-ipv6=no
[reflector]
#enable-reflector=no
#reflect-ipv=no
#reflect-filters=_airplay._tcp.local,_raop._tcp.local
[rlimits]
#rlimit-as=
#rlimit-core=0
#rlimit-data=8388608
#rlimit-fsize=0
#rlimit-nofile=768
#rlimit-stack=8388608
#rlimit-nproc=3
Βάση αυτής το μηχάνημά μας είναι διαθέσιμο στο test.local
domain.
Έλεγχος ρυθμίσεών μας
Στην περίπτωσή μου αρκούσε ένα ping. Ας υποθέσουμε ότι το ρυθμίσαμε σαν test.local
ping test.local
H εντολή αυτή είναι διαθέσιμη ΚΑΙ από windows cmd και από powershell πέραν από windows και MAC.
Οφέλη στην περίπτωσή μου
Το έκανα αυτό επειδή δεν ήξερα τι είδους δικτύωση θα έχει εκεί που θα εγκαταστήσω τον server. Έχοντας μια κοινή διεύθυνση έστω και μη-ip ήταν εύκολο στο να αναπτύξω εγχειρίδια χρήσης. Άλλο να λέω στον χρήστη επισκέψου το test.local
και άλλο το να λες βρες την ip του μηχανήματος και συνδέσου μετά.
Διευκολύνει κατά πολύ την χρήση αυτού.