คำปรารภ
สำหรับความต้องการส่วนตัวที่บ้าน ฉันติดตั้ง VSphere ซึ่งฉันใช้เราเตอร์เสมือนและเซิร์ฟเวอร์ Ubuntu เป็นเซิร์ฟเวอร์สื่อและคุณสมบัติอื่นๆ อีกมากมาย และเซิร์ฟเวอร์นี้ควรสามารถเข้าถึงได้จากอินเทอร์เน็ต แต่ปัญหาคือผู้ให้บริการของฉันให้ข้อมูลคงที่เพื่อเงิน ซึ่งสามารถใช้เพื่อวัตถุประสงค์ที่เป็นประโยชน์มากขึ้นได้เสมอ ดังนั้นฉันจึงใช้ชุดค่าผสม ddclient + cloudflare
ทุกอย่างเรียบร้อยดีจนกระทั่ง ddclient หยุดทำงาน หลังจากสำรวจไปรอบๆ เล็กน้อย ฉันก็รู้ว่าถึงเวลาสำหรับไม้ค้ำยันและจักรยานแล้ว เนื่องจากใช้เวลานานเกินไปในการค้นหาปัญหา ในท้ายที่สุด ทุกอย่างก็กลายเป็นภูตเล็กๆ ที่ใช้งานได้ และฉันไม่ต้องการสิ่งอื่นใดอีกแล้ว
หากใครสนใจยินดีต้อนรับสู่แมวค่ะ
เครื่องมือที่ใช้และวิธีการทำงานของ "มัน"
ดังนั้นสิ่งแรกที่ฉันพบบนเว็บไซต์ cloudflare คือทุกสิ่งที่คุณจำเป็นต้องรู้
โดยทั่วไปจะใช้กระดาษห่อหุ้มเป็นพื้นฐาน
ฉันยกตัวอย่างหนึ่งในการอัปเดต DNS และเพิ่มการใช้ไฟล์การกำหนดค่าและความสามารถในการอัปเดตบันทึก A หลายรายการภายในโซนและแน่นอนว่าไม่จำกัดจำนวนโซน
ตรรกะมีดังนี้:
- สคริปต์ได้รับรายการโซนจากไฟล์คอนฟิกูเรชันและวนซ้ำโซนเหล่านั้น
- ในแต่ละโซน สคริปต์จะวนซ้ำบันทึก DNS แต่ละรายการประเภท A หรือ AAAA และตรวจสอบ IP สาธารณะด้วยบันทึก
- หาก IP แตกต่าง IP ก็จะเปลี่ยน หากไม่เป็นเช่นนั้น จะข้ามการวนซ้ำและย้ายไปยังครั้งถัดไป
- เข้าสู่โหมดสลีปตามเวลาที่ระบุในการกำหนดค่า
การติดตั้งและการกำหนดค่า
อาจเป็นไปได้ที่จะสร้างแพ็คเกจ .deb แต่ฉันไม่เก่งเรื่องนี้ และก็ไม่ได้ยากขนาดนั้น
ฉันอธิบายกระบวนการโดยละเอียดใน README.md เมื่อวันที่
แต่ในกรณีนี้ ฉันจะอธิบายเป็นภาษารัสเซียในแง่ทั่วไป:
- ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง python3 และ python3-pip แล้ว หากไม่ได้ติดตั้ง ให้ทำการติดตั้ง (บน Windows จะมีการติดตั้ง python3-pip พร้อมกับ Python)
- โคลนหรือดาวน์โหลดที่เก็บ
- ติดตั้งการพึ่งพาที่จำเป็น
python3 -m pip install -r requirements.txt
- เรียกใช้สคริปต์การติดตั้ง
สำหรับลินุกซ์:chmod +x install.sh sudo ./install.sh
สำหรับ Windows: windows_install.bat
- แก้ไขไฟล์การกำหนดค่า
สำหรับลินุกซ์:sudoedit /etc/zen-cf-ddns.conf
สำหรับ Windows:
เปิดไฟล์ zen-cf-ddns.conf ในโฟลเดอร์ที่คุณติดตั้งสคริปต์
นี่เป็นไฟล์ JSON ปกติ การตั้งค่าไม่มีอะไรซับซ้อน - ฉันอธิบายเฉพาะ 2 โซนที่แตกต่างกันในนั้นเป็นตัวอย่าง
เบื้องหลังตัวติดตั้งคืออะไร?
install.sh สำหรับลินุกซ์:
- ผู้ใช้ถูกสร้างขึ้นเพื่อรัน daemon โดยไม่ต้องสร้างโฮมไดเร็กทอรีและไม่สามารถเข้าสู่ระบบได้
sudo useradd -r -s /bin/false zen-cf-ddns
- ไฟล์บันทึกถูกสร้างขึ้นใน /var/log/
- กำหนดให้ผู้ใช้ที่สร้างขึ้นใหม่เป็นเจ้าของไฟล์บันทึก
- ไฟล์จะถูกคัดลอกไปยังตำแหน่งของพวกเขา (กำหนดค่าใน /etc, ไฟล์ปฏิบัติการใน /usr/bin, ไฟล์บริการใน /lib/systemd/system)
- เปิดใช้งานบริการแล้ว
windows_install.bat สำหรับ Windows:
- คัดลอกไฟล์ปฏิบัติการและไฟล์การกำหนดค่าไปยังโฟลเดอร์ที่ผู้ใช้ระบุ
- สร้างงานในตัวกำหนดตารางเวลาเพื่อรันสคริปต์เมื่อเริ่มต้นระบบ
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
หลังจากเปลี่ยนการกำหนดค่าแล้ว จะต้องรีสตาร์ทสคริปต์ ใน Linux ทุกอย่างเรียบง่ายและคุ้นเคย:
sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status
สำหรับ Windows คุณจะต้องฆ่ากระบวนการ pythonw และรันสคริปต์อีกครั้ง (ฉันขี้เกียจเกินไปที่จะเขียนบริการสำหรับ Windows ใน C#):
taskkill /im pythonw.exe
เสร็จสิ้นการติดตั้งและการกำหนดค่า เพลิดเพลินไปกับสุขภาพของคุณ
สำหรับใครที่อยากดูโค้ด Python ที่ไม่สวยก็นี่เลยครับ
ได้รับอนุญาตจาก MIT แล้วทำสิ่งนี้ตามที่คุณต้องการ
ป.ล.: ฉันเข้าใจว่ามันกลายเป็นไม้ค้ำยันนิดหน่อย แต่มันก็ใช้งานได้ดี
อัปเดต: 11.10.2019/17/37 XNUMX:XNUMX น
ฉันพบปัญหาอีก 1 ปัญหาและถ้ามีคนบอกวิธีแก้ปัญหาฉันจะขอบคุณมาก
ปัญหาคือว่าหากคุณติดตั้งการพึ่งพาโดยไม่มี sudo python -m pip install -r ... ผู้ใช้บริการจะไม่สามารถมองเห็นโมดูลได้และฉันไม่ต้องการบังคับให้ผู้ใช้ติดตั้งโมดูลภายใต้ sudo และนี่คือ ไม่ถูกต้อง.
ทำยังไงให้ดูสวย?
UPD: 11.10.2019/19/16 XNUMX:XNUMX ปัญหาได้รับการแก้ไขโดยใช้ venv
มีการเปลี่ยนแปลงหลายประการ รุ่นถัดไปจะมีขึ้นในอีกไม่กี่วันข้างหน้า
ที่มา: will.com