Networking

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

  • March 22, 2021

我了解如何使用的非常基本的概念/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包含與網路配置文件相關資訊的連結:

引用自:https://unix.stackexchange.com/questions/128439