/etc/network/interfaces 語法的詳細解釋?
我了解如何使用的非常基本的概念
/etc/network/interfaces
,但我在網上找到的都是範例,一個又一個範例,我可以從中複製粘貼。我想念的是對語法的解釋,對命令含義的解釋以及命令需要的順序。我想了解,因為大多數時候複製粘貼是不夠的,因為我不是在新機器上工作,所以我不能只覆蓋現有配置,因為它會破壞很多東西。man interfaces
不是很有幫助,因為它寫得很複雜。我有的範例問題:一行
inet
中的iface
確切含義(我什至在手冊頁中都找不到),一行manual
中的iface
確切含義是什麼(許多範例都使用它,但根據手冊頁,它需要一個額外的配置文件,這範例不存在),我什麼時候使用或需要它們?什麼時候不?當我創建一個網橋時,介面到底發生了什麼?
好吧,讓我們把它分成幾部分,以便於理解
/etc/network/interfaces
:鏈路層+介面類型選項(通常是每個介面節的第一節,並在手冊頁中稱為地址族+方法
interfaces(5)
):
auto *interface*
– 在引導時啟動介面。這就是lo
介面使用這種連結配置的原因。
allow-auto *interface*
- 如同auto
allow-hotplug *interface*
– 當檢測到“熱插拔”事件時啟動介面。在現實世界中,這與在相同的情況下使用,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
創建了一個在乙太網設備上呼叫的節。應該創建一個點對點介面,並且它可以有不同的方式來獲取地址,這樣會將這個介面的配置轉發給腳本。元組/ +將定義將使用的IP 協議的版本以及該地址的配置方式(, , …)。線上 Debian 手冊將為您提供有關此的更多詳細資訊。eth0``iface ppp0``inet wvdial``wvdialconf``inet``inet6``option``static``dhcp``scripts
乙太網介面選項:
inet static
– 定義靜態 IP 地址。
inet manual
– 不為介面定義 IP 地址。通常由作為橋接或聚合成員的介面、需要在混雜模式下執行的介面(例如埠鏡像或網路 TAP)或配置了 VLAN 設備的介面使用。這是一種在沒有 IP 地址的情況下保持介面正常執行的方法。
inet dhcp
– 通過 DHCP 協議獲取 IP 地址。
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
– 網路遮罩。如果使用 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
在介面啟動 5 秒後強制 100Mbps 全雙工。
hwaddress ether 00:00:00:00:00:00
- 更改介面的mac地址,而不是使用硬編碼成rom或算法生成的mac地址。您可以使用關鍵字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
– 無線:為您的 SSID 設置十六進制編碼的 PSK。
ip_rp_filter 1
-啟用反向路徑過濾器。在您有 2 條到主機的路由的情況下很有用,這將強制數據包從它來的地方返回(相同的介面,使用它的路由)。範例:您已連接到您的 lan(192.168.1.1/24
),並且您有一個 dlna 伺服器,其中一個介面位於您的 lan(192.168.1.10/24
) 上,另一個介面位於 dmz 上,用於執行管理任務 (172.16.1.1/24
)。在從您的電腦到 dlna dmz ip 的 ssh 會話期間,資訊需要返回給您,但將永遠掛起,因為您的 dlna 伺服器將嘗試直接通過它的 lan 介面傳遞響應。啟用 rp_filter 後,它將確保連接將從原來的位置返回。更多資訊在這裡。其中一些選項不是可選的。例如,如果您將 IP 地址放在沒有網路遮罩的介面上,Debian 會警告您。
您可以在此處找到更多好的網路配置範例。
相關資料:
/etc/network/interfaces
包含與網路配置文件相關資訊的連結: