1) สร้างไฟล์โดยมี content ประมาณนี้เลย และทำการบันทึกไฟล์ในที่นี้บันทึกเป็น myscriptd
#! /bin/sh* หมายเหตุ
# any command
arp -i eth0 -s 192.168.1.1 00:00:00:11:11:11
- 192.168.1.1 คือ ip gateway ซึ่งส่วนมากจะเป็น 192.168.1.1 อยู่แล้ว
- 00:00:00:11:11:11 คือ mac gateway ซึ่งดูจากคำสั่ง arp -a
- eth0 คือ Network Card ที่เราต้องการตั้งค่า arp static ให้ ดูได้จากคำสั่ง ifconfig
อีกสคริปจัดไป เขียนเป็นด้วยแฮะ ไม่ธรรมดานะเราเนี๋ย (แต่แนะนำวิธีแรกง่ายๆ สั้น)
#!/bin/sh
# IP Gateway , most IP Gateway use 192.168.1.1
IP="192.168.1.1"
# Command for arp static arp [-i <interface>] -s <IP Gateway> <MAC Gateway>
CMD=`arp -a $IP`
# Set ARP static for this NIC can find in "ifconfig" command
# eth0, wlan0
NIC=`echo $CMD | cut -d \ -f 7`
# Get mac value from command "arp -a <IP Gateway>"
# mac มันอยู่ตำแหน่ง 4 เมื่อตัดคำด้วยช่องว่างอ่ะนะ
# Use อักขระพิเศษโดยใช้ \ นำหน้าเช่น ช่องว่าง หรือ "
MAC=`echo $CMD | cut -d \ -f 4`
# Show start command
echo "Startup doing ARP static."
echo "Command is \"arp -i $NIC -s $IP $MAC\""
# Run command ARP static
arp -i $NIC -s $IP $MAC
# Show end command
echo "ARP static start ........ OK"
# อ้างอิงการตัดคำใน shell script
# http://www.captain.at/howto-linux-shell-reference.php
# Exam: dsldevice.lan (192.168.1.1) at 00:00:d0:44:33:22 [ether] on eth0
2) คัดลอกไฟล์ myscriptd ไปวางที่ /etc/init.d/
sudo cp myscriptd /etc/init.d/myscriptd3) เพิ่มสิทธิ์ซะก่อน เพื่อให้ execute ได้
sudo chmod 755 /etc/init.d/myscriptd4) ทำการเพิ่มสคริปให้เป็น service และกำหนด run level ว่าให้ทำงานตอนบูตระบบ ด้วยคำสั่ง
หรือ
sudo chmod +x /etc/init.d/myscriptd
sudo update-rc.d myscriptd defaults5) ทำเสร็จรีบูตระบบซะ
หรือ
sudo update-rc.d myscriptd start 90 2 3 4 5 .
ตรวจสอบความเรียบร้อย
- ตรวจสอบ arp cache ด้วยคำสั่ง arp -a
- ผลลัพธ์จะประมาณนี้
192.168.1.1 at 00:90:d0:44:af:76 [ether] PERM on eth0
- สังเกตง่ายๆ ต้องมี PERM ถึงจะสมบูรณ์ เพราะจะบ่งบอกว่าเป็น static ไม่ใช่ dynamic นะจ้ะ
เพิ่มเติม
- บทความก่อนหน้านี้ เขียนไว้แต่มันไม่ยอมทำงานตอนบูตระบบใหม่อ่ะ ตรงคำสั่ง arp ที่เดียวเลย
- สาเหตุเพราะว่า ตอนนั้นเราไม่ได้ระบุ NIC ว่าจะตั้งให้ตัวใหนคำสั่งนั้นจริงไม่สามารถทำงานได้ตอนบูตระบบหว่า งง
arp -i eth0 -s 192.168.1.1 00:00:00:11:11:11
- แล้วทำไมมันทำงานได้ตอนเราสั่ง sudo /etc/init.d/myscriptd start (มันรู้ได้ไงฟะว่าเราสั่ง NIC ใหนหว่า)
อ้างอิง
No comments:
Post a Comment