ฉันอยากจะ "สัมผัสมือของฉัน" ในบริการอินเทอร์เน็ตมานานแล้วด้วยการตั้งค่าเว็บเซิร์ฟเวอร์ตั้งแต่เริ่มต้นและเผยแพร่สู่อินเทอร์เน็ต ในบทความนี้ ฉันต้องการแบ่งปันประสบการณ์ของฉันในการเปลี่ยนเราเตอร์ที่บ้านจากอุปกรณ์ที่มีฟังก์ชั่นสูงให้เป็นเซิร์ฟเวอร์ที่เกือบจะเต็มเปี่ยม
ทุกอย่างเริ่มต้นด้วยความจริงที่ว่าเราเตอร์ TP-Link TL-WR1043ND ซึ่งให้บริการอย่างซื่อสัตย์ไม่ตอบสนองความต้องการของเครือข่ายในบ้านอีกต่อไป ฉันต้องการแบนด์ 5 GHz และเข้าถึงไฟล์อย่างรวดเร็วบนอุปกรณ์เก็บข้อมูลที่เชื่อมต่อกับเราเตอร์ . หลังจากดูฟอรัมเฉพาะทาง (4pda, ixbt) ไซต์ที่มีบทวิจารณ์ และดูร้านค้าในพื้นที่ต่างๆ ฉันจึงตัดสินใจซื้อ Keenetic Ultra
ความคิดเห็นที่ดีจากเจ้าของใช้งานได้ดีกับอุปกรณ์นี้:
- ไม่มีปัญหาเรื่องความร้อนสูงเกินไป (ที่นี่เราต้องละทิ้งผลิตภัณฑ์ Asus);
- ความน่าเชื่อถือในการปฏิบัติงาน (ที่นี่ฉันขีดฆ่า TP-Link)
- ติดตั้งง่าย (กลัวทนไม่ไหวจึงขีดฆ่า Microtik)
ฉันต้องยอมรับข้อเสีย:
- ไม่มี WiFi6 ฉันต้องการนำอุปกรณ์สำรองไว้ใช้ในอนาคต
- พอร์ต LAN 4 พอร์ต ฉันต้องการมากกว่านี้ แต่นี่ไม่ใช่หมวดบ้านอีกต่อไป
เป็นผลให้เราได้รับ "เซิร์ฟเวอร์" นี้:
- ด้านซ้ายคือเทอร์มินัลออปติคัลของ Rostelecom
- ทางด้านขวาคือเราเตอร์ทดลองของเรา
- m.2 SSD ขนาด 128 GB ที่วางอยู่ในกล่อง USB3 จาก Aliexpress เชื่อมต่อกับเราเตอร์ด้วยสายไฟตอนนี้ติดตั้งบนผนังอย่างเรียบร้อย
- ในเบื้องหน้าเป็นสายไฟต่อที่มีช่องเสียบแยกอิสระสายไฟจากนั้นไปที่ UPS ราคาไม่แพง
- ในพื้นหลังมีสายเคเบิลคู่บิดเกลียวจำนวนมาก - ในขั้นตอนของการปรับปรุงอพาร์ทเมนต์ฉันได้วางแผนซ็อกเก็ต RJ45 ทันทีในสถานที่ที่ควรจะวางอุปกรณ์เพื่อไม่ให้ขึ้นอยู่กับ WiFi ที่ถูกทิ้งเกลื่อน
ดังนั้นเราจึงมีอุปกรณ์ เราต้องกำหนดค่ามัน:
- การตั้งค่าเริ่มต้นของเราเตอร์ใช้เวลาประมาณ 2 นาที เราระบุพารามิเตอร์การเชื่อมต่อกับผู้ให้บริการ (เทอร์มินัลออปติคอลของฉันเปลี่ยนเป็นโหมดบริดจ์ การเชื่อมต่อ PPPoE จะยกเราเตอร์) ชื่อของเครือข่าย WiFi และรหัสผ่าน - โดยพื้นฐานแล้ว เราเตอร์จะเริ่มทำงานและทำงาน
เราตั้งค่าการส่งต่อพอร์ตภายนอกไปยังพอร์ตของเราเตอร์เองในส่วน "กฎเครือข่าย - การส่งต่อ":
ตอนนี้เราสามารถไปยังส่วน "ขั้นสูง" ได้แล้ว สิ่งที่ฉันต้องการจากเราเตอร์:
- การทำงานของ NAS ขนาดเล็กสำหรับเครือข่ายภายในบ้าน
- ใช้งานฟังก์ชั่นเว็บเซิร์ฟเวอร์สำหรับเพจส่วนตัวหลายเพจ
- ฟังก์ชั่นคลาวด์ส่วนบุคคลสำหรับการเข้าถึงข้อมูลส่วนบุคคลจากทุกที่ในโลก
สิ่งแรกถูกนำไปใช้โดยใช้เครื่องมือในตัวโดยไม่ต้องใช้ความพยายามมาก:
- เราใช้ไดรฟ์ที่มีไว้สำหรับบทบาทนี้ (แฟลชไดรฟ์, การ์ดหน่วยความจำในตัวอ่านการ์ด, ฮาร์ดไดรฟ์หรือ SSD ในกล่องภายนอกและฟอร์แมตเป็น Ext4 โดยใช้
ตัวช่วยสร้างพาร์ติชัน MiniTool รุ่นฟรี (ฉันไม่มีคอมพิวเตอร์ที่ใช้ Linux แต่เป็นไปได้ด้วยเครื่องมือในตัว) ตามที่ฉันเข้าใจ ในระหว่างการดำเนินการ ระบบจะเขียนเฉพาะบันทึกลงในแฟลชไดรฟ์ ดังนั้นหากคุณจำกัดบันทึกเหล่านี้หลังจากตั้งค่าระบบ คุณสามารถใช้การ์ดหน่วยความจำได้หากคุณวางแผนที่จะเขียนจำนวนมากและบ่อยครั้งลงในไดรฟ์ - SSD หรือ HDD ดีกว่าครับ
หลังจากนั้นเราจะเชื่อมต่อไดรฟ์เข้ากับเราเตอร์และสังเกตได้จากหน้าจอมอนิเตอร์ระบบ
คลิกที่ "ไดรฟ์ USB และเครื่องพิมพ์" ไปที่ส่วน "แอปพลิเคชัน" และกำหนดค่าการแชร์ในส่วน "เครือข่าย Windows":
และเรามีทรัพยากรเครือข่ายที่สามารถใช้งานได้จากคอมพิวเตอร์ Windows โดยเชื่อมต่อเป็นดิสก์หากจำเป็น: net use y: \192.168.1.1SSD /persistent:yes
ความเร็วของ NAS ที่ได้รับการปรับปรุงนั้นค่อนข้างเพียงพอสำหรับใช้ในบ้าน บนสายจะใช้กิกะบิตทั้งหมดผ่าน WiFi ความเร็วจะอยู่ที่ประมาณ 400-500 เมกะบิต
การตั้งค่าที่เก็บข้อมูลเป็นหนึ่งในขั้นตอนที่จำเป็นในการกำหนดค่าเซิร์ฟเวอร์ จากนั้นเราต้องการ:
-
-
การตั้งค่าโดเมนและการมอบหมาย DNS จะใช้เวลาหลายชั่วโมงจึงจะมีผล ดังนั้นเราจึงตั้งค่าเราเตอร์ไปพร้อมๆ กัน
ขั้นแรกเราต้องติดตั้งที่เก็บ Entware ซึ่งเราสามารถติดตั้งแพ็คเกจที่จำเป็นบนเราเตอร์ได้ ฉันเอาเปรียบ
เมื่อได้รับการเข้าถึงผ่าน SSH ให้เปลี่ยนรหัสผ่านด้วยคำสั่ง passwd และติดตั้งแพ็คเกจที่จำเป็นทั้งหมดด้วยคำสั่ง opkg install [ชื่อแพ็คเกจ]:
ในระหว่างการตั้งค่า มีการติดตั้งแพ็คเกจต่อไปนี้บนเราเตอร์ (ผลลัพธ์ของคำสั่งที่ติดตั้งรายการ opkg):
รายการแพ็คเกจ
ทุบตี - 5.0-3
กล่องยุ่ง - 1.31.1-1
ca-มัด - 20190110-2
ใบรับรอง CA - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
ครอน - 4.1-3
ขด - 7.69.0-1
ผลต่าง - 3.7-2
dropbear - 2019.78-3
เอนแวร์รีลีส - 1.0-2
findutils - 4.7.0-1
glib2 - 2.58.3-5
เกรป - 3.4-1
ldconfig - 2.27-9
ลิแบตเตอร์ - 2.4.48-2
ลิบบลคิด - 2.35.1-1
ลิบซี - 2.27-9
libcurl - 7.69.0-1
libffi - 3.2.1-4
libgcc - 8.3.0-9
libiconv เต็ม - 1.11.1-4
libintl เต็ม - 0.19.8.1-2
ลิบัว - 5.1.5-7
ลิบเบดเทิลส์ - 2.16.5-1
ลิบเมาท์ - 2.35.1-1
libncurses - 6.2-1
libncursesw - 6.2-1
libndm - 1.1.10-1a
ลิโบเนสเซิล - 1.1.1d-2
libopenssl-conf - 1.1.1d-2
ลิบแคป - 1.9.1-2
libpcre - 8.43-2
libpcre2 - 10.34-1
libpthread - 2.27-9
ลิบรีดไลน์ - 8.0-1a
บท - 2.27-9
libslang2 - 2.3.2-4
libssh2 - 1.9.0-2
libssp - 8.3.0-9
libstdcpp - 8.3.0-9
ลิบูอิด - 2.35.1-1
libxml2 - 2.9.10-1
สถานที่ - 2.27-9
แมค - 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
เลือก ndmsv2 - 1.0-12
php7 - 7.4.3-1
php7-mod-openssl - 7.4.3-1
กล่องยากจน - 1.31.1-2
ข้อมูลคำศัพท์ - 6.2-1
ซลิบ - 1.2.11-3
โซนอินโฟ-เอเชีย - 2019c-1
โซนอินโฟ-ยุโรป - 2019c-1
บางทีอาจมีบางอย่างฟุ่มเฟือยที่นี่ แต่มีพื้นที่ว่างบนไดรฟ์มากดังนั้นฉันจึงไม่ได้สนใจที่จะตรวจสอบมัน
หลังจากติดตั้งแพ็คเกจ เรากำหนดค่า nginx ฉันลองใช้สองโดเมน - โดเมนที่สองกำหนดค่าด้วย https และตอนนี้ยังมีต้นขั้ว พอร์ตภายใน 81 และ 433 ถูกใช้แทน 80 และ 443 เนื่องจากแผงผู้ดูแลระบบเราเตอร์ค้างบนพอร์ตปกติ
ฯลฯ/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;
เพื่อให้ไซต์ทำงานผ่าน https ได้ ฉันใช้สคริปต์ dehydrated ที่รู้จักกันดี โดยติดตั้งโดยใช้
[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 เราจะเห็น stub
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>
เพื่อวางข้อมูลอย่างสวยงาม มันง่ายกว่าสำหรับผู้ที่ไม่ใช่มืออาชีพอย่างฉันที่จะใช้เทมเพลตสำเร็จรูป หลังจากค้นหาแคตตาล็อกต่างๆ มานาน ฉันพบว่า
เราเลือกเทมเพลตที่เหมาะสม - มีหลายกรณี ดาวน์โหลดไฟล์เก็บถาวรและแตกลงในไดเร็กทอรี /share/nginx/html คุณสามารถทำได้จากคอมพิวเตอร์ของคุณ จากนั้นแก้ไขเทมเพลต (ที่นี่คุณจะต้องมีความรู้เพียงเล็กน้อย ของ HTML เพื่อไม่ให้โครงสร้างพัง) และแทนที่กราฟิกดังแสดงในรูปด้านล่าง
สรุป: โดยหลักการแล้วเราเตอร์ค่อนข้างเหมาะสำหรับการโฮสต์เว็บไซต์แบบเบา - หากคุณไม่คาดว่าจะมีภาระงานมากคุณสามารถทำได้
เหตุใดจึงเป็นเราเตอร์และไม่ใช่พีซีทั่วไป เราเตอร์เป็นหนึ่งในฮาร์ดแวร์คอมพิวเตอร์ไม่กี่ชิ้นที่ทำงานตลอดเวลาในอพาร์ทเมนต์หลายแห่ง เราเตอร์ที่บ้านมักจะเงียบสนิทและไซต์ขนาดเล็กที่มีการเข้าชมน้อยกว่าร้อยครั้งต่อวันจะไม่รบกวนมันเลย
ที่มา: will.com