Related Posts Plugin for WordPress, Blogger...

2009年10月8日

interfaces

/etc/network/interfaces

interfaces 中若為空白或 # 開頭,則視之為註解,系統會自動略過。

首先,您永遠都會想要一個 loopback 介面。因此 interfaces 介面會有這麼兩行

auto lo
iface lo inet loopback

接下來您可能想設定乙太網路卡的 IP 位址及路由,假設位址是 192.168.0.1,網路遮罩為 255.255.255.0,路由器位址是 192.168.0.254。那麼請在檔案中加入

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.1
network 192.168.0.0 # 此行不寫無妨
netmask 255.255.255.0
broadcast 192.168.0.255 # 此行不寫無妨
gateway 192.168.0.254

或您的介面藉由 (dhcp)? 動態網路設定,那麼可以如此寫

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

數個乙太介面可以寫為

auto lo eth0 eht1 eth2
iface lo inet loopback
iface eth0 inet dhcp
iface eth1 inet dhcp
iface eth2 inet dhcp

如果要讓更動立刻生效,最有效的辦法是重新開機,最聰明的辦法是以 root 身份下達以下指令

# /etc/init.d/networking restart

以上是最基本與最常用的。接下來將仔細介紹語法、設定方式及進階的用法。

如 果您注意到設定的內容了,大概已經發現每個網路介面設定是起於 "auto"、"iface" 兩個關鍵字,
而關鍵字之後接上網路介面名稱,網路類別以及設定方法,事實上除了 "auto"、 "iface" 之外,
還有一個 "mapping"。

auto
auto 關鍵字乃指定每個「物理網路介面」,你可以單一行指定介面名稱,也可以在檔案中使用數行。在開機時,系統命令稿會執行 "ifup -a",而這個指令會找出所有的 auto 設定節,並依序啟動該網路介面。

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp

或以數行表示

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

iface 設定選項

關鍵字 "iface" 設定的則是「邏輯介面」(logical interface),倘若未使用 "mapping" 設定,則 iface 等於純粹用於設定「實體介面」(physical interface),稍後提到 "mapping" 會說明差別。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.254

依照範例設定而言,iface 之後接的是介面名稱(之後會介紹 logical interface 與 physical interface),
以上顯示的即是 eth0。之後則是網路協定類別(address family),有以下三種分類

* inet - TCP/IP networking (IPv4)
* ipx - IPX networking
* inet6 - IPv6 networking

之後看到的 static 選項稱為 method of the interface,也就是設定的方式,通常用到的是

* inet - TCP/IP networking (IPv4)
o loopback
o static
o manual
o dhcp
o bootp
o ppp
o wvdail
* ipx - IPX networking
o static
o dynamic
* inet6 - IPv6 networking
o loopback
o static
o v4tunnel

每種設定方式對於之後的細部設定參數都有所不同。細節請參考 interfaces(5)。以 TCP/IP networking 為例

auto eth0
iface eth0 inet static
address 192.168.0.1
network 192.168.0.0 # 此行不寫無妨
netmask 255.255.255.0
broadcast 192.168.0.255 # 此行不寫無妨
gateway 192.168.0.254

我們可看到以上屬於 inet static 的設定有 address、network、netmask、broadcast、gateway,您大概注意到每行開頭的空白縮格,這些空白僅是為了閱讀設定便利,無縮格亦可。

另 外一些強大的模組化命令稿機制便是 "up"、"pre-up"、"down"、"post-down" 等參數。這些參數的用途在於介面啟動或停止時,執行特定的命令。例如可在介面啟動時,自動載入您欲設定的 iptables 規則等,或是藉由 macchanger 指令在開機時更改網路介面的 MAC 位址。如果您要進行的設定是不分網路介面的,那麼可以把相關的命令寫成命令稿丟到 /etc/network/if-.d/,那麼系統便會自動以 run-parts 逐一執行之。
mapping 設定選項

mapping 是 ifupdown 的主要特色之一,本文介紹的語法為最新版,使用 woody 的版本語法大有不同。這個選項可用來執行特定的指令,並決定目前的環境以決定網路組態。

例 如伺服器上有兩張乙太網路卡,一張網路介面接於區域網路,作為 NAT 服務。另一張介面則接於廣域網路或寬頻網路,透過 (DHCP)? 取得網路位址。大部份時候必須逐一確認兩張網路卡的位址,以便設定組態。以下的範例用於可直接判別某個特定 MAC 位址的網路設備是否存在,每張不同的網路介面無法跨網域存取其他網路設備的位址。

auto eth0 eth1
mapping eth0 eth1
script /path/to/get-mac-address.sh
map 11:22:33:44:55:66 lan
map AA:BB:CC:DD:EE:FF internet
iface lan inet static
address 192.168.42.1
netmask 255.255.255.0
pre-up /usr/local/sbin/enable-masq $IFACE
iface internet inet dhcp
pre-up /usr/local/sbin/firewall $IFACE

設 定中以 "script" 參數明確指出執行的程式,此程式會逐一的在指定的網路介面上執行,並傳回特定的字串,以這裡的範例為例,取得特定的網路設備位址。而 map 11:22:33:44:55:66 lan,則是若 11:22:33:44:55:66 存在,則指定「邏輯介面」(logical interface) 為 lan,若為 AA:BB:CC:DD:EE:FF 則指定為 internet。

下面的設定區塊中則指示不同的「邏輯介面」則給予不同的設定。例子中

iface lan inet static
address 192.168.42.1
netmask 255.255.255.0
pre-up /usr/local/sbin/enable-masq $IFACE

指 示 lan 邏輯介面設定位址為 192.168.42.1,網路遮罩為 255.255.255.0,並在啟動時執行 /usr/local/sbin/enable-masq $IFACE,其中 $IFACE 變數則是實體介面(physical interface),
非 "eth0" 即 "eth1",這個變數會傳給 /usr/local/sbin/enable-masq ,因此程式便可執行正確的設定。

iface internet inet dhcp
pre-up /usr/local/sbin/firewall $IFACE

而 internet 邏輯介面,則以 dhcp 啟動,並執行 /usr/local/sbin/firewall。

除 了這樣的用途,如果你擁有膝上型電腦,想必偶爾於工作、客戶、家中甚至咖啡館使用。
不同的網路環境需要不同的組態,如果你必須在移動之後不停的更改組態, 實在非常麻煩。
試著想想,如果只需要設定一次,未來只要插上網路線,系統便自動且聰明的決定使用何種組態
那豈不方便?請試試 guessnet 吧。
Categories: , ,

0 意見: