# 4.1 Linux 連上 Internet 前的注意事項
## 4.1 Linux 連上 Internet 前的注意事項
由前面幾章的數據我們知道,想要連上 Internet 你得要設定一組合法的 IP 參數才可以,主要是 IP, Netmask, Gateway, DNS IP 以及主機名等。那我們也知道,其實整個主機最重要的設定,就是『先要驅動網絡卡』,否則主機連網絡卡都捉不到時, 怎么設定 IP 參數都是沒有用的,你說是吧!所以底下我們就來談一談, 你要如何確定網絡卡已經被捉到,而 Linux 主機的網絡參數又該如何設定?
- - - - - -
### 4.1.1 Linux 的網絡卡
你怎么確認 Linux 有捉到網絡卡?Linux 底下的網絡卡的名稱是啥?讓我們來了解一下吧!
- 認識網絡卡的裝置代號
在 Linux 里面的各項裝置幾乎都是以文件名來取代的,例如 /dev/hda 代表 IDE1 接口的第一個 master 硬盤等等。 不過,網絡卡的代號 (Network Interface Card, NIC) 卻是以模塊對應裝置名稱來代替的, 而默認的網絡卡代號為 eth0 ,第二張網絡卡則為 eth1 ,以此類推。
- 關于網絡卡的模塊 (驅動程序)
我們知道網絡卡其實是硬件,所以當然需要核心支持才能驅動他。一般來說,目前新版的 Linux distributions 默認可以支持的網絡卡芯片組數量已經很完備了,包括大廠的 3COM, Intel 以及初階的 RealTek, D-Link 等網絡卡芯片都已經被支持, 所以使用者可以很輕易的設定好他們的網絡卡。不過,萬一你的網絡卡芯片組開發商不愿意釋出開放源 (Open Source) 的硬件驅動程序,或者是該網絡卡太新了,使得 Linux 核心來不及支持時,那么你就得要透過:
1. [重新編譯較新的核心,或者是](http://linux.vbird.org/linux_basic/0540kernel.php)
2. [編譯網絡卡的核心模塊](http://linux.vbird.org/linux_basic/0540kernel.php#module)
好讓核心可以支持網絡卡這塊硬件啦!但是,重編核心或編譯網絡卡核心模塊都不是簡單的工作, 而且有時原始碼又可能無法在每部主機上面編譯成功,所以萬一你的網絡卡真的不被默認的 Linux 網絡芯片所支持,那么鳥哥真的建議直接換一塊被 Linux 支持的網絡卡吧,例如很便宜的螃蟹卡! 免得花了太多時間在硬件確認上面,劃不來的! ^\_^
另外,其實有的時候 Linux 的默認網絡卡模塊可能無法完全 100% 的發揮網絡卡的功能的, 所以,有的時候你還是得必須要自行編譯網絡卡的模塊才行喔!當然, 那個網絡卡的模塊就得要自行由網絡卡開發商的官方網站下載了!不過,如果你的網絡卡是自行編譯安裝的, 那么每次重新安裝其他版本的核心時,你都必須要自行重新手動編譯過該模塊。 因為模塊與核心是有相關性的啊!
- 觀察核心所捉到的網卡信息
假設你的網絡卡已經在主機上面,不論是內建的還是自行安插到 PCI 或 PCI-x 或 PCI-E 的接口上, 那么如何確認該網絡卡有被核心捉到呢?很簡單啊!就利用 dmesg 來查閱即可:
```
[root@www ~]# dmesg | grep -in eth
377:e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
383:e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
418:e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
419:eth0: no IPv6 routers present
```
從上面的第 377 及 383 這兩行,我們可以查到這部主機的兩張網絡卡都使用模塊為 e1000,而使用的芯片應該就是 Intel 的網絡卡了。此外,這個網卡的速度可達到 1000Mbps 的全雙工模式哩 (418行) !除了使用 dmesg 來查詢核心偵測硬件產生的信息外,我們也可以透過 lspci 來查詢相關的設備芯片數據喔!如下所示:
```
[root@www ~]# lspci | grep -i ethernet
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet
Controller (rev 02)
```
請注意,鳥哥這里使用的是 Virtualbox 仿真的那部主機的環境 (請參考[第一章 1.2.2-2](http://linux.vbird.org/linux_server/0105beforeserver.php#server_target_1)),因此使用的是模擬出來的 Intel 網卡。 如果你是使用自己的實際硬件配備安裝的主機,那么應該會看到不同的芯片啦!那是正常的!
- 觀察網絡卡的模塊
從剛剛的 dmesg 的輸出訊息中,我們知道鳥哥這部主機所使用的模塊是 e1000 ,那核心有順利的載入了嗎?可以利用 lsmod 去查查看。此外,這個模塊的相關信息又是如何呢?使用 modinfo 來查查看吧!
```
[root@www ~]# lsmod | grep 1000
e1000 119381 0 <==確實有載入到核心中!
[root@www ~]# modinfo e1000
filename: <u>/lib/modules/2.6.32-71.29.1.el6.x86_64/kernel/drivers/net/e1000/e1000.ko</u>
version: 7.3.21-k6-NAPI
license: GPL
description: Intel(R) PRO/1000 Network Driver
.....(以下省略).....
```
上面輸出信息的重點在于那個檔名 (filename) 的部分!那一場串的文件名目錄,就是我們驅動程序放置的主要目錄所在。 得要注意的是,那個 2.6.32-71.29.1.el6.x86\_64 是核心版本,因此,不同的核心版本使用的驅動程序其實不一樣喔!我們才會一直強調,更改核心后, 你自己編譯的硬件驅動程序就需要重新編譯啦!
那你如何知道你的網絡卡卡號呢?很簡單啊!不管有沒有啟動你的網絡卡,都可以使用: 『 ifconfig eth0 』來查詢你的網卡卡號。如果你照著上面的信息來作, 結果發現網卡已經驅動了,恭喜你,準備到下一節去設定網絡吧!如果沒有捉到網卡呢?那就準備自己編譯網卡驅動程序吧!
- - \*
### 4.1.2 編譯網卡驅動程序(Option)
一般來說,如果沒有特殊需求,鳥哥不是很建議你自己編譯網絡卡的驅動程序!為啥? 因為想到每次更新核心都得要重新編譯一次網卡驅動程序,光是想想都覺得煩~所以,沒有被 Linux 預設核心支持的網卡, 就先丟著吧!
**Tips:** 鳥哥之前買了一張內建網卡的主板,該網卡并沒有被當時的 Linux 預設核心所支持,所以就得要自己編譯核心啦。因為 CentOS 很少更新核心,所以第一次編譯完畢之后就忘記有這回事了。等到過了數周有新的核心出現后,鳥哥很開心的自動升級核心, 然后遠程進行 reboot ,結果呢?沒有網卡驅動程序了啦!我的主機無法聯網,得要到主機前用 tty 登入后才能進行編譯~唉~

如果你真的很有求知欲,而且該網卡的官網有提供給 Linux 的驅動程序原始碼; 或者是你很想要某些官網提供的驅動程序才有的特殊功能;又或者是你真的很不想要再買一張額外的網卡。 此時,就得要重新編譯網絡卡的驅動程序啰。
**Tips:** 事實上,如果你要新添購硬件時,請先查閱一下硬件包裝上面是否提及支持 Linux 的字樣, 因為有些硬件廠商在推出新硬件時,常常會漏掉 Linux 驅動程序的撰寫。 如果包裝上面有提到支持的話,那么至少你會獲得官方網站所提供的驅動程序原始碼啊! ^\_^

因為我們這里使用的網絡卡是 Intel 的 82540EM Gigabit Ethernet 控制芯片,假設你需要的驅動程序得要由 Intel 官網取得最新的版本,而不要使用預設的核心所提供的版本時,那你該如何處理呢?請注意,鳥哥這個小節只是一個范例簡介, 不同的廠商推出的驅動程序安裝方式都有點不太一樣,你得要參考驅動程序的讀我檔 (READ ME) 或相關檔案來安裝才行。 此外,如果默認驅動程序已經捉到了網絡卡,鳥哥是建議使用預設的驅動程序就好了喔!
另外,由于編譯程序需要編譯程序以及核心相關信息,因此得要預安裝 gcc, make, kernel-header 等軟件才行。 但是我們選擇的安裝模式為『basic server』,這些軟件默認都沒有安裝的,所以你得要先安裝這些軟件才行。 這些軟件可以簡單的透過 yum 使用『yum groupinstall 'Development Tools'』來安裝,只可惜你并沒有網絡啊! 所以就得要透過原本光盤一個一個去處理 RPM 屬性相依的問題來解決了~很麻煩的~不然的話,就得要透過更改 yum 配置文件,使用本機檔案的類型來取得原版光盤的 yum 軟件列表啰!鳥哥這里假設你已經安裝了所需要的編譯程序了, 接下來的動作是:
1. 取得官方網站的驅動程序:
再次說明,你可以復制鳥哥的環境,透過 Virtualbox 的模擬而來。我們這里使用的是 Intel 的網卡,你可以到如下的網站去下載:
- [http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&keyword='e1000-'](http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&keyword=%27e1000-%27)
最后 (2011/07) 下載的版本為 8.0.30,確實比上個小節提到的版本還要新!下載的文件名為 e1000-8.0.30.tar.gz, 鳥哥將它放置于 /root 底下,然后準備來處理編譯過程吧!
2. 解壓縮與編譯:
使用 root 的身份進行如下工作吧:
```
[root@www ~]# tar -zxvf e1000-8.0.30.tar.gz -C /usr/local/src
[root@www ~]# cd /usr/local/src/e1000-8.0.30/
# 此時在該目錄下有個 README 的檔案,記得看一看,這個檔案內會說明很多信息,
# 包括如何編譯,以及這個模塊所支持的芯片組哩!
[root@www e1000-8.0.30]# cd src
[root@www src]# make install
```
最后這個模塊會被編譯完成且安裝放置于如下的檔名: /lib/modules/$(uname -r)/kernel/drivers/net/e1000/e1000.ko。 接下來我們得要重載這個新的模塊才行呦!
3. 模塊之測試與處理
由于這個模塊已經被加載啦,所以我們得要先移除舊的模塊后,才能夠重載這個模塊。使用的方法有點像這樣:
```
# 1\. 先移除已經加載在內存中的舊模塊
[root@www ~]# rmmod e1000
# 此時已經捉到的網卡會整個消失不見!因為驅動程序被卸除了嘛!
# 2\. 加載新模塊,并且查閱一下有沒有捉到正確的版本!
[root@www ~]# modprobe e1000
[root@www ~]# modinfo e1000
filename: /lib/modules/2.6.32-71.29.1.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
version: <u>8.0.30-NAPI</u> <==就是這里!
license: GPL
description: Intel(R) PRO/1000 Network Driver
```
請自行與前一小節比對一下,就會發現真的捉到正確的版本啰!不過,這個模塊在下次新的核心推出后就會失效! 為什么呢?因為新核心會給一個新的驅動程序嘛!就不是你現在這個 8.0.30 的版本啰。這點還是要再次說明的。
4. 設定開機自動啟動網絡卡模塊 (Option)
如果你在開機就能夠正確的取得這個模塊的話,那么你的網卡就沒有問題啦!這個步驟是可以略過的。如果你的核心還是捉不到網卡, 那你可能得要自己處理一下模塊的對應才行。怎么處理呢?很簡單,在 /etc/modprobe.d/ 目錄下建立一個名為 ether.conf 的檔案, 內容將模塊與網卡代號鏈接在一塊即可!這樣處理:
```
[root@www ~]# vim /etc/modprobe.d/ether.conf
alias eth0 e1000
alias eth1 e1000 <==因為鳥哥有兩張網卡嘛!
[root@www ~]# sync; reboot
```
為了測試一下剛剛的設定是否會生效,通常鳥哥都會嘗試一次重新啟動,然后開機完成之后觀察一下是否有正確的啟動網絡卡, 并觀察一下模塊加載的情況,如果一切都順利,那就太完美了!
5. 嘗試設定 IP
等到一切就緒之后,總得試看看這樣的網絡卡模塊是否可以順利的設定好 IP 吧? 所以我們先手動給他一個私有 IP 看看先:
```
[root@www ~]# ifconfig eth0 192.168.1.100
[root@www ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BD
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
....(以下省略)....
```
嘿嘿!真的設定妥當哩!然后利用 ping 這個指令去 ping 一下網域內的其他計算機, 看看能不能有響應,就知道你的網絡卡是否 OK 的啦!通常是沒有問題的啦!
- - - - - -
### 4.1.3 Linux 網絡相關配置文件案
我們知道 TCP/IP 的重要參數主要是: IP, Netmask, Gateway, DNS IP ,而且千萬不要忘記你這部主機也應該要有主機名 (hostname)!此外,我們也知道 IP 的取得有手動設定、DHCP 處理等。那么這些參數主要是寫在哪些配置文件?如何對應呢? 底下就讓我們來處理一番!
所需網絡參數 主要配置文件檔名 重要參數IP Netmask DHCP 與否 Gateway 等 /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=網卡的代號 BOOTPROTO=是否使用 dhcp HWADDR=是否加入網卡卡號(MAC) IPADDR=就是IP地址 NETMASK=只網絡屏蔽啦 ONBOOT=要不要默認啟動此接口 GATEWAY=就是通訊閘啦 NM\_CONTROLLED=額外的網管軟件 鳥哥建議取消這個項目!主機名 /etc/sysconfig/network NETWORKING=要不要有網絡 NETWORKING\_IPV6=支持IPv6否? HOSTNAME=你的主機名DNS IP /etc/resolv.conf nameserver DNS的IP私有 IP 對應的主機名 /etc/hosts 私有IP 主機名 別名你沒有看錯,主要需要修改的就是這四個檔案而已!因此沒有很困難!大家都想太多了!詳細的設定后續小節再來講, 這里先有概念即可。除此之外,還有些檔案或許你也應該要知道一下比較好呦!
- /etc/services
這個檔案則是記錄架構在 TCP/IP 上面的總總協議,包括 http, ftp, ssh, telnet 等等服務所定義的 port number ,都是這個檔案所規劃出來的。如果你想要自定義一個新的協議與 port 的對應,就得要改這個檔案了;
- /etc/protocols
這個檔案則是在定義出 IP 封包協議的相關數據,包括 ICMP/TCP/UDP 這方面的封包協議的定義等。
大概知道上面這幾個檔案后,未來要修改網絡參數時,那就太簡單了!至于網絡方面的啟動指令的話,可以記得幾個簡單的指令即可喔!
- /etc/init.d/network restart
這個 script 最重要!因為可以一口氣重新啟動整個網絡的參數! 他會主動的去讀取所有的網絡配置文件,所以可以很快的恢復系統默認的參數值。
- ifup eth0 (ifdown eth0)
啟動或者是關閉某張網絡接口。可以透過這個簡單的 script 來處理喔! 這兩個 script 會主動到 /etc/sysconfig/network-scripts/ 目錄下, 讀取適當的配置文件來處理啊! (例如 ifcfg-eth0)。
大概你只要只到這些基本的指令與檔案,哈哈!網絡參數的設定就太簡單啦! 不過,最好你還是要了解 [shell script](http://linux.vbird.org/linux_basic/0340bashshell-scripts.php) ,比較好!因為可以追蹤整個網絡的設定條件。 why ?這是因為每個 distributions 的設定數據可能都不太相同,不過卻都以 /etc/init.d/network 作為啟動的 script , 因此,你只要了解到該檔案的內容,很容易就追蹤得出來你的配置文件所需要的內容呢!對吧!
另外,新版的 CentOS 6.x 還有額外推出一個名稱為 NetworkManager 的軟件機制來管理網絡, 不過,鳥哥還是比較喜歡手工打造自己的網絡環境,所以很建議將該軟件關閉呢!還好,我們安裝的『basic server ([第一章的 1.2.2-2](http://linux.vbird.org/linux_server/0105beforeserver.php#server_target))』 就這么巧的沒有安裝該軟件!好佳在~^\_^
- - - - - -
- 鳥哥的Linux私房菜:服務器架設篇 第三版
- 第一部份:架站前的進修專區
- 作者序
- 第一章、架設服務器前的準備工作
- 1.1 前言: Linux 有啥功能
- 1.2 基本架設服務器流程
- 1.3 自我評估是否已經具有架站的能力
- 1.4 本章習題
- 第二章、基礎網絡概念
- 2.1 網絡是個什么玩意兒
- 2.2 TCP/IP 的鏈結層相關協議
- 2.3 TCP/IP 的網絡層相關封包與數據
- 2.4 TCP/IP 的傳輸層相關封包與數據
- 2.5 連上 Internet 前的準備事項
- 2.6 重點回顧:
- 2.7 本章習題
- 2.8 參考數據與延伸閱讀
- 第三章、局域網絡架構簡介
- 3.1 局域網絡的聯機
- 3.2 本書使用的內部聯機網絡參數與通訊協議
- 第四章、連上 Internet
- 4.1 Linux 連上 Internet 前的注意事項
- 4.2 連上 Internet 的設定方法
- 4.3 無線網絡--以筆記本電腦為例
- 4.4 常見問題說明
- 4.5 重點回顧
- 4.6 本章習題
- 4.7 參考數據與延伸閱讀
- 第五章、 Linux 常用網絡指令
- 5.1 網絡參數設定使用的指令
- 5.2 網絡偵錯與觀察指令
- 5.3 遠程聯機指令與實時通訊軟件
- 5.4 文字接口網頁瀏覽
- 5.5 封包擷取功能
- 5.6 重點回顧
- 5.7 本章習題
- 5.8 參考數據與延伸閱讀
- 第六章、 Linux 網絡偵錯
- 6.1 無法聯機原因分析
- 6.2 處理流程
- 6.3 本章習題
- 6.4 參考數據與延伸閱讀
- 第二部分:主機的簡易資安防護措施
- 第七章、網絡安全與主機基本防護:限制端口, 網絡升級與 SELinux
- 7.1 網絡封包聯機進入主機的流程
- 7.2 網絡自動升級軟件
- 7.3 限制聯機埠口 (port)
- 7.4 SELinux 管理原則
- 7.5 被攻擊后的主機修復工作
- 7.6 重點回顧
- 7.7 課后練習
- 7.8 參考數據與延伸閱讀
- 第八章、路由觀念與路由器設定
- 8.1 路由
- 8.2 路由器架設
- 8.3 動態路由器架設:quagga (zebra + ripd)
- 8.4 特殊狀況:路由器兩邊界面是同一個 IP 網段: ARP Proxy
- 8.5 重點回顧
- 8.6 本章習題
- 8.7 參考數據與延伸閱讀
- 第九章、防火墻與 NAT 服務器
- 9.1 認識防火墻
- 9.2 TCP Wrappers
- 9.3 Linux 的封包過濾軟件:iptables
- 9.4 單機防火墻的一個實例
- 9.5 NAT 服務器的設定
- 9.6 重點回顧
- 9.7 本章習題
- 9.8 參考數據與延伸閱讀
- 第十章、申請合法的主機名
- 10.1 為何需要主機名
- 10.2 注冊一個合法的主機名
- 10.3 重點回顧
- 10.4 本章習題
- 10.5 參考數據與延伸閱讀
- 第三部分:局域網絡內常見的服務器架設
- 第十一章、遠程聯機服務器SSH / XDMCP / VNC / RDP
- 11.1 遠程聯機服務器
- 11.2 文字接口聯機服務器: SSH 服務器
- 11.3 最原始圖形接口: Xdmcp 服務的啟用
- 11.4 華麗的圖形接口: VNC 服務器
- 11.5 仿真的遠程桌面系統: XRDP 服務器
- 11.6 SSH 服務器的進階應用
- 11.7 重點回顧
- 11.8 本章習題
- 11.9 參考數據與延伸閱讀
- 第十二章、網絡參數控管者: DHCP 服務器
- 12.1 DHCP 運作的原理
- 12.2 DHCP 服務器端的設定
- 12.3 DHCP 客戶端的設定
- 12.4 DHCP 服務器端進階觀察與使用
- 12.5 重點回顧
- 12.6 本章習題
- 12.7 參考數據與延伸閱讀
- 第十三章、文件服務器之一:NFS 服務器
- 13.1 NFS 的由來與其功能
- 13.2 NFS Server 端的設定
- 13.3 NFS 客戶端的設定
- 13.4 案例演練
- 13.5 重點回顧
- 13.6 本章習題
- 13.7 參考數據與延伸閱讀
- 第十四章、賬號控管: NIS 服務器
- 14.1 NIS 的由來與功能
- 14.2 NIS Server 端的設定
- 14.3 NIS Client 端的設定
- 14.4 NIS 搭配 NFS 的設定在叢集計算機上的應用
- 14.5 重點回顧
- 14.6 本章習題
- 14.7 參考數據與延伸閱讀
- 第十五章、時間服務器: NTP 服務器
- 15.1 關于時區與網絡校時的通訊協議
- 15.2 NTP 服務器的安裝與設定
- 15.3 客戶端的時間更新方式
- 15.4 重點回顧
- 15.5 本章習題
- 15.6 參考數據與延伸閱讀
- 第十六章、文件服務器之二: SAMBA 服務器
- 16.1 什么是 SAMBA
- 16.2 SAMBA 服務器的基礎設定
- 16.3 Samba 客戶端軟件功能
- 16.4 以 PDC 服務器提供賬號管理
- 16.5 服務器簡單維護與管理
- 16.6 重點回顧
- 16.7 本章習題
- 16.8 參考數據與延伸閱讀
- 第十七章、區網控制者: Proxy 服務器
- 17.1 什么是代理服務器 (Proxy)
- 17.2 Proxy 服務器的基礎設定
- 17.3 客戶端的使用與測試
- 17.4 服務器的其他應用設定
- 17.5 重點回顧
- 17.6 本章習題
- 17.7 參考數據與延伸閱讀
- 第十八章、網絡驅動器裝置: iSCSI 服務器
- 18.1 網絡文件系統還是網絡驅動器
- 18.2 iSCSI target 的設定
- 18.3 iSCSI initiator 的設定
- 18.4 重點回顧
- 18.5 本章習題
- 18.6 參考數據與延伸閱讀
- 第四部分:常見因特網服務器架設
- 第十九章、主機名控制者: DNS 服務器
- 19.1 什么是 DNS
- 19.2 Client 端的設定
- 19.3 DNS 服務器的軟件、種類與 cache only DNS 服務器設定
- 19.4 DNS 服務器的詳細設定
- 19.5 協同工作的 DNS: Slave DNS 及子域授權設定
- 19.6 DNS 服務器的進階設定
- 19.7 重點回顧
- 19.8 本章習題
- 19.9 參考數據與延伸閱讀
- 第二十章、WWW 伺服器
- 20.1 WWW 的簡史、資源以及伺服器軟體
- 20.2 WWW (LAMP) 伺服器基本設定
- 20.3 Apache 伺服器的進階設定
- 20.4 登錄檔分析以及 PHP 強化模組
- 20.5 建立連線加密網站 (https) 及防砍站腳本
- 20.6 重點回顧
- 20.7 本章習題
- 20.8 參考資料與延伸閱讀
- 第二十一章、文件服務器之三: FTP 服務器
- 21.1 FTP 的數據鏈路原理
- 21.2 vsftpd 服務器基礎設定
- 21.3 客戶端的圖形接口 FTP 聯機軟件
- 21.4 讓 vsftpd 增加 SSL 的加密功能
- 21.5 重點回顧
- 21.6 本章習題
- 21.7 參考數據與延伸閱讀
- 第二十二章、郵件服務器: Postfix
- 22.1 郵件服務器的功能與運作原理
- 22.2 MTA 服務器: Postfix 基礎設定
- 22.3 MRA 服務器: dovecot 設定
- 22.4 MUA 軟件:客戶端的收發信軟件
- 22.5 郵件服務器的進階設定
- 22.6 重點回顧
- 22.7 本章習題
- 22.8 參考數據與延伸閱讀