2012年10月31日 星期三

(1) Debian/GNU Network Setting

(1) Debian/GNU Network Setting

大部分的Linux distributions都會設計兩種設定網路方式:Network Manager的動態設定以及傳統的Network設定。就Debian的設定而言,如果安裝了X window則預設會是以Network Manager來管理網路設定。本文專注在使用手動設定TCP/IP網路設定。

了解Linux network devices的命名方式

使用ip指令來觀察我們的網路裝置:
maxsolar@Debian6:~$ ip a
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
    link/ether f4:6d:04:7b:be:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::f66d:4ff:fe7b:be13/64 scope link 
       valid_lft forever preferred_lft forever
可能看到的裝置會有:
  • lo
  • 一個loopback device。這個裝置永遠存在,即使系統沒有安裝任何的NIC。他是一個虛擬裝置,可供其他應用程式再沒有實體裝置時仍能運作。例如沒有NIC的時候,loopback裝置會自動拿127的網段當作本機位置。同樣的道理在檔案系統也是如此;掛載一個image到某個目錄下使用,這個image本身只是檔案系統裡的一個檔案,並不是實體裝置;利用loopback來他模擬成一個裝置並加以使用,就是loopback device的功能。
  • eth0
  • 一個ethernet device,精確來說只是一個interface,由0起算;因此一個4ports的網卡會有eth{0,3}這幾個裝置。
  • sit0
  • 一個將ipv4封包封裝成ipv6的裝置,通常使用於ipv4/ipv6混合的網路環境。
  • wlan0
  • 無線網路的裝置。
  • tr0
  • 一個IBM的token ring環境的device。
  • fddi0
  • 一個Fibre distributed data interface裝置,常用光纖骨幹的玩家一定不陌生。
  • ppp0
  • 一個Point-to-Point的連線裝置,例如家裡撥接上網或是使用vpn時會使用。
以eth0的訊息而言,link/ether顯示的是layer2(data-link layer)的資訊,也就是MAC address;inet/inet6分別表示ipv4/ipv6的位置。

Debian重要的網路設定檔

  • /etc/network/interfaces
  • 標準的ethernet設定檔。
  • /etc/resolv.conf
  • 所有unix-like系統的DNS設定--沒有他雖然可以連上internet但就沒有名稱解析可用了。
  • /etc/hostname
  • 儲存local主機名稱的檔案。

DHCP v.s static IP

  • /etc/network/interfaces
  • 一個設定dhcp最精簡的eth0範例如下:
    auto lo
    iface lo inet loopback
               
    auto eth0
    iface eth0 inet dhcp
    夠簡單吧!
    設定檔有幾個潛規則:1.變數(左側)與設定值(右側)必須是小寫。2.沒有先後順序的關係。

    一個設定固定ip最精簡的設定檔如下:
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
     address 192.168.1.5
     netmask 255.255.255.0
     gateway 192.168.1.254
    Debian不允許CIDR表示法,必須使用netmask表示遮罩。更複雜一點的範例如下:
    auto eth0
    iface eth0 inet static
    allow-hotplug eth0
     address 192.168.1.5
     netmask 255.255.255.0
     gateway 192.168.1.254
     network 192.168.1.0
     broadcast 192.168.1.255
     dns-search hello.org
     dns-nameservers 192.168.1.254 168.95.192.1
     up sleep 3; ethtool -s eth0 autoneg off speed 1000 duplex full
    Debian允許各個不同的應用程式使用不同的nameserver。假設情況單純,通常一個nameserver設定檔就夠了(/etc/resolv.conf),但是假設不同介面需要使用不同的名稱解析,單靠修改/etc/resolv.conf則會相當辛苦;因此有了resolvconf這隻程式--不再單純依靠/etc/resolv.conf,可以讓不同介面使用不同的名稱解析,也就是dns-nameserver這個參數。
    在interfaces裡直接寫入command名稱是很直覺的一件事情,這裡設定啟動之後等待3秒後在啟用ethtool,當然也支援mii-tool,但是需注意有些driver並不支援ethtool或是mii-tool,建議在設定之前先直接在終端機上試試看,再寫入到設定檔裡。

重新啟動網路服務使設定生效

Debian如果有安裝X的話,預設是啟動network-manager的。請把他關閉讓我們後續的實驗繼續進行:
aptitude install chkconfig
chkconfig network-manager off
chkconfig networking on
service network-manager stop
invoke-rc.d networking restart
重新啟動網路後可以發現/etc/resolv.conf應該要有紅色這幾行:
search wistron.com
nameserver 192.168.1.254
nameserver 168.95.192.1
nameserver最多定義兩行,再多的設定也只會讀前兩行而已。
請注意這個檔案你不需要手動設定,會自動透過networking或是network-manager設定。 /etc/hostname則是儲存主機名稱的地方,需注意這個檔案與/etc/hosts的意義是不同的。

IP Aliasing

IP aliasing是把多個IP關聯到同一張網卡的一種技術。一般的使用狀態下,一張網卡只需要一組IP位置,但是有許多時候我們為了安全性/管理方便,會希望一張網卡能有一個以上的IP,因此會使用IP aliasing。
Debian/Ubuntu系列的好處就是設定檔只有一個,一目了然。
停止了惱人的network-manager之後,修改/etc/network/interfaces:
# The loopback network interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
 address 192.168.150.124
 netmask 255.255.255.0
 gateway 192.168.150.254

auto eth0:1
iface eth0:1 inet static
 address 192.168.150.125
 netmask 255.255.255.0
紅色字體是額外新增的部份。儲存後,重新啟動你的網路:
/etc/init.d/networking restart
想要新增更多個IP是可行的,只要繼續往下附加上新的位置即可。甚至主要IP以dhcp取得也行:
# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth0:1
iface eth0:1 inet static
 address 192.168.150.125
 netmask 255.255.255.0
有幾點需要特別提醒:
  • eth0:1可以跟eth0必須在相同網段。
  • eth0:1無法使用dhcp。

Share

沒有留言: