ฉันอาจไม่ใช่คนแรกที่ทำเช่นนี้ แต่ฉันจำเป็นต้องใช้บริการ DNS แบบไดนามิกของ NO-IP ดังนั้นฉันจึงสามารถกำหนดค่าอุปกรณ์และคอมพิวเตอร์ให้เข้าถึงทรัพยากรบน LAN ของฉันได้อย่างง่ายดายเมื่อฉันไม่อยู่ สำหรับผู้ที่ไม่คุ้นเคยกับ NO-IP นี่คือบริการ DNS แบบไดนามิกฟรี การเชื่อมต่ออินเทอร์เน็ตที่บ้านและสำนักงานขนาดเล็กส่วนใหญ่มี IP แบบไดนามิก ซึ่งหมายความว่าที่อยู่ IP จะเปลี่ยนแปลงมากที่สุดทุกครั้งที่สร้างการเชื่อมต่อจากเราเตอร์ โดยปกติแล้ว ชื่อโดเมนจะต้องมีที่อยู่ IP แบบคงที่จึงจะทำงานได้ Dynamic DNS อนุญาตให้ชื่อโดเมน (เช่น subdomain.example.com) ใช้ IP แบบไดนามิกโดยการอัปเดต NO-IP ด้วยที่อยู่ IP ใหม่เมื่อที่อยู่ IP เปลี่ยนแปลง จากนั้น NO-IP จะเชื่อมโยง IP นั้นกับชื่อโดเมนเพื่อให้สามารถตั้งค่าบริการกับโดเมนแทนที่จะเป็น IP ที่เปลี่ยนแปลง ทำให้การกำหนดค่าสิ่งต่าง ๆ ง่ายขึ้น
เราเตอร์จำนวนมากมีไคลเอนต์ NO-IP ในตัว แต่เราเตอร์ของฉันไม่รองรับ NO-IP และไม่ว่าด้วยเหตุผลใดก็ตาม ฉันไม่สามารถรับไคลเอนต์ที่ NO-IP แนะนำสำหรับโฮสต์ Linux ทำงานได้ ฉันดาวน์โหลดซอร์สและคอมไพล์ตามคำแนะนำ และดูเหมือนว่าซอร์สจะทำงานอยู่ แต่ไม่เคยอัปเดตที่อยู่ IP ของฉันเลย ไม่มีเอาต์พุตไปยังคอนโซลหรือไฟล์บันทึกเพื่อวินิจฉัยปัญหาที่ฉันพบ ดังนั้นฉันจึงตัดสินใจเขียนเอง ซึ่งไม่ยากเลยจริงๆ ที่จะใช้สคริปต์ทุบตีและยูทิลิตี้ง่ายๆ สองสามตัว บนกล่อง Linux ของฉัน นี่คือคำแนะนำวิธีใช้และเอกสารประกอบสำหรับการตั้งค่านี้ ฉันใช้เซิร์ฟเวอร์ Ubuntu ดังนั้นฉันจึงใช้ apt และ nano แต่สิ่งนี้ควรจะใช้ได้กับทุกอย่างที่ใช้ POSIX เช่น Mac OS X, BSD, Linux ทุกรสชาติ - แม้แต่ Raspberry Pi
สคริปต์สามารถเรียกใช้เป็นอินสแตนซ์เดียวที่มีพารามิเตอร์บรรทัดคำสั่ง เป็น daemon โดยใช้ crontabs (ยูทิลิตี้สำหรับการรันโปรแกรมตามกำหนดเวลา) หรือเป็นบริการ Linux
สคริปต์นี้มีการขึ้นต่อกันหนึ่งครั้ง ซึ่งก็คือ wget โดยปกติจะถูกติดตั้งตามค่าเริ่มต้นบน Linux และ BSD distros ส่วนใหญ่ แต่ถ้าไม่ได้ใช้ตัวจัดการแพ็คเกจของคุณในการติดตั้ง
sudo apt-get install wget
-หรือ-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
พารามิเตอร์:
-u, --username
ชื่อผู้ใช้เพื่อเข้าสู่ระบบ no-ip.com
-p, --password
รหัสผ่านเพื่อเข้าสู่ระบบ no-ip.com
-h, --hostname
ชื่อโดเมนที่จะอัพเดต
-d, --detectip
บอกให้สคริปต์ตรวจสอบที่อยู่ IP ภายนอกของคุณ สิ่งนี้จะมีความสำคัญมากกว่า -i
-i, --ip
Maually ตั้งค่าที่อยู่ IP ที่จะอัปเดต หากไม่ได้ระบุ -d หรือ -i ไว้ no-ip จะใช้ที่อยู่ IP ที่ตรวจพบ
-n, --interval
เมื่อรันสคริปต์ในฐานะดีมอน/บริการ (ดูการติดตั้ง) สิ่งนี้จะอัปเดต no-ip ทุก ๆ n นาที
-l, --logfile
กำหนดเส้นทางไปยังไฟล์บันทึก ไฟล์นี้จะต้องเขียนได้
-c, --config
กำหนดเส้นทางไปยังไฟล์กำหนดค่า ไฟล์นี้จะต้องสามารถอ่านได้ พารามิเตอร์ไฟล์กำหนดค่ามีความสำคัญเหนือกว่าพารามิเตอร์บรรทัดคำสั่ง
no-ip.sh
รันสคริปต์ด้วยการตั้งค่าในไฟล์ปรับแต่งในตำแหน่งเริ่มต้น /etc/no-ip/no-ip.conf
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
ทำการอัพเดตครั้งเดียว ตรวจจับ UP และบันทึกผลลัพธ์
no-ip.sh -c=/home/username/no-ip.conf
รันสคริปต์ด้วยการตั้งค่าในไฟล์ปรับแต่ง
no-ip.sh /dev/null 2>&1 &
รันสคริปต์ในฐานะ daemon ด้วยการตั้งค่าในไฟล์กำหนดค่าในตำแหน่งเริ่มต้น /etc/no-ip/no-ip.conf
ไฟล์กำหนดค่าใช้ไวยากรณ์ง่ายๆ ในการกำหนดพารามิเตอร์ พารามิเตอร์บรรทัดคำสั่งใดๆ (ยกเว้น --config) สามารถระบุในไฟล์กำหนดค่าได้ กฎเดียวกันนี้ใช้กับพารามิเตอร์ไฟล์กำหนดค่าเป็นพารามิเตอร์บรรทัด caommand (เช่น "detectip" จะแทนที่ "ip" หากระบุทั้งคู่)
ตัวอย่าง:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
ก่อนติดตั้งสคริปต์ ให้ดาวน์โหลดและแตกไฟล์ลงในเครื่องของคุณ คำแนะนำจะถือว่าคุณอยู่ในโฟลเดอร์ no-ip-master
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
วิธีที่ 1: crontab
Crontabs อนุญาตให้คุณระบุกำหนดเวลาในการเรียกใช้สคริปต์และจะเรียกใช้สคริปต์ในฐานะผู้ใช้ที่กำหนดค่า crontab ไว้ด้วย ตรวจสอบให้แน่ใจว่าผู้ใช้มีสิทธิ์ดำเนินการกับสคริปต์ สิทธิ์ในการอ่านไฟล์กำหนดค่า และสิทธิ์ในการเขียนลงในไฟล์บันทึก Crontabs จะรันสคริปต์ตามกำหนดเวลา ดังนั้นจึงไม่จำเป็นต้องระบุช่วงเวลา
ต่อไปนี้เป็นวิธีเรียกใช้สคริปต์ในฐานะรูท
1.) สร้างโฟลเดอร์ใน ฯลฯ
sudo mkdir /etc/no-ip
2.) สร้างไฟล์ปรับแต่ง
sudo touch /etc/no-ip/no-ip.conf
3.) ตั้งค่าพารามิเตอร์ด้วยโปรแกรมแก้ไขที่คุณชื่นชอบ ฉันใช้นาโน ดูส่วนไฟล์กำหนดค่าด้านบนสำหรับรายละเอียด
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) คัดลอก no-ip.sh ไปที่ /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) ทำให้สคริปต์ปฏิบัติการได้
sudo chmod +x /usr/sbin/no-ip.sh
6.) เข้าสู่ระบบในฐานะรูท
sudo -i
7.) แก้ไข crontab ของรูท
crontab -e
8.) เพิ่มรายการไปที่ด้านล่าง */10 บอกให้ crontab รันสคริปต์ทุกครั้งที่เวลาปัจจุบันหารด้วย 10 หรือทุกๆ 10 นาทีแล้วบันทึก crontab
*/10 * * * * /usr/sbin/no-ip.sh
วิธีที่ 2: บริการ Linux (เขียนขึ้นสำหรับ distros ที่ใช้ Debian ซึ่งจะแตกต่างกันไปสำหรับ distros อื่น ๆ )
ตรวจสอบให้แน่ใจว่ารูทมีสิทธิ์ดำเนินการบนสคริปต์ สิทธิ์ในการอ่านไฟล์กำหนดค่า และสิทธิ์ในการเขียนไปยังไฟล์บันทึก
1.) สร้างโฟลเดอร์ใน /etc
sudo mkdir /etc/no-ip
2.) สร้างไฟล์ปรับแต่ง
sudo touch /etc/no-ip/no-ip.conf
3.) ตั้งค่าพารามิเตอร์ด้วยโปรแกรมแก้ไขที่คุณชื่นชอบ ฉันใช้นาโน ดูส่วนไฟล์กำหนดค่าด้านบนสำหรับรายละเอียด
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) คัดลอก no-ip.sh ไปที่ /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) ทำให้สคริปต์ปฏิบัติการได้
sudo chmod +x /usr/sbin/no-ip.sh
6.) คัดลอก no-ip-service ไปยัง init.d
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) ทำให้ no-ip-service ปฏิบัติการได้
sudo chmod +x /etc/init.d/no-ip-service
8.) เริ่มบริการ
sudo service no-ip-service start
9.) เพิ่มบริการเพื่อเริ่มตอนบู๊ต
update-rc.d no-ip-service defaults