คำอธิบายโดยละเอียดที่ดีของไวยากรณ์ / etc / network / interfaces?


139

ฉันเข้าใจแนวคิดพื้นฐานมากเกี่ยวกับวิธีใช้/etc/network/interfacesแต่สิ่งที่ฉันพบทางออนไลน์คือตัวอย่างตัวอย่างหลังจากตัวอย่างซึ่งฉันสามารถคัดลอกวางได้ สิ่งที่ฉันพลาดคือคำอธิบายของไวยากรณ์คำอธิบายความหมายของคำสั่งและคำสั่งที่จำเป็นต้องใช้คำสั่ง ฉันต้องการที่จะเข้าใจเพราะเวลาส่วนใหญ่การคัดลอกวางไม่เพียงพอเพราะฉันไม่ได้ทำงานกับเครื่องใหม่ดังนั้นฉันจึงไม่สามารถเขียนทับการกำหนดค่าที่มีอยู่เพราะมันจะทำลายสิ่งต่างๆมากมาย man interfacesไม่ได้มีประโยชน์มากเพราะมันเขียนซับซ้อนมาก

ตัวอย่างคำถามที่ฉันมี: สิ่งใดinetในifaceบรรทัดที่มีความหมายอย่างแน่นอน (ฉันไม่สามารถหาได้ใน manpage) สิ่งใดที่manualอยู่ในifaceบรรทัดที่มีความหมายทั้งหมด (ตัวอย่างมากมายใช้มัน แต่ตาม manpage จะต้องใช้ไฟล์ config เพิ่มเติม ตัวอย่างไม่ปรากฏ) ฉันจะใช้หรือต้องการเมื่อใด เมื่อไหร่ เมื่อฉันสร้างบริดจ์จะเกิดอะไรขึ้นกับส่วนต่อประสาน


4
หน้าคนบอกสิ่งที่เกิดขึ้นหลังจากชื่ออินเทอร์เฟซคือตระกูลที่อยู่ที่ใช้อินเทอร์เฟซ "inet" เป็นชื่อสำหรับ IPv4, inet6 สำหรับ ipv6 นอกจากนี้ยังมี ipx, x25, appletalk ... แม้ว่า ifupdown จะจัดการกับ inet / inet6 / ipx เท่านั้นเมื่อหน้า man อธิบาย manualหมายความว่าหากการอัปเดตไม่ได้ทำอะไรเกี่ยวกับพวกเขาคุณต้องทำด้วยตัวเอง
Stéphane Chazelas

คำตอบ:


168

ทีนี้มาแบ่งเป็นชิ้น ๆ เพื่อให้เข้าใจง่ายขึ้น/etc/network/interfaces:

ลิงก์เลเยอร์ + ตัวเลือกประเภทอินเตอร์เฟส (โดยทั่วไปเป็นตัวแรกของแต่ละอินเตอร์เฟส stanza และเรียกว่า address family + method โดยinterfaces(5)manpages):

auto interface- เริ่มต้นอินเตอร์เฟสเมื่อบู๊ต นั่นเป็นเหตุผลที่loอินเตอร์เฟสใช้การกำหนดค่าการเชื่อมโยงชนิดนี้

allow-auto interface - เหมือนกับ auto

allow-hotplug interface- เริ่มอินเทอร์เฟซเมื่อตรวจพบเหตุการณ์ "hotplug" ในโลกแห่งความเป็นจริงสิ่งนี้ถูกใช้ในสถานการณ์เดียวกันautoแต่ความแตกต่างคือมันจะรอให้เหตุการณ์เช่น "ถูกตรวจพบโดย udev hotplug api" หรือ "สายเคเบิลที่เชื่อมโยง" ดู " สิ่งที่เกี่ยวข้อง (ฮอตปลั๊ก) " สำหรับข้อมูลเพิ่มเติม

ตัวเลือกเหล่านี้เป็นตัวเลือก "เลเยอร์ 2" ค่อนข้างมากตั้งค่าสถานะลิงก์บนอินเทอร์เฟซและไม่เกี่ยวข้องกับ "เลเยอร์ 3" (การกำหนดเส้นทางและการกำหนดแอดเดรส) ตัวอย่างเช่นคุณอาจมีการรวมลิงก์ที่อินเตอร์เฟส bond0 ต้องขึ้นอยู่กับสถานะลิงก์และสมาชิกอาจเพิ่มขึ้นหลังจากเหตุการณ์สถานะลิงก์:

auto bond0
iface bond0 inet manual
        down ip link set $IFACE down
        post-down rmmod bonding
        pre-up modprobe bonding mode=4 miimon=200
        up ip link set $IFACE up mtu 9000
        up udevadm trigger

allow-hotplug eth0
iface eth0 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

allow-hotplug eth1
iface eth1 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

ดังนั้นวิธีนี้ฉันจะสร้างการรวมลิงค์และอินเทอร์เฟซจะถูกเพิ่มเข้าไปและลบออกในสถานะเคเบิลลิงค์

ประเภทอินเตอร์เฟสทั่วไปส่วนใหญ่:

ตัวเลือกทั้งหมดด้านล่างเป็นคำต่อท้ายไปยังส่วนต่อประสานที่กำหนดไว้ ( iface <Interface_family>) โดยพื้นฐานแล้วiface eth0สร้าง stanza ที่เรียกeth0บนอุปกรณ์อีเธอร์เน็ต iface ppp0ควรสร้างอินเตอร์เฟสแบบจุดต่อจุดและอาจมีวิธีที่แตกต่างกันในการรับที่อยู่เช่นinet wvdialที่จะส่งต่อการกำหนดค่าของอินเทอร์เฟซนี้ไปยังwvdialconfสคริปต์ tuple ที่inet/ inet6+ optionจะกำหนดรุ่นของIP โปรโตคอลที่จะใช้และวิธีการที่อยู่นี้จะถูกกำหนดค่า ( static, dhcp, scripts... ) คู่มือ Debian ออนไลน์จะให้รายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้

ตัวเลือกบนอินเตอร์เฟส Ethernet:

inet static - กำหนดที่อยู่ IP คงที่

inet manual- ไม่ได้กำหนดที่อยู่ IP สำหรับอินเทอร์เฟซ โดยทั่วไปจะใช้โดยอินเตอร์เฟสที่เป็นบริดจ์หรือสมาชิกรวมส่วนต่อประสานที่จำเป็นต้องทำงานในโหมดที่หลากหลาย ( เช่นการมิเรอร์พอร์ตหรือ TAP เครือข่าย ) หรือมีอุปกรณ์ VLAN ที่กำหนดค่าไว้ เป็นวิธีที่จะรักษาส่วนต่อประสานโดยไม่มีที่อยู่ IP

inet dhcp - รับที่อยู่ IP ผ่านโปรโตคอล DHCP

inet6 static - กำหนดที่อยู่ IPv6 แบบคงที่

ตัวอย่าง:

# Eth0
auto eth0
iface eth0 inet manual
    pre-up modprobe 8021q
    pre-up ifconfig eth0 up
    post-down ifconfig eth0 down

# Vlan Interface
auto vlan10
iface vlan10 inet static
        address 10.0.0.1
        netmask 255.255.255.0
        gateway 10.0.0.254
        vlan-raw-device eth0
        ip_rp_filter 0

ตัวอย่างนี้จะแสดงeth0ขึ้นมาและสร้างอินเตอร์เฟส VLAN ที่เรียกvlan10ว่าจะประมวลผลหมายเลขแท็ก 10 บนอีเธอร์เน็ตเฟรม

ตัวเลือกทั่วไปภายในส่วนต่อประสาน (ชั้น 2 และ 3):

address - ที่อยู่ IP สำหรับอินเตอร์เฟสคงที่ที่กำหนดค่า IP

netmask- หน้ากากเครือข่าย สามารถ ommited ถ้าคุณใช้ที่อยู่ cidr ตัวอย่าง:

iface eth1 inet static
    address 192.168.1.2/24
    gateway 192.168.1.1

gateway- เกตเวย์เริ่มต้นของเซิร์ฟเวอร์ โปรดใช้ความระมัดระวังเพียงคนเดียวเท่านั้น

vlan-raw-device - บนอินเตอร์เฟส VLAN ให้นิยาม "บิดา" ของมัน

bridge_ports - บนอินเตอร์เฟสบริดจ์กำหนดสมาชิก

down- ifdownใช้คำสั่งต่อไปนี้เพื่อลงอินเตอร์เฟซแทน

post-down - การดำเนินการดำเนินการทันทีหลังจากอินเทอร์เฟซไม่ทำงาน

pre-up - การดำเนินการก่อนที่อินเทอร์เฟซจะขึ้น

up- ifupใช้คำสั่งต่อไปนี้เพื่อขึ้นอินเตอร์เฟซแทน มันขึ้นอยู่กับจินตนาการของคุณจะใช้ตัวเลือกใด ๆ iputilsที่มีอยู่บน ตัวอย่างเช่นเราสามารถใช้up ip link set $IFACE up mtu 9000เพื่อเปิดใช้งานเฟรมจัมโบ้ระหว่างการupดำเนินการ (แทนที่จะใช้mtuตัวเลือก) คุณสามารถเรียกใช้ซอฟต์แวร์อื่น ๆ เช่นup sleep 5; mii-tool -F 100baseTx-FD $IFACEบังคับให้ 100Mbps เต็มดูเพล็กซ์ 5 วินาทีหลังจากอินเทอร์เฟซขึ้น

hwaddress ether 00:00:00:00:00:00- เปลี่ยนที่อยู่ mac ของอินเทอร์เฟซแทนการใช้ที่เข้ารหัสใน rom หรือสร้างขึ้นโดยอัลกอริทึม คุณสามารถใช้คำหลักrandomเพื่อรับที่อยู่ mac แบบสุ่ม

dns-nameservers- ที่อยู่ IP ของเนมเซิร์ฟเวอร์ ต้องใช้resolvconfแพคเกจ เป็นวิธีรวบรวมข้อมูลทั้งหมด/etc/network/interfacesแทนที่จะใช้/etc/resolv.confสำหรับการกำหนดค่าที่เกี่ยวข้องกับ DNS อย่าแก้ไขresolv.confไฟล์การกำหนดค่าด้วยตนเองเนื่องจากจะมีการเปลี่ยนแปลงแบบไดนามิกโดยโปรแกรมในระบบ

dns-search example.net- ผนวก example.net เป็นโดเมนสำหรับการสืบค้นของโฮสต์สร้าง FQDN ตัวเลือกdomainของ/etc/resolv.conf

wpa-ssid - ไร้สาย: ตั้งค่า WPA ไร้สาย SSID

mtu- ขนาดMTU mtu 9000= จัมโบ้เฟรม มีประโยชน์ถ้ากล่อง Linux ของคุณเชื่อมต่อกับสวิตช์ที่รองรับขนาด MTU ที่ใหญ่ขึ้น สามารถทำลายโพรโทคอลบางตัว (ฉันมีประสบการณ์ไม่ดีกับเฟรม snmp และจัมโบ้)

wpa-psk - ไร้สาย: ตั้งค่า PSK ที่เข้ารหัสเป็นเลขฐานสิบหกสำหรับ SSID ของคุณ

ip_rp_filter 1- เปิดใช้งานตัวกรองเส้นทางย้อนกลับ มีประโยชน์ในสถานการณ์ที่คุณมี 2 เส้นทางไปยังโฮสต์และสิ่งนี้จะบังคับให้แพ็กเก็ตกลับมาจากที่ที่มันมา (อินเทอร์เฟซเดียวกันโดยใช้เส้นทางของมัน) ตัวอย่าง: คุณเชื่อมต่อกับ LAN ของคุณ ( 192.168.1.1/24) และคุณมีเซิร์ฟเวอร์ dlna ที่มีหนึ่งอินเทอร์เฟซบน LAN ของคุณ ( 192.168.1.10/24) และอินเทอร์เฟซอื่น ๆ บน dmz เพื่อดำเนินงานด้านการดูแลระบบ ( 172.16.1.1/24) ในระหว่างเซสชัน ssh จากคอมพิวเตอร์ของคุณไปยัง dlna dmz ip ข้อมูลจะต้องกลับมาหาคุณ แต่จะหยุดตลอดไปเพราะเซิร์ฟเวอร์ dlna ของคุณจะพยายามส่งการตอบสนองโดยตรงผ่านทางอินเทอร์เฟซ lan เมื่อเปิดใช้งาน rp_filter จะช่วยให้มั่นใจได้ว่าการเชื่อมต่อจะกลับมาจากที่ที่มันมา ข้อมูลเพิ่มเติมที่นี่

ตัวเลือกเหล่านี้บางตัวไม่ได้เลือกหรือไม่ก็ได้ Debian จะเตือนคุณหากคุณใส่ที่อยู่ IP ในอินเทอร์เฟซที่ไม่มีเน็ตมาสค์ตัวอย่างเช่น

คุณสามารถค้นหาตัวอย่างที่ดีมากขึ้นในการกำหนดค่าเครือข่ายที่นี่

สิ่งที่เกี่ยวข้อง :

ลิงก์ที่มีข้อมูลที่เกี่ยวข้องกับ/etc/network/interfacesไฟล์กำหนดค่าเครือข่าย:


ขอบคุณสิ่งนี้ช่วยได้มาก ไม่inetมีอะไรจะทำอย่างไรกับ "อินเทอร์เน็ต"? ฉันอ่านบางคนว่ามันหมายถึง "IPv4" และinet6หมายถึง "IPv6" แต่คำว่า "inet" นั้นสับสนจริง ๆ เมื่อคุณเห็นมันและสับสนกับคำว่า "อินเทอร์เน็ต" สั้น ๆ และชื่อที่มีการใช้เช่นeth0นี้ถูกกำหนดไว้หรือฉันสามารถเลือกด้วยตัวเองได้หรือไม่? หากฉันมีอะแดปเตอร์ LAN มากกว่าหนึ่งฉันจะรู้ได้อย่างไรว่าethอะแดปเตอร์ LAN ตัวใดเป็นของใคร?
Foo Bar

2
ทั้งสอง พวกเขาช่วยกันกำหนดวิธีการได้มาซึ่งที่อยู่ IP (dhcp, สแตติก, สคริปต์ ppp, ไม่มีที่อยู่) และรุ่นของโปรโตคอล ip ( inet= v4 และinet6= v6) ชื่ออินเทอร์เฟซนั้นขึ้นอยู่กับการกระจายที่คุณใช้และวิธีudevการกำหนดค่า Debian ใช้eth*และwlan*เชื่อมต่อกับสายเคเบิลและไร้สาย Fedora ใช้รูปแบบ biosdevname ซึ่งem0เป็นอินเทอร์เฟซอีเธอร์เน็ตในตัวเครื่องแรกบนเมนบอร์ดของคุณและp<slot>p<eth port>ชื่อสำหรับ PCI nic คุณสามารถแก้ไขชื่อเครือข่ายหรือสร้างนามแฝงบน/etc/udev/rules.d/70-persistent-net.rules interfaces

2
เกี่ยวกับ "เกตเวย์ - เกตเวย์เริ่มต้นของเซิร์ฟเวอร์ใช้ความระมัดระวังในการใช้หนึ่งในผู้ชายคนนี้เท่านั้น" นั่นคือหนึ่งต่อ stanza หรือหนึ่งอินเตอร์เฟสของเกตเวย์ระหว่าง stanzas ทั้งหมดหรือไม่
ctbrown

2
ควรเป็นประตูเดียวในบรรดาบททั้งหมดหรือคุณจะมีปัญหากับเส้นทางเริ่มต้นของคุณ หากต้องการทำงานกับหลายเกตเวย์ / หลายลิงก์ต้องใช้การคิดร่วมกับ iptables + package package + กฎ ip

หนึ่งแบบสอบถามเล็ก ๆ ถ้าในไฟล์นี้ฉันมี iface eth0 inet แบบคงที่และถ้าฉันเขียน IP บางตัวกับฟิลด์ที่อยู่นี่หมายความว่า IP นี้เฉพาะที่ฉันเพิ่งเขียนจะถูกผูกมัดกับที่อยู่ MAC ของระบบของฉันหรือไม่
k10

0

ฉันจะเพิ่มที่:

  • อินเตอร์เฟสสำหรับบริการ ifup / ifdown
  • เมื่อคุณใช้ allow-hotplug มันจะไม่เริ่มต้นด้วย ifup / ifdown, bcos u จำเป็นต้องใช้ flag --allow = hotplug

คุณอาจติดตามสิ่งที่เกิดขึ้นกับ ifup โดยใช้ --verbose flag

ฉันไม่ได้ทำสิ่งนี้ 100% แต่ดูเหมือนว่าโดยทั่วไปเมื่อ ifup ชื่อ u จะดำเนินการทั้งหมดจาก / etc / network / interfaces พร้อม up ... หากไม่ได้ระบุไว้เป็นอย่างอื่น

ฉันไม่แน่ใจว่าเกี่ยวข้องกับ: เครือข่ายบริการ ...

จะดีถ้ามีคนชี้ให้เห็นว่าเกิดอะไรขึ้นหลังจากโทร:

service networking restart

เกี่ยวข้องกับ ifup / ifdown

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.