การใช้ซอฟต์แวร์ของฉันนี้เพื่อการกำหนดค่าเครือข่ายนั้นง่ายมาก
http://code.google.com/p/badvpn/wiki/NCD
โปรแกรม NCD ต่อไปนี้จะทำ นอกจากนี้ยังแสดงวิธีที่คุณสามารถขยายการกำหนดค่าในกรณีนี้โดยการเรียกใช้บางอย่างเมื่อเครือข่ายขึ้น / ลง
process eth0 {
# Set device.
var("eth0") dev;
# Wait for device to appear, set it up, and wait for cable to be plugged in.
net.backend.waitdevice(dev);
net.up(dev);
net.backend.waitlink(dev);
# DHCP configuration.
# net.ipv4.dhcp() will block here until it obtaines an IP address.
# It doesn't check the obtained address in any way,
# so as a basic security measure, do not proceed if it is local.
net.ipv4.dhcp(dev) dhcp;
ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
ifnot(test_local);
# Assign IP address to interface, as obtained by DHCP.
net.ipv4.addr(dev, dhcp.addr, dhcp.prefix);
# Add default route.
net.ipv4.route("0.0.0.0", "0", dhcp.gateway, "20", dev);
# Add DNS servers.
net.dns(dhcp.dns_servers, "20");
# Run an external program when network comes up or goes down.
list("/some/program/to/run/when/up", "argument") do;
list("/some/program/to/run/when/down", "argument") undo;
run(do, undo);
}
โปรดทราบว่าสิ่งนี้จะไม่เพียง แต่จัดการกับสายเคเบิลเครือข่ายที่ถูกเสียบเข้าหรือออก แต่ยังรวมถึงส่วนต่อประสานเครือข่ายที่ปรากฏและหายไปเอง (มีประโยชน์หากเป็น USB)
ข้อดีของการใช้ NCD เมื่อเทียบกับซอฟต์แวร์อื่น ๆ เช่น ifplugd คือการออกแบบที่ให้ความยืดหยุ่นที่ดีเยี่ยม โดยทั่วไปจะช่วยให้คุณสามารถตั้งโปรแกรมกำหนดค่าเครือข่ายของคุณเองซึ่งแตกต่างจากการจำกัดความสามารถของฮาร์ดโค้ด
UPDATE: ฉันได้สร้างแพ็คเกจ Ubuntu สำหรับ BadVPN และ NCD แล้ว ฉันได้อัปเดตวิกิด้วยคำแนะนำในการติดตั้งและการใช้งานสำหรับ Ubuntu ด้วย: http://code.google.com/p/badvpn/wiki/NCD#Running_it
ifplugd
และnetplugd
ดูเหมือนไร้ผู้ดูแล อย่างไรก็ตามคำถามที่คล้ายกันนี้ดูเหมือนว่าจะมีคำตอบที่ดี (ง่าย) โดยใช้กฎ udev - ไม่จำเป็นต้องมีแพ็คเกจเพิ่มเติม serverfault.com/a/312296/275255