/etc/network/interfaces 語法的詳細解釋?

/etc/network/interfaces 語法的詳細解釋?

我了解如何使用的非常基本的概念/etc/network/interfaces,但我在網路上找到的只是範例,一個又一個範例,我可以從中複製貼上。我缺少的是語法的解釋、命令的含義以及命令所需的順序的解釋。我想理解,因為大多數時候複製貼上是不夠的,因為我不是在新機器上工作,所以我不能只覆蓋現有配置,因為它會破壞很多東西。man interfaces不是很有幫助,因為它寫得很複雜。

我有的示例問題:inetin a ifaceline 的確切含義是什麼(我什至在手冊頁中找不到它),manualin a ifaceline 的確切含義是什麼(許多示例使用它,但根據在線幫助頁,它需要一個額外的配置文件,其中示例沒有出現),我什麼時候使用或需要它們?什麼時候不呢?當我創建橋時,介面到底會發生什麼?

答案1

好吧,讓我們把它分成幾部分,以便於理解/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創建了一個eth0在乙太網路設備上調用。iface ppp0應該創建一個點對點接口,並且它可以有不同的方式來獲取地址,例如inet wvdial將該接口的配置轉發給wvdialconf腳本。元組inet/ inet6+option將定義版本IP協定將使用的位址以及該位址的配置方式(staticdhcpscripts...)。這線上 Debian 手冊將為您提供更多有關此內容的詳細資訊。

乙太網路介面選項:

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 中或由演算法產生的位址。您可以使用關鍵字random來取得隨機的 MAC 位址。

dns-nameservers– 名稱伺服器的 IP 位址。需要resolvconf包。這是一種集中所有資訊/etc/network/interfaces而不是用於/etc/resolv.confDNS 相關配置的方法。不要resolv.conf手動編輯配置文件,因為它會被系統中的程式動態更改。

dns-search example.net– 將 example.net 作為網域附加到主機查詢中,建立 FQDN。domain選項/etc/resolv.conf

wpa-ssid– 無線:設定無線 WPA SSID。

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網頁設定檔相關的資訊的連結:

答案2

我還要補充一點:

  • 介面用於 ifup/ifdown 服務。
  • 當你使用allow-hotplug時,它不會以ifup/ifdown開始,因為你需要使用標誌--allow=hotplug。

您可以使用 --verbose 標誌來追蹤 ifup 發生的情況。

我對此不是 100% 確定,但似乎基本上當調用 ifup 時,您將使用 up 執行 /etc/network/interfaces 中的所有內容...如果沒有另外說明的話。

我不確定它與以下內容有何關係:服務網絡...

如果有人能指出通話後發生的事情,那就太好了:

service networking restart

與 ifup/ifdown 相關。

答案3

如果您在使用該軟體包時需要新增選項resolvconf,即在 Ubuntu 上,您可以將該配置放入/etc/resolvconf/resolv.conf.d/base

# /etc/resolvconf/resolv.conf.d/base
options timeout:1 attempts:1 rotate

答案4

屬性名稱的重要一點是:

沒有任何具有標準描述的文件。這意味著該檔案是實現定義的

可以是小寫、大寫或混合大小寫

“-”或“_”並不重要

不能包含空格和製表符

據 ifupdown 消息來源稱

除了一些常見的名稱,如“pre-up”“down”等,不能用其他方式寫

相關內容