我了解如何使用的非常基本的概念/etc/network/interfaces
,但我在網路上找到的只是範例,一個又一個範例,我可以從中複製貼上。我缺少的是語法的解釋、命令的含義以及命令所需的順序的解釋。我想理解,因為大多數時候複製貼上是不夠的,因為我不是在新機器上工作,所以我不能只覆蓋現有配置,因為它會破壞很多東西。man interfaces
不是很有幫助,因為它寫得很複雜。
我有的示例問題:inet
in a iface
line 的確切含義是什麼(我什至在手冊頁中找不到它),manual
in a iface
line 的確切含義是什麼(許多示例使用它,但根據在線幫助頁,它需要一個額外的配置文件,其中示例沒有出現),我什麼時候使用或需要它們?什麼時候不呢?當我創建橋時,介面到底會發生什麼?
答案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協定將使用的位址以及該位址的配置方式(static
、dhcp
、scripts
...)。這線上 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.conf
DNS 相關配置的方法。不要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
屬性名稱的重要一點是:
沒有任何具有標準描述的文件。這意味著該檔案是實現定義的
可以是小寫、大寫或混合大小寫
“-”或“_”並不重要
不能包含空格和製表符
除了一些常見的名稱,如“pre-up”“down”等,不能用其他方式寫