2012年10月31日 星期三

(2) Redhat Linux Network Setting

大部分的Linux distributions都會設計兩種設定網路方式:Network Manager的動態設定以及手動設定。Network Manager在Redhat系列的作業系統是預設,如果使用者只是為了設定最基本的網路設定,那麼使用圖形界面的Network Manager就可以了,laptops的環境因為位置可能經常變動,使用Network Manager是最方便的方法。然而進階的網路設定反而撰寫設定檔更為一目了然,本文的目的便是簡單紀錄TCP/IP網路設定。

了解Linux network devices的命名方式

使用ip指令來觀察我們的網路裝置:
[maxsolar@RHEL58 ~]$ ip a
1: lo:  mtu 16436 qdisc noqueue 
    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 qlen 1000
    link/ether 52:54:00:56:15:f3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.12/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::5054:ff:fe56:15f3/64 scope link 
       valid_lft forever preferred_lft forever
3: sit0:  mtu 1480 qdisc noop 
    link/sit 0.0.0.0 brd 0.0.0.0
可能看到的裝置會有:
  • 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的位置。

Redhat重要的網路設定檔

  • /etc/sysconfig/network-scripts/ifcfg-ethX
  • 標準的ethernet設定檔。
  • /etc/sysconfig/network-scripts/route-ethX
  • ethX的routing table。
  • /etc/resolv.conf
  • 所有unix-like系統的DNS設定--沒有他雖然可以連上internet但就沒有名稱解析可用了。
  • /etc/sysconfig/network
  • Redhat Linux的global網路設定檔。
  • /etc/sysconfig/networking/
  • 放置Network Manager的設定檔的目錄。

DHCP v.s static IP

  • /etc/sysconfig/network-scripts/ifcfg-ethX
  • 一個設定dhcp最精簡的eth0範例如下:
    DEVICE="eth0"
    BOOTPROTO="dhcp"
    HWADDR="52:54:00:92:34:4C"
    ONBOOT="yes"
    
    設定檔有幾個潛規則:1.變數(左側)一定要大寫,設定值(右側)以小寫為主。2.沒有先後順序的關係。

    其實MAC address的欄位也是可以省略不寫的。如果要使Network Manager忽略偵測並自動設定這個裝置,則應該要多加入NM_CONTROLLED=no這個欄位。
    一個設定固定ip且不使用Network Manager的設定檔如下:
    DEVICE="eth0"
    BOOTPROTO="none"
    IPADDR=192.168.1.13
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.254
    HWADDR="52:54:00:92:34:4C"
    NM_CONTROLLED="no"
    ONBOOT="yes"
    TYPE="Ethernet"
    ETHTOOL_OPTS="autoneg off speed 1000 duplex full"
    UUID="859633bb-0019-4fbb-8ab1-74b9ac90b33c"
    
    設定static ip時,BOOTPROTO設定為none或是static是相同的效果。ONBOOT則宣告開機時期是否要自動啟用這個裝置。HWADDR則可使用MAC address作為該裝置的唯一辨識,多張網卡或是多阜網卡的時候要固定住裝置代號非常好用。
    ETHTOOL_OPTS則能直接設定ethtool的參數,本例則是停用自動速度協商,並設定速度為1000Mbp/s全雙工。
  • /etc/sysconfig/network
  • 這個檔案內容大概像:
    NETWORKING=yes     #啟用ipv4
    NETWORKING_IPV6=yes     #啟用ipv6
    HOSTNAME=RHEL58     #主機名稱定義
    GATEWAY=192.168.1.254   #default gateway
    
  • /etc/sysconfig/network-scripts/route-eth0
  • 這個檔案提供了eth0的靜態路由。舉例來說,要通往172.16.100.0/255.255.0.0這個網段要透過192.168.1.1這個窗口;通往192.168.10.0/24這個網段要透過192.168.10.1這個窗口,則應該表示為:
    ADDRESS0=172.16.100.0
    NETMASK0=255.255.0.0
    GATEWAY0=192.168.1.1
    ADDRESS1=192.168.10.0
    NETMASK1=255.255.255.0
    GATEWAY1=192.168.1.10
    

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

如果使用Network Manager,很抱歉剛剛所修改的設定都不會成功。因此我們先查看系統使用的是Network Manager或是傳統的network服務:
[maxsolar@RHEL58 sysconfig]$ service NetworkManager status
NetworkManager is stopped
[maxsolar@RHEL58 sysconfig]$ service network status
Configured devices:
lo eth0 sit0
Currently active devices:
lo eth0 sit0
結果可知我目前的網路是交由network服務來管理,因此可以藉由重新啟動network服務:
service network restart
或是用ifdown eth0再ifup eth0來使設定生效:
ifdown eth0 && ifup eth0
如果發現系統使用Network Manager來管理,我的建議使將之停用:
service NetworkManager stop
chkconfig NetworkManager off
chkconfig network on
service network restart
由於我們是使用手動方式設定ip,因此別忘了名稱解析也是很重要的!假設我們的DNS server是192.168.1.254,那麼在自家的/etc/resolv.conf應該要有紅色這行:
search wistron.com
nameserver 192.168.1.254
nameserver 168.95.192.1
nameserver最多定義兩行,再多的設定也只會讀前兩行而已。

IP Aliasing

IP aliasing是把多個IP關聯到同一張網卡的一種技術。一般的使用狀態下,一張網卡只需要一組IP位置,但是有許多時候我們為了安全性/管理方便,會希望一張網卡能有一個以上的IP,因此會使用IP aliasing。
假設主機原本的IP為192.168.1.124/24,想要再額外指定一個IP為192.168.1.125/24,只複製/etc/sysconfig/network-scripts/ifcfg-eth0為ifcfg-eth0:1並修改ifcfg-eth0:1為自己要alias的IP即可。
原本的ifcfg-eth0大致如下:
DEVICE="eth0"
BOOTPROTO=static
NM_CONTROLLED="no"
ONBOOT="yes"
IPADDR=192.168.1.124
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
修改過的ifcfg-eth0:1如下
DEVICE="eth0:1"
BOOTPROTO=static
NM_CONTROLLED="no"
ONBOOT="yes"
IPADDR=192.168.1.125
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
除了IP位置以及裝置名稱有變動之外,其餘均保持不變。儲存後,重新啟動你的網路:
service network restart
其中的NM_CONTROLLED變數即是決定是否交由NetworkManager來控制,由於我們已經關閉NM,這個項目僅明確表示不使用NM。Fedora使用者需注意:較新版本的Fedora一旦開啟NM,所有設定都不會寫進設定檔裡,即使寫了設定檔也是無效的,因此強烈建議啟用ip aliasing之前先關閉NM。如果想要新增更多個IP是可行的,只要複製ifcfg-eth0為範本並以:附加數字即可。
有幾點需要特別提醒:
1.eth0:1可以跟eth0必須在相同網段,但是在有VLAN時例外。
2.eth0:1無法使用dhcp。
3.如果想要使用一段網路範圍作為alias裝置,則需要手動新增一個檔案/etc/sysconfig/network-scripts/ifcfg-eth0-range0,然後內容如下:
DEVICE=eth0
IPADDR_START=192.168.1.11
IPADDR_END=192.168.1.50
NETMASK=255.255.255.0
CLONENUM_START=11
如此一來network服務便會幫我們產生從11~50的alias裝置,然後裝置代號從eth0:11開始起跳。

Share

沒有留言: