Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Ήθελα από καιρό να «αγγίξω τα χέρια μου» στις υπηρεσίες Διαδικτύου δημιουργώντας έναν διακομιστή web από την αρχή και απελευθερώνοντάς τον στο Διαδίκτυο. Σε αυτό το άρθρο θέλω να μοιραστώ την εμπειρία μου στη μετατροπή ενός οικιακού δρομολογητή από μια εξαιρετικά λειτουργική συσκευή σε έναν σχεδόν πλήρη διακομιστή.

Όλα ξεκίνησαν από το γεγονός ότι ο δρομολογητής TP-Link TL-WR1043ND, που είχε εξυπηρετήσει πιστά, δεν ανταποκρίνεται πλέον στις ανάγκες ενός οικιακού δικτύου· ήθελα μια ζώνη 5 GHz και γρήγορη πρόσβαση σε αρχεία σε μια συσκευή αποθήκευσης συνδεδεμένη στο δρομολογητή . Αφού κοίταξα σε εξειδικευμένα φόρουμ (4pda, ixbt), ιστότοπους με κριτικές και κοίταξα την ποικιλία των τοπικών καταστημάτων, αποφάσισα να αγοράσω το Keenetic Ultra.

Οι καλές κριτικές από τους ιδιοκτήτες λειτούργησαν υπέρ αυτής της συγκεκριμένης συσκευής:

  • κανένα πρόβλημα με την υπερθέρμανση (εδώ έπρεπε να εγκαταλείψουμε τα προϊόντα Asus).
  • λειτουργική αξιοπιστία (εδώ διέσχισα το TP-Link).
  • εύκολο στη ρύθμιση (φοβόμουν ότι δεν μπορούσα να το χειριστώ και διέσχισα το Microtik).

Έπρεπε να συμφιλιωθώ με τα μειονεκτήματα:

  • όχι WiFi6, ήθελα να πάρω εξοπλισμό με ρεζέρβα για το μέλλον.
  • 4 θύρες LAN, ήθελα περισσότερες, αλλά αυτή δεν είναι πλέον κατηγορία home.

Ως αποτέλεσμα, πήραμε αυτόν τον "διακομιστή":

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

  • στα αριστερά είναι το οπτικό τερματικό της Rostelecom.
  • στα δεξιά είναι ο πειραματικός μας δρομολογητής.
  • ένας SSD 2 GB m.128 που βρίσκεται γύρω, τοποθετημένος σε ένα κουτί USB3 από την Aliexpress, συνδέεται με το δρομολογητή με ένα καλώδιο, τώρα είναι καλά τοποθετημένο στον τοίχο.
  • στο πρώτο πλάνο είναι ένα καλώδιο επέκτασης με ανεξάρτητα αποσυνδεδεμένες πρίζες, το καλώδιο από αυτό πηγαίνει σε ένα φθηνό UPS.
  • στο παρασκήνιο υπάρχει ένα σωρό καλώδια συνεστραμμένου ζεύγους - στο στάδιο της ανακαίνισης του διαμερίσματος, σχεδίασα αμέσως πρίζες RJ45 στα μέρη όπου υποτίθεται ότι βρισκόταν ο εξοπλισμός, ώστε να μην εξαρτώμαι από το WiFi που θα γεμίσει.

Έτσι, έχουμε τον εξοπλισμό, πρέπει να τον διαμορφώσουμε:

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

  • Η αρχική ρύθμιση του δρομολογητή διαρκεί περίπου 2 λεπτά, υποδεικνύουμε τις παραμέτρους σύνδεσης στον πάροχο (το οπτικό μου τερματικό έχει αλλάξει σε λειτουργία γέφυρας, η σύνδεση PPPoE ανυψώνει το δρομολογητή), το όνομα του δικτύου WiFi και τον κωδικό πρόσβασης - βασικά αυτό είναι , ο δρομολογητής ξεκινά και λειτουργεί.

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Ορίζουμε την προώθηση εξωτερικών θυρών στις θύρες του ίδιου του δρομολογητή στην ενότητα "Κανόνες δικτύου - Προώθηση":

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Τώρα μπορούμε να προχωρήσουμε στο "προχωρημένο" μέρος, αυτό που ήθελα από το δρομολογητή:

  1. λειτουργικότητα ενός μικρού NAS για οικιακό δίκτυο.
  2. εκτέλεση λειτουργιών διακομιστή ιστού για πολλές ιδιωτικές σελίδες.
  3. προσωπική λειτουργικότητα cloud για πρόσβαση σε προσωπικά δεδομένα από οπουδήποτε στον κόσμο.

Το πρώτο υλοποιείται χρησιμοποιώντας ενσωματωμένα εργαλεία, χωρίς να απαιτείται μεγάλη προσπάθεια:

  • Παίρνουμε μια μονάδα δίσκου που προορίζεται για αυτόν τον ρόλο (μονάδα flash, κάρτα μνήμης σε συσκευή ανάγνωσης καρτών, σκληρό δίσκο ή SSD σε εξωτερικό κουτί και τη μορφοποιούμε σε Ext4 χρησιμοποιώντας MiniTool Partition Wizard δωρεάν έκδοση (Δεν έχω υπολογιστή με Linux στο χέρι, είναι δυνατό με ενσωματωμένα εργαλεία). Όπως καταλαβαίνω, κατά τη λειτουργία το σύστημα γράφει μόνο αρχεία καταγραφής στη μονάδα flash, οπότε αν τα περιορίσετε μετά τη ρύθμιση του συστήματος, μπορείτε επίσης να χρησιμοποιήσετε κάρτες μνήμης εάν σκοπεύετε να γράφετε πολλά και συχνά στη μονάδα - ένα SSD ή Ο σκληρός δίσκος είναι καλύτερος.

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Μετά από αυτό, συνδέουμε τη μονάδα στο δρομολογητή και την παρατηρούμε στην οθόνη της οθόνης συστήματος

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Κάντε κλικ στο "Μονάδες USB και εκτυπωτές" στην ενότητα "Εφαρμογές" και διαμορφώστε το κοινόχρηστο στοιχείο στην ενότητα "Δίκτυο Windows":

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Και έχουμε έναν πόρο δικτύου που μπορεί να χρησιμοποιηθεί από υπολογιστές Windows, συνδέοντας ως δίσκο εάν είναι απαραίτητο: net use y: \192.168.1.1SSD /persistent:yes

Η ταχύτητα ενός τέτοιου αυτοσχέδιου NAS είναι αρκετά επαρκής για οικιακή χρήση· σε ένα καλώδιο χρησιμοποιεί ολόκληρο το gigabit, μέσω WiFi η ταχύτητα είναι περίπου 400-500 megabit.

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Η ρύθμιση του χώρου αποθήκευσης είναι ένα από τα απαραίτητα βήματα για τη διαμόρφωση του διακομιστή, τότε χρειαζόμαστε:
- αγοράσει έναν τομέα και μια στατική διεύθυνση IP (μπορείτε να το κάνετε χωρίς αυτό χρησιμοποιώντας το Dynamic DNS, αλλά είχα ήδη μια στατική IP, οπότε αποδείχθηκε ότι ήταν πιο εύκολο στη χρήση δωρεάν υπηρεσίες Yandex - εκχωρώντας τον τομέα εκεί, λαμβάνουμε φιλοξενία DNS και αλληλογραφία στον τομέα μας).

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

- διαμόρφωση διακομιστών DNS και προσθέστε εγγραφές A που δείχνουν στην IP σας:

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Χρειάζονται αρκετές ώρες για να τεθούν σε ισχύ οι ρυθμίσεις εκχώρησης τομέα και DNS, επομένως ρυθμίζουμε ταυτόχρονα το δρομολογητή.

Αρχικά, πρέπει να εγκαταστήσουμε το αποθετήριο Entware, από το οποίο μπορούμε να εγκαταστήσουμε τα απαραίτητα πακέτα στο δρομολογητή. εκμεταλλεύτηκα αυτή η οδηγία, απλώς δεν ανέβασε το πακέτο εγκατάστασης μέσω FTP, αλλά δημιούργησε έναν φάκελο απευθείας στην προηγούμενη συνδεδεμένη μονάδα δίσκου δικτύου και αντέγραψε το αρχείο εκεί με τον συνήθη τρόπο.

Έχοντας αποκτήσει πρόσβαση μέσω SSH, αλλάξτε τον κωδικό πρόσβασης με την εντολή passwd και εγκαταστήστε όλα τα απαραίτητα πακέτα με την εντολή opkg install [package names]:

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Κατά τη διάρκεια της εγκατάστασης, εγκαταστάθηκαν τα ακόλουθα πακέτα στο δρομολογητή (η έξοδος της εντολής opkg list-installed):

Κατάλογος πακέτων
bash - 5.0-3
busybox - 1.31.1-1
ca-bundle - 20190110-2
α-πιστοποιητικά - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
μπούκλα - 7.69.0-1
diffutils - 3.7-2
dropbear - 2019.78-3
entware-release - 1.0-2
findutils - 4.7.0-1
glib2 - 2.58.3-5
grep - 3.4-1
ldconfig - 2.27-9
libattr - 2.4.48-2
libblkid - 2.35.1-1
libc - 2.27-9
libcurl - 7.69.0-1
libffi - 3.2.1-4
libgcc - 8.3.0-9
libiconv-full - 1.11.1-4
libintl-full - 0.19.8.1-2
liblua - 5.1.5-7
libmbedtls - 2.16.5-1
libmount - 2.35.1-1
Libncurses - 6.2-1
libncursesw - 6.2-1
libndm - 1.1.10-1a
libopenssl - 1.1.1d-2
libopenssl-conf - 1.1.1d-2
libpcap - 1.9.1-2
libpcre - 8.43-2
libpcre2 - 10.34-1
libpthread - 2.27-9
libreadline - 8.0-1a
librt - 2.27-9
libslang2 - 2.3.2-4
libssh2 - 1.9.0-2
libssp - 8.3.0-9
libstdcpp - 8.3.0-9
libuid - 2.35.1-1
libxml2 - 2.9.10-1
τοπικές ρυθμίσεις - 2.27-9
mc - 4.8.23-2
ndmq - 1.0.2-5a
nginx - 1.17.8-1
openssl-util - 1.1.1d-2
opkg — 2019-06-14-dcbc142e-2
opt-ndmsv2 - 1.0-12
php7 - 7.4.3-1
php7-mod-openssl - 7.4.3-1
poorbox - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1

Ίσως υπήρχε κάτι περιττό εδώ, αλλά υπήρχε πολύς χώρος στη μονάδα, οπότε δεν μπήκα στον κόπο να το ψάξω.

Μετά την εγκατάσταση των πακέτων, ρυθμίζουμε το nginx, το δοκίμασα με δύο τομείς - ο δεύτερος έχει ρυθμιστεί με https και προς το παρόν υπάρχει ένα στέλεχος. Χρησιμοποιούνται εσωτερικές θύρες 81 και 433 αντί για 80 και 443, καθώς ο πίνακας διαχείρισης του δρομολογητή κρέμεται σε κανονικές θύρες.

etc/nginx/nginx.conf

user  nobody;
worker_processes  1;
#error_log  /opt/var/log/nginx/error.log;
#error_log  /opt/var/log/nginx/error.log  notice;
#error_log  /opt/var/log/nginx/error.log  info;
#pid        /opt/var/run/nginx.pid;

events {
    worker_connections  64;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  /opt/var/log/nginx/access.log main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;

server {
    listen 81;
    server_name milkov.su www.milkov.su;
    return 301 https://milkov.su$request_uri;
}

server {
        listen 433 ssl;
        server_name milkov.su;
        #SSL support
        include ssl.conf;
        location / {
            root   /opt/share/nginx/html;
            index  index.html index.htm;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
            }
        }
}
</spoiler>
<spoiler title="etc/nginx/ssl.conf">
ssl_certificate /opt/etc/nginx/certs/milkov.su/fullchain.pem;
ssl_certificate_key /opt/etc/nginx/certs/milkov.su/privkey.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /opt/etc/nginx/dhparams.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_stapling on;

Για να λειτουργεί το site μέσω https, χρησιμοποίησα το γνωστό αφυδατωμένο σενάριο, εγκαθιστώντας το χρησιμοποιώντας αυτή την οδηγία. Αυτή η διαδικασία δεν προκάλεσε δυσκολίες, σκόνταψα μόνο στο γεγονός ότι στο κείμενο του σεναρίου για την εργασία στο δρομολογητή μου πρέπει να σχολιάσετε τη γραμμή στο αρχείο /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Και σημειώνω ότι η δημιουργία του dhparams.pem με την εντολή "openssl dhparam -out dhparams.pem 2048" στο δρομολογητή μου διαρκεί περισσότερες από 2 ώρες, αν δεν υπήρχε η ένδειξη προόδου, θα είχα χάσει την υπομονή μου και θα είχα κάνει επανεκκίνηση.

Αφού λάβετε τα πιστοποιητικά, επανεκκινήστε το nginx με την εντολή “/opt/etc/init.d/S80nginx restart”. Κατ 'αρχήν, η εγκατάσταση έχει ολοκληρωθεί, αλλά δεν υπάρχει ακόμη ιστότοπος - εάν βάλουμε το αρχείο index.html στον κατάλογο /share/nginx/html, θα δούμε ένα στέλεχος.

index.html

<!DOCTYPE html>
<html>
<head>
<title>Тестовая страничка!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Тестовая страничка!</h1>
<p>Это простая статическая тестовая страничка, абсолютно ничего интересного.</p>
</body>
</html>

Για να τοποθετήσετε τις πληροφορίες όμορφα, είναι πιο εύκολο για έναν μη επαγγελματία σαν εμένα να χρησιμοποιήσει έτοιμα πρότυπα· μετά από μια μακρά αναζήτηση σε διάφορους καταλόγους, βρήκα templatemo.com — υπάρχει μια καλή επιλογή δωρεάν προτύπων που δεν απαιτούν αναφορά (πράγμα σπάνιο στο Διαδίκτυο· τα περισσότερα από τα πρότυπα της άδειας χρήσης απαιτούν να αποθηκεύσετε έναν σύνδεσμο προς τον πόρο από τον οποίο ελήφθησαν).

Επιλέγουμε ένα κατάλληλο πρότυπο - υπάρχουν για διάφορες περιπτώσεις, κατεβάστε το αρχείο και αποσυσκευάστε το στον κατάλογο /share/nginx/html, μπορείτε να το κάνετε από τον υπολογιστή σας και στη συνέχεια να επεξεργαστείτε το πρότυπο (εδώ θα χρειαστείτε ελάχιστες γνώσεις του HTML για να μην σπάσει η δομή) και αντικαταστήστε τα γραφικά όπως φαίνεται στο παρακάτω σχήμα.

Φιλοξενία ιστότοπου στο δρομολογητή του σπιτιού σας

Περίληψη: ο δρομολογητής είναι αρκετά κατάλληλος για τη φιλοξενία ενός ελαφρού ιστότοπου σε αυτόν, κατ 'αρχήν - εάν δεν περιμένετε μεγάλο φορτίο, μπορείτε εγκατάσταση και php, και πειραματιστείτε με πιο σύνθετα έργα (κοιτάζω το nextcloud/owncloud, φαίνεται να υπάρχουν επιτυχημένες εγκαταστάσεις σε τέτοιο υλικό). Η δυνατότητα εγκατάστασης πακέτων αυξάνει τη χρησιμότητά του - για παράδειγμα, όταν ήταν απαραίτητο να προστατεύσω τη θύρα RDP ενός υπολογιστή σε τοπικό δίκτυο, εγκατέστησα το knockd στο δρομολογητή - και η προώθηση θύρας στον υπολογιστή άνοιξε μόνο μετά το χτύπημα της θύρας.

Γιατί ρούτερ και όχι κανονικό υπολογιστή; Ένας δρομολογητής είναι ένα από τα λίγα κομμάτια υλικού υπολογιστή που λειτουργεί όλο το εικοσιτετράωρο σε πολλά διαμερίσματα· ένας οικιακός δρομολογητής είναι συνήθως απολύτως αθόρυβος και ένας ελαφρύς ιστότοπος με λιγότερες από εκατό επισκέψεις την ημέρα δεν θα τον ενοχλήσει καθόλου.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο