Solaris操作系統的以太網卡(以下簡稱網卡)設置,是一個老生常談的話題。網上的相關資料也是汗牛充棟,數不勝數。但對剛剛接觸Solaris的朋友來說,最需要的大概是一篇簡明通俗、易讀易用的操作指南。鑑於此,本文將網卡設置過程中涉及的一些基本操作和常見問題,進行了一下梳理和歸納,同時輔以作者在Solaris 10下進行網卡設置的親身經歷,希望能爲讀者朋友提供一個入門級的參考。
硬件環境:x86 PC,華碩主板,集成VIA rhine II Ethernet adapter
操作系統:Solaris 10 1/06 x86
爲使各位閱讀起來更加容易,本文將內容劃分爲《驅動程序安裝篇》、《網卡設置入門篇》、《網卡設置提高篇》三個部分。若文中有不當之處,希望大家批評指正。
一. 驅動程序安裝篇
網卡要正常工作,肯定少不了網卡驅動程序的支持。對於一些常見型號的網卡,Solaris 10已經把它們的驅動程序放在安裝包裏面了。安裝操作系統時會提示對網卡進行設置。如果你的網卡恰巧不在此列,那就只能自己動手豐衣足食了。
1. 如何知道網卡型號
1) 查看網卡上的標籤信息
2) 在Windows的設備管理器中查看,或在命令行中執行ipconfig /all
3) 如果是品牌機,在產品說明書中查看配置信息
我的機器是自己攢的兼容機,網卡是主板上集成的,在Windows的設備管理器中看到的信息是VIA rhine II Fast Ethernet Adatper。
.2. 如何判斷網卡在Solaris 10中是否有現成的驅動程序
1) 去SUN公司的網站上去查,地址是:,點Networking。如果沒找到的話也不要灰心,點Next Page看看。
2) 另一種方法是,在安裝Solaris 10的時候,如果安裝程序自始至終都沒有提示你進行網絡設置,那就應該是沒找到網卡的驅動程序。
在安裝Solaris 10的過程中,沒有任何一個環節提示我對網卡進行設置。進入Solaris系統後,運行ifconfig -a,只有一個本地自環網絡lo0。看來只能自己安裝了。
3. 下載驅動程序
到哪裏去下載網卡的驅動程序?下面推薦幾個驅動程序的來源:
1) 網卡廠家的網站
2) http://Solaris-x86.org/software/drivers/
3) http://homepage2.nifty.com/mrym3/taiyodo/eng/index.htm
4) http://www.mydrivers.com/
6) 用搜索引擎去搜
經過一番尋覓,我終於在下載到了VIA rhine II在Solaris下的驅動程序。是一個壓縮文件rh-2.0.1.tar.gz,裏邊既有編譯好的二進制驅動程序文件,同時包含源代碼。
4. 將驅動程序複製到Solaris操作系統中
由於網卡目前還不能工作,無法通過網絡上傳驅動程序文件。
一般可使用如下三種存儲介質來將驅動程序文件複製到Solaris的文件系統中。
1) CD/DVD
2) 軟盤
3) USB存儲設備
我在Windows下用Nero軟件把rh-2.0.1.tar.gz刻錄到一張空白光盤上(文件只有163K,有點浪費)。接下來以root用戶登錄Solaris 10,把rh-2.0.1.tar.gz文件從光盤複製到Solaris硬盤上,解壓縮。
# cp /cdrom/cdrom0/rh-2.0.1.tar.gz /tmp
# gzip -dc rh-2.0.1.tar.gz | tar xvf -
在/tmp目錄下生成一個rh-2.0.1目錄。驅動程序文件rh就位於obj子目錄下面。
5. 安裝驅動程序
網卡驅動程序有多種發佈方式,因而相應的安裝方法也不盡相同。
1) pkg包:安裝通過pkg文件方式發佈的驅動程序,只需要執行一條命令就可以搞定了:
# pkgadd -d .
2) 安裝腳本:有的網卡驅動程序通過單獨的二進制文件方式發佈,同時提供安裝腳本和README文件。README裏面有具體的安裝方法。
3) 無安裝腳本:需要使用最原始的驅動程序安裝方法,即使用add_drv命令來安裝。方法是,將驅動程序文件複製到/kernel/drv或/usr/kernel/drv目錄下,再執行# /usr/sbin/add_drv -n -v -i ,。其中的","可在# prtconf -pv的結果中找到。
rh-2.0.1的安裝方式是第二種,有現成的安裝腳本文件add_drv.sh。我按照README裏面的提示,執行
# cd /tmp/rh-2.0.1
# /usr/ccs/bin/make install
# ./add_drv.sh
Driver (rh) installed.
驅動程序安裝成功。
6. 網卡命名規則
Solaris使用唯一的設備名來標識每一塊物理網卡。網卡設備名的命名規則是即驅動程序名後面跟一個從0開始的數字。比如機器上裝有3塊均使用驅動程序iprb的網卡,則依次命名爲iprb0,iprb1,iprb2。
按照這個規則,我的網卡設備名應該是rh0。敲入命令,查看當前已安裝驅動程序的網卡
# dladm show-link
rh0 type: legacy mtu: 1500 device: rh0
果然有rh0。
Solaris 10操作系統的以太網卡設置(二)--網卡設置入門篇 2006/03/21
文/李凱
二. 網卡設置入門篇
上一篇我們介紹的是網卡驅動程序的安裝過程,併成功安裝了VIA rhine II網卡的驅動程序。本篇將以上一篇中安裝的網卡rh0爲例,對IP地址和子網掩碼等一些基本的網絡參數進行設置。
通常的設置方式有兩種,一是使用ifconfig命令,二是通過創建和修改相關配置文件。使用ifconfig命令,可以使設置立即生效,但設置是臨時的,每次系統重啓後,需要重新進行設置。而創建和修改配置文件,可保存設置,系統每次啓動時,會根據配置文件的內容自動對網卡進行設置。
1. 使用ifconfig命令對網卡進行設置
1) 激活網卡(# ifconfig plumb up)
激活網卡的意義在於將網卡驅動程序加載到Solaris系統的內核中,激活之後纔可以進一步對網卡進行操作。
手動激活rh0,
# ifconfig rh0 plumb up
驗證結果,
# ifconfig -a
lo0: flags=2001000849mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
rh0: flags=1000843mtu 1500 index 2
inet 0.0.0.0 netmask 0
ether 0:8:d:6e:8b:f1
可以看到rh0已被激活,但還沒有分配地址。
2) 分配地址
網卡地址分配通常包括靜態分配和dhcp動態分配兩種方式。任選其一。
a) 靜態分配地址(命令 # ifconfig <interface> <address> netmask <netmask>)
把IP: 129.158.215.204 , netmask: 255.255.255.0分配給rh0,
# ifconfig rh0 129.158.215.204 netmask 255.255.255.0
驗證結果,
# ifconfig rh0
rh0: flags=1000843mtu 1500 index 2
inet 129.158.215.204 netmask ffffff00 broadcast 129.158.215.255
ether 0:8:d:6e:8b:f1
IP和子網掩碼已生效。
b) 通過dhcp方式分配地址(命令 # ifconfig dhcp )
重新激活rh0,
# ifconfig rh0 unplumb down
# ifconfig rh0 plumb up
通過dhcp方式獲得IP和子網掩碼,
# ifconfig rh0 dhcp
驗證結果,
# ifconfig rh0
rh0: flags=1004843mtu 1500 index 2
inet 129.158.215.247 netmask ffffff00 broadcast 129.158.215.255
ether 0:8:d:6e:8b:f1
已自動獲取到IP和子網掩碼。
2. 通過配置文件對網卡進行設置
和網卡基本設置相關的配置文件放在/etc/inet和/etc目錄下,包括
/etc/hosts -> /etc/inet/hosts (文件中的每一行記錄表示hostname和ip地址的對應關係)
/etc/hostname.(文件內容和文件的擴展名構成hostname和interface設備名的對應關係)
/etc/netmasks (文件中的每一行記錄表示和netmask的對應關係)
/etc/dhcp.(dhcp)
創建和修改配置文件後,需要重啓系統才能使設置生效。
1) 分配地址
同樣包括靜態分配和dhcp動態分配兩種方式。任選其一。
a) 靜態分配地址(文件 /etc/hosts , /etc/netmask , /etc/hostname.)
1> 自定義一個hostname,並指定IP地址
# vi /etc/hosts
加入一行記錄:129.158.215.204 myhostname loghost
:x!保存退出。
2> 定義子網掩碼
# vi /etc/netmasks
加入一行記錄:129.158.215.0 255.255.255.0
:wq保存退出。
3> 將自定義的hostname關聯到rh0
# vi hostname.rh0
加入一行記錄:myhostname
:wq保存退出。
b) 通過dhcp方式分配地址(文件 /etc/hostaname., /etc/dhcp.)
1> 創建空文件hostname.rh0
# touch /etc/hostname.rh0
2> 創建文件dhcp.rh0
# touch /etcdhcp.rh0
需要的話還可以在該文件中填入超時時間(秒),比如:30
2) 重啓系統
# reboot
3) 常見問題:
在/etc/hosts文件中修改了IP地址,重啓後,發現機器的IP地址還是原來的,是怎麼回事?
問題可能出在/etc/inet/ipnodes文件。該文件的語法跟/etc/hosts相同,但優先級高於/etc/hosts。如果/etc/inet/ipnodes文件中保留了原來的IP地址,那麼/etc/hosts中相同hostname的IP設置將被忽略。將ipnodes文件中的IP地址一行刪掉,或改成新的IP地址,重啓後,問題就消失了。
3. sys-unconfig
如果覺得使用ifconfig命令和手工修改配置文件太麻煩,可運行sys-unconfig命令,以交互方式對系統重新進行設置。執行
# sys-unconfig
重啓後,系統會提示對網卡進行設置,並將設置結果自動保存到配置文件中。
Solaris 10操作系統的以太網卡設置(三)--網卡設置提高篇 2006/03/21
文/李凱
三. 網卡設置提高篇
在上一篇裏,我們以網卡rh0爲例,設置了IP地址和子網掩碼等一些基本的網絡參數。本篇將在前一篇的基礎上,對網卡設置中涉及的路由、DNS、邏輯網卡等進一步進行設置。
1. 網關設置
1) 添加網關
a) 可以使用route命令添加缺省網關,即時生效
# route add default <網關地址>
b) 還可以將網關地址保存在/etc/defaultrouter中
# vi /etc/defaultrouter
在文件中加入網關的IP地址或hostname(必須在/etc/hosts中已經配置)
:wq!保存退出
# reboot
2) 查看缺省網關
# netstat -r
2. dns設置
1) 創建/etc/resolv.conf文件
# vi /etc/resolv.conf
將dns的IP地址填在文件中
:wq保存退出。
domain machinename
nameserver 10.198.22.23
2) 修改/etc/nsswitch.conf文件
# vi /etc/nsswitch.conf
找到"hosts: files"一行,在後面加dns,即修改爲
hosts: files dns
3) 重新plumb網卡或reboot
4) 驗證dns是否生效
# ping www.google.com
或
# nslookup www.google.com
3. 域名設置
1) 創建/etc/defaultdomain文件
# vi /etc/defaultdomain
在該文件中加入domainname,比如prc.SUN.com
:wq保存退出
2) 在/etc/hosts加入一行新的記錄(格式爲.)
# vi /etc/hosts
加入一行新的記錄,比如
129.158.2.104 myhostname.prc.SUN.com
:wq保存退出
4. 邏輯網卡
如果想爲一塊物理網卡設置多個IP地址,可通過添加邏輯網卡(或叫虛擬網卡)來實現。比如爲rh0增加一個邏輯地址129.158.215.207,與前面IP地址設置的方式和方法完全相同,網卡的名字爲rh0:1,如果添加更多的邏輯網卡,rh0:後面的數字依次增加。
********************************************************************************************
solaris單網卡配置多IP:
root@shrsa2 # ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
bge0: flags=1000843 mtu 1500 index 2
inet 10.221.15.19 netmask ffffff80 broadcast 10.221.15.127
ether 0:14:4f:75:1c:a4
這裏只有一個可用物理網卡bge0,因爲有一個應用軟件在開發時與某個固定ip綁定,所以需要配置爽IP,但是隻有一個網卡,怎麼辦呢。
在win裏填加多個ip很方便,unix同樣可以。
ifconfig bge0:1 plumb
ifconfig bge0:1 211.136.159.199 netmask 255.255.255.0 up
此時ifconfig -a可以看到填加的IP了:
root@shrsa2 # ifconfig -a
lo0: flags=1000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
bge0: flags=1000843 mtu 1500 index 2
inet 10.221.15.19 netmask ffffff80 broadcast 10.221.15.127
ether 0:14:4f:75:1c:a4
bge0:1: flags=1000843 mtu 1500 index 2
inet 211.136.159.199 netmask ffffff00 broadcast 211.136.159.255
root@shrsa2 #
需要注意的地方。bge0;0不能添加,只能從bge0:1--2---3---等。
如果需要刪除這個虛擬接口:
ifconfig bge0:1 unplumb
plumb是加載驅動的參數,plumb應該是卸載了吧!
相關的網絡參數配置文件有:
/etc/hostname.pcn0 #ip地址對了就可以
/etc/hosts #10.221.15.19 shrsa2 shrsa2. loghost
/etc/netmasks #這裏的內容一定要注意用網絡號和相對應的10進制掩碼錶示。
/etc/defaultrouter #網關地址