鸟哥的Linux私房菜(服务器)- 第四章、连上 Internet
最近更新日期:2011/07/20
| 終于要來到修改 Linux 網絡參數的章節了!在第二章的網絡基礎中, 我們知道主機要連上 Internet 需要一些正確的網絡參數設定,這些設定在 Windows 系統上面的修改則在第三章的局域網絡架構中說明了。在這一章當中,我們則主要以固定 IP 的設定方式來修改 Linux 的網絡參數,同時,也會介紹如何使用 ADSL 的撥接方式來上網,此外,因為 Cable modem 使用者也不在少數,所以我們也說明一下 Cable modem 在 Linux 下的設定方式喔! 最后,由于筆記本電腦使用者大增,且因為筆記本電腦常使用無線網絡,因此本文也加入了無線網絡的聯機介紹啊! |
4.1?Linux 連上 Internet 前的注意事項
4.1.1?Linux 的網絡卡
4.1.2?編譯網卡驅動程序(Option)
4.1.3?Linux 網絡相關配置文件案
4.2?連上 Internet 的設定方法
4.2.1?手動設定固定 IP 參數 (適用學術網絡、ADSL 固定制) + 五大檢查步驟
4.2.2?自動取得 IP 參數 (DHCP 方法,適用 Cable modem、IP 分享器的環境)
4.2.3?ADSL 撥接上網 (適用臺灣 ADSL 撥接以及光纖到大樓)
4.3?無線網絡--以筆記本電腦為例
4.3.1?無線網絡所需要的硬件: AP、無線網卡
4.3.2?關于 AP 的設定:網絡安全方面
4.3.3?利用無線網卡開始聯機
4.4?常見問題說明
4.4.1?內部網域使用某些聯機服務(如 FTP, POP3)所遇到的聯機延遲問題
4.4.2?網址列無法解析問題
4.4.3?預設路由的問題
4.5?重點回顧
4.6?本章習題
4.7?參考數據與延伸閱讀
4.8?針對本文的建議:http://phorum.vbird.org/viewtopic.php?p=112420
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 核心來不及支持時,那么你就得要透過:
- 重新編譯較新的核心,或者是
- 編譯網絡卡的核心模塊
- 觀察核心所捉到的網卡信息
假設你的網絡卡已經在主機上面,不論是內建的還是自行安插到 PCI 或 PCI-x 或 PCI-E 的接口上, 那么如何確認該網絡卡有被核心捉到呢?很簡單啊!就利用 dmesg 來查閱即可:
從上面的第 377 及 383 這兩行,我們可以查到這部主機的兩張網絡卡都使用模塊為 e1000,而使用的芯片應該就是 Intel 的網絡卡了。此外,這個網卡的速度可達到 1000Mbps 的全雙工模式哩 (418行) !除了使用 dmesg 來查詢核心偵測硬件產生的信息外,我們也可以透過 lspci 來查詢相關的設備芯片數據喔!如下所示:[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
請注意,鳥哥這里使用的是 Virtualbox 仿真的那部主機的環境 (請參考第一章 1.2.2-2),因此使用的是模擬出來的 Intel 網卡。 如果你是使用自己的實際硬件配備安裝的主機,那么應該會看到不同的芯片啦!那是正常的![root@www ~]# lspci | grep -i ethernet 00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
- 觀察網絡卡的模塊
從剛剛的 dmesg 的輸出訊息中,我們知道鳥哥這部主機所使用的模塊是 e1000 ,那核心有順利的載入了嗎?可以利用 lsmod 去查查看。此外,這個模塊的相關信息又是如何呢?使用 modinfo 來查查看吧!
上面輸出信息的重點在于那個檔名 (filename) 的部分!那一場串的文件名目錄,就是我們驅動程序放置的主要目錄所在。 得要注意的是,那個 2.6.32-71.29.1.el6.x86_64 是核心版本,因此,不同的核心版本使用的驅動程序其實不一樣喔!我們才會一直強調,更改核心后, 你自己編譯的硬件驅動程序就需要重新編譯啦![root@www ~]# lsmod | grep 1000 e1000 119381 0 <==確實有載入到核心中![root@www ~]# modinfo e1000 filename: /lib/modules/2.6.32-71.29.1.el6.x86_64/kernel/drivers/net/e1000/e1000.ko version: 7.3.21-k6-NAPI license: GPL description: Intel(R) PRO/1000 Network Driver .....(以下省略).....
那你如何知道你的網絡卡卡號呢?很簡單啊!不管有沒有啟動你的網絡卡,都可以使用: 『?ifconfig eth0?』來查詢你的網卡卡號。如果你照著上面的信息來作, 結果發現網卡已經驅動了,恭喜你,準備到下一節去設定網絡吧!如果沒有捉到網卡呢?那就準備自己編譯網卡驅動程序吧!
好讓核心可以支持網絡卡這塊硬件啦!但是,重編核心或編譯網絡卡核心模塊都不是簡單的工作, 而且有時原始碼又可能無法在每部主機上面編譯成功,所以萬一你的網絡卡真的不被默認的 Linux 網絡芯片所支持,那么鳥哥真的建議直接換一塊被 Linux 支持的網絡卡吧,例如很便宜的螃蟹卡! 免得花了太多時間在硬件確認上面,劃不來的! ^_^
另外,其實有的時候 Linux 的默認網絡卡模塊可能無法完全 100% 的發揮網絡卡的功能的, 所以,有的時候你還是得必須要自行編譯網絡卡的模塊才行喔!當然, 那個網絡卡的模塊就得要自行由網絡卡開發商的官方網站下載了!不過,如果你的網絡卡是自行編譯安裝的,?那么每次重新安裝其他版本的核心時,你都必須要自行重新手動編譯過該模塊。 因為模塊與核心是有相關性的啊!
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 軟件列表啰!鳥哥這里假設你已經安裝了所需要的編譯程序了, 接下來的動作是:
再次說明,你可以復制鳥哥的環境,透過 Virtualbox 的模擬而來。我們這里使用的是 Intel 的網卡,你可以到如下的網站去下載:
- http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&keyword='e1000-'
最后 (2011/07) 下載的版本為 8.0.30,確實比上個小節提到的版本還要新!下載的文件名為 e1000-8.0.30.tar.gz, 鳥哥將它放置于 /root 底下,然后準備來處理編譯過程吧!
使用 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 |
由于這個模塊已經被加載啦,所以我們得要先移除舊的模塊后,才能夠重載這個模塊。使用的方法有點像這樣:
| # 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: 8.0.30-NAPI <==就是這里! license: GPL description: Intel(R) PRO/1000 Network Driver |
如果你在開機就能夠正確的取得這個模塊的話,那么你的網卡就沒有問題啦!這個步驟是可以略過的。如果你的核心還是捉不到網卡, 那你可能得要自己處理一下模塊的對應才行。怎么處理呢?很簡單,在 /etc/modprobe.d/ 目錄下建立一個名為 ether.conf 的檔案, 內容將模塊與網卡代號鏈接在一塊即可!這樣處理:
| [root@www ~]# vim /etc/modprobe.d/ether.conf alias eth0 e1000 alias eth1 e1000 <==因為鳥哥有兩張網卡嘛![root@www ~]# sync; reboot |
等到一切就緒之后,總得試看看這樣的網絡卡模塊是否可以順利的設定好 IP 吧? 所以我們先手動給他一個私有 IP 看看先:
| [root@www ~]# ifconfig eth0 192.168.1.100 [root@www ~]# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BDinet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 ....(以下省略).... |
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?,比較好!因為可以追蹤整個網絡的設定條件。 why ?這是因為每個 distributions 的設定數據可能都不太相同,不過卻都以 /etc/init.d/network 作為啟動的 script , 因此,你只要了解到該檔案的內容,很容易就追蹤得出來你的配置文件所需要的內容呢!對吧!
另外,新版的 CentOS 6.x 還有額外推出一個名稱為 NetworkManager 的軟件機制來管理網絡, 不過,鳥哥還是比較喜歡手工打造自己的網絡環境,所以很建議將該軟件關閉呢!還好,我們安裝的『basic server (第一章的 1.2.2-2)』 就這么巧的沒有安裝該軟件!好佳在~^_^
4.2 連上 Internet 的設定方法
在前幾章我們就談過,臺灣地區主要連上因特網的方法有(1)學術網絡、(2)ADSL 固接與撥接、(3)Cable modem?等方式,同時,手動設定 IP 參數是很重要的學習,因此,底下的各節中,第一節的手動設定固定 IP 一定要做過一次! 其他的才依照您的環境去設定去學習!
此外,由于目前使用 Linux notebook 的使用者大增,而 Notebook 通常是以無線網絡來聯機的, 所以鳥哥在這里也嘗試使用一款無線網絡來進行聯機設定。至于傳統的 56 Kbps 撥接則因為速度較慢且使用度越來越低, 所以在這里就不多做介紹了。
4.2.1 手動設定固定 IP 參數 (適用學術網絡、ADSL 固定制) + 五大檢查步驟
所謂的固定 IP 就是指在你的網絡參數當中,你只要輸入既定的 IP 參數即可。那么這個既定的 IP 來自哪里呢? 一般來說,他可能來自于:
- 學術網絡:由學校單位直接給予的一組 IP 網絡參數;
- 固定制 ADSL:向 ISP 申請的一組固定 IP 的網絡參數;
- 企業內部或 IP 分享器內部的局域網絡:例如企業內使用私有 IP 作為局域網絡的聯機之用時,那么我們的 Linux 當然也就需要向企業的網管人員申請一組固定的 IP 網絡參數啰!
這樣清楚嗎?也就是說,我們取得的固定 IP 參數并非一定是 public IP 喔!反正就是一組可接受的固定 IP 就是了! 所以在架設你的環境之前,請先注意所有網絡參數的來源正確性啊!好了,那么你的 IP 要如何設定呢?先回去翻翻第三章?3.2.1?里面的圖 3.2-1,我們對外網卡 (eth0) 的信息為:
| IP: 192.168.1.100 Netmask: 255.255.255.0 Gateway: 192.168.1.254 DNS IP: 168.95.1.1 Hostname: www.centos.vbird |
那么要修改的四個檔案與相關的啟動腳本,以及重新啟動后需要用啥指令觀察的重點,鳥哥再次的使用一個簡單的表格來說明, 你只要記得這幾個表格內的重要檔案與指令,以后在修改網絡參數時,就不會出現錯誤了!看看吧!
| 修改的參數 | 配置文件與重要啟動腳本 | 觀察結果的指令 |
| IP相關參數 | /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/init.d/network restart | ifconfig (IP/Netmask) route -n (gateway) |
| DNS | /etc/resolv.conf | dig www.google.com |
| 主機名 | /etc/sysconfig/network /etc/hosts | hostname (主機名) ping $(hostname) reboot |
底下我們就分別針對上面的各項設定來進行檔案的重新修改啰!
設定網絡參數得要修改 /etc/sysconfig/network-scripts/ifcfg-eth0,請記得,這個 ifcfg-eth0 與檔案內的 DEVICE 名稱設定需相同,并且,在這個檔案內的所有設定,基本上就是 bash 的變量設定規則啦 (注意大小寫)!
| [root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" <==網絡卡代號,必須要 ifcfg-eth0 相對應 HWADDR="08:00:27:71:85:BD" <==就是網絡卡地址,若只有一張網卡,可省略此項目 NM_CONTROLLED="no" <==不要受到其他軟件的網絡管理! ONBOOT="yes" <==是否默認啟動此接口的意思 BOOTPROTO=none <==取得IP的方式,其實關鍵詞只有dhcp,手動可輸入none IPADDR=192.168.1.100 <==就是 IP 啊 NETMASK=255.255.255.0 <==就是子網掩碼 GATEWAY=192.168.1.254 <==就是預設路由 # 重點是上面這幾個設定項目,底下的則可以省略的啰! NETWORK=192.168.1.0 <==就是該網段的第一個 IP,可省略 BROADCAST=192.168.1.255 <==就是廣播地址啰,可省略 MTU=1500 <==就是最大傳輸單元的設定值,若不更改則可省略 |
- DEVICE:這個設定值后面接的裝置代號需要與文件名 (ifcfg-eth0) 那個裝置代號相同才行!否則可能會造成一些裝置名稱找不到的困擾。
- BOOTPROTO:啟動該網絡接口時,使用何種協議? 如果是手動給予 IP 的環境,請輸入 static 或 none ,如果是自動取得 IP 的時候, 請輸入 dhcp (不要寫錯字,因為這是最重要的關鍵詞!)
- GATEWAY:代表的是『整個主機系統的 default gateway』, 所以,設定這個項目時,請特別留意!不要有重復設定的情況發生喔!也就是當你有 ifcfg-eth0, ifcfg-eth1.... 等多個檔案,只要在其中一個檔案設定 GATEWAY 即可
- GATEWAYDEV:如果你不是使用固定的 IP 作為 Gateway , 而是使用網絡裝置作為 Gateway (通常 Router 最常有這樣的設定),那也可以使用 GATEWAYDEV 來設定通訊閘裝置呢!不過這個設定項目很少使用就是了!
- HWADDR:這個東西就是網絡卡的卡號了!在僅有一張網卡的情況下,這個設定值沒有啥功能, 可以忽略他。但如果你的主機上面有兩張一模一樣的網卡,使用的模塊是相同的。 此時,你的 Linux 很可能會將 eth0, eth1 搞混,而造成你網絡設定的困擾。如何解決呢? 由于 MAC 是直接寫在網卡上的,因此指定 HWADDR 到這個配置文件中,就可以解決網卡對應代號的問題了!很方便吧!
設定完畢之后,現在讓我們來重新啟動網絡接口吧!這樣才能更新整個網絡參數嘛!
| [root@www ~]# /etc/init.d/network restart Shutting down interface eth0: [ OK ] <== 先關閉界面 Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] <== 再開啟界面 Bringing up interface eth0: [ OK ] # 針對這部主機的所有網絡接口 (包含 lo) 與通訊閘進行重新啟動,所以網絡會停頓再開 |
| # 檢查一:當然是要先察看 IP 參數對否,重點是 IP 與 Netmask 啦! [root@www ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:71:85:BDinet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr: fe80::a00:27ff:fe71:85bd/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:655 errors:0 dropped:0 overruns:0 frame:0TX packets:468 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:61350 (59.9 KiB) TX bytes:68722 (67.1 KiB) # 有出現上頭那個 IP 的數據才是正確的啟動;特別注意 inet addr 與 Mask 項目 # 這里如果沒有成功,得回去看看配置文件有沒有錯誤,然后再重新 network restart !# 檢查二:檢查一下你的路由設定是否正確 [root@www ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0 # 重點就是上面的特殊字體!前面的 0.0.0.0 代表預設路由的設定值!# 檢查三:測試看看與路由器之間是否能夠聯機成功呢! [root@www ~]# ping -c 3 192.168.1.254 PING 192.168.1.254 (192.168.1.254) 56(84) bytes of data. 64 bytes from 192.168.1.254: icmp_seq=1 ttl=64 time=2.08 ms 64 bytes from 192.168.1.254: icmp_seq=2 ttl=64 time=0.309 ms 64 bytes from 192.168.1.254: icmp_seq=3 ttl=64 time=0.216 ms--- 192.168.1.254 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2004ms rtt min/avg/max/mdev = 0.216/0.871/2.088/0.861 ms # 注意啊!有出現 ttl 才是正確的響應!如果出現『 Destination Host Unreachable 』 # 表示沒有成功的聯機到你的 GATEWAY 那表示出問題啦!趕緊檢查有無設定錯誤。 |
這個 /etc/resolv.conf 很重要啦!他會影響到你是否可以查詢到主機名與 IP 的對應喔!通常如下的設定就 OK 了!
| [root@www ~]# vim /etc/resolv.conf nameserver 168.95.1.1 nameserver 139.175.10.20 |
| # 檢查四:看看 DNS 是否順利運作了呢?很重要的測試喔! [root@www ~]# dig www.google.com ....(前面省略).... ;; QUESTION SECTION: ;www.google.com. IN A;; ANSWER SECTION: www.google.com. 428539 IN CNAME www.l.google.com. www.l.google.com. 122 IN A 74.125.71.106 ....(中間省略)....;; Query time: 30 msec ;; SERVER: 168.95.1.1#53(168.95.1.1) <==這里的項目也很重要! ;; WHEN: Mon Jul 18 01:26:50 2011 ;; MSG SIZE rcvd: 284 |
修改主機名就得要改 /etc/sysconfig/network 以及 /etc/hosts 這兩個檔案,這兩個檔案的內容又簡單的要命喔!
| [root@www ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=www.centos.vbird[root@www ~]# vim /etc/hosts 192.168.1.100 www.centos.vbird # 特別注意,這個檔案的原本內容不要刪除!只要新增額外的數據即可! |
| [root@www ~]# hostname localhost.localdomain # 還是默認值,尚未更新成功!我們還得要進行底下的動作!# 檢查五:看看你的主機名有沒有對應的 IP 呢?沒有的話,開機流程會很慢! [root@www ~]# ping -c 2 www.centos.vbird PING www.centos.vbird (192.168.1.100) 56(84) bytes of data. 64 bytes from www.centos.vbird (192.168.1.100): icmp_seq=1 ttl=64 time=0.015 ms 64 bytes from www.centos.vbird (192.168.1.100): icmp_seq=2 ttl=64 time=0.028 ms--- www.centos.vbird ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.015/0.021/0.028/0.008 ms # 因為我們有設定 /etc/hosts 規定 www.centos.vbird 的 IP , # 所以才找的到主機主機名對應的正確 IP!這時才能夠 reboot 喔!重要重要! |
上面的信息中,檢查的內容總共有五個步驟,這五個步驟每一步都要成功后才能夠繼續往下處理喔! 至于最重要的一點,當你修改過 /etc/sysconfig/network 里面的 HOSTNAME 后, 務必要重新啟動 (reboot)。但是重新啟動之前,請務必『 ping 主機名』且得到 time 的響應才行!
4.2.2 自動取得 IP 參數 (DHCP 方法,適用 Cable modem、IP 分享器的環境)
可自動取得 IP 的環境是怎么回事啊?不是很簡單嗎?當你在 IP 分享器后頭的主機在設定時,不是都會選擇『自動取得 IP 』嗎?那就是可自動取得 IP 的環境啦!那么這個自動取得是怎么回事啊?也不難了解啦,其實就是『有一部主機提供 DHCP 服務給整個網域內的計算機』就是了!例如 IP 分享器就可能是一部 DHCP 主機。那么 DHCP 是啥? 他是:Dynamic Host Configuration Protocol 的簡寫,顧名思義,他可以『動態的調整主機的網絡參數』的意思。詳細的?DHCP?功能我們會在第十二章說明的。好了,那么這個方法適合哪些聯機的方式呢?大致有這些:
- Cable Modem:就是使用電視纜線進行網絡回路聯機的方式啊!
- ADSL 多 IP 的 DHCP 制:就鳥哥所知, SeedNet 有推出一種專案, 可以讓 ADSL 用戶以 DHCP 的方式來自動取得 IP ,不需要撥接。那使用的也是這種方法!
- IP 分享器或 NAT 有架設 DHCP 服務時:當你的主機位于 IP 分享器的后端,或者是你的 LAN 當中有 NAT 主機且 NAT 主機有架設 DHCP 服務時, 那取得 IP 的方法也是這樣喔!
你依舊需要前一小節手動設定 IP 的主機名設定 (第三步驟),至于 IP 參數與 DNS 則不需要額外設定, 僅需要修改 ifcfg-eth0 即可喔!這樣處理吧:
| [root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR="08:00:27:71:85:BD" NM_CONTROLLED="no" ONBOOT=yes BOOTPROTO=dhcp |
沒蓋你喔!只要這幾個項目即可,其他的都給他批注 (#) 掉!尤其是那個 GATEWAY 一定不能設定! 避免互相干擾!然后給他重新啟動網絡:
| [root@www ~]# /etc/init.d/network restart Shutting down interface eth0: [ OK ] <== 先關閉界面 Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] <== 再開啟界面 Bringing up interface eth0: [ OK ] Determining IP information for eth0.. [ OK ] <== 重要!是 DHCP 的特點! # 你可以透過最后一行去判斷我們是否有透過 DHCP 協議取得 IP! |
我們局域網絡內的 IP 分享器或 DHCP 主機,就會立刻幫你的 Linux 主機做好網絡參數的規劃, 包括 IP 參數與 GATEWAY 等,就通通設定妥當啦!很方便也很簡單吧!
| Tips: 基本上,/etc/resolv.conf 預設會被 DHCP 所修改過,因此你不需要修改 /etc/resolv.conf。甚至連主機名都會被 DHCP 所修訂。不過,如果你有特殊需求,那么 /etc/sysconfig/network 以及 /etc/hosts 請自行修改正確呦! |
4.2.3 ADSL 撥接上網 (適用臺灣 ADSL 撥接以及光纖到大樓)
終于來到臺灣最熱門的 ADSL 撥接上網的介紹啦!來談一談如何在 Linux 上撥接上網吧! 要撥接上網時,可以使用 rp-pppoe 這套軟件來幫忙(注1),所以,你必須要確認你的 Linux distributions 上面已經存在這個玩意兒了!CentOS 本身就含有 rp-pppoe ,請使用原版光盤,或者是使用 yum 來進行安裝吧!
| [root@www ~]# mount /dev/cdrom /mnt [root@www ~]# cd /mnt/Packages [root@www ~]# rpm -ivh rp-pppoe* ppp* [root@www ~]# rpm -q rp-pppoe rp-pppoe-3.10-8.el6.x86_64 <==你瞧瞧!確實已經安裝喔! |
當然,很多 distributions 都已經將撥接這個動作歸類到圖形接口里面去了,所以可能沒有提供 rp-pppoe 這個咚咚,沒關系,你可以到底下的網站去取得的:
- http://www.roaringpenguin.com/pppoe/
- http://freshmeat.net/projects/rp-pppoe/
然后再自行手動安裝即可。如何安裝的過程鳥哥在這里就不談了,請自行前往基礎篇的原始碼與 Tarball 章節查閱相關資料吧。 另外請注意,雖然整個聯機是由主機的以太網絡卡連接到 ADSL 調制解調器上,然后再透過電話線路聯機到 ISP 的機房去,最后在主機上以 rp-pppoe 撥接達成聯機。但是?rp-pppoe 使用的是 Point to Point (ppp) over Ethernet 的點對點協議所產生的網絡接口,因此當你順利的撥接成功之后, 會多產生一個實體網絡接口『 ppp0 』喔!
而由于 ppp0 是架構在以太網絡卡上的,你必須要有以太網卡,同時,即使撥接成功后,你也不能將沒有用到的 eth0 關閉喔!注意注意!因此,撥接成功后就會有:
- 內部循環測試用的 lo 接口;
- 網絡卡 eth0 這個接口;
- 撥接之后產生的經由 ISP 對外連接的 ppp0 接口。
雖然 ppp0 是架構在以太網卡上面的,但上頭這三個接口在使用上是完全獨立的,互不相干, 所以關于 eth0 的使用上,你就可以這樣思考:
- 這張網絡卡 (假設是 eth0) 有接內部網絡(LAN):
舉例來說,如果你的局域網絡如同第三章的圖3.1-1?所示,也就是說,你的 ppp0 可以連上 Internet ,但是內網則使用 eth0 來跟其他內部主機聯機時, 那么你的 IP 設定參數: /etc/sysconfig/network-scripts/ifcfg-eth0 應該要給予一個私有 IP 以使內部的 LAN 也可以透過 eth0 來進行聯機啊!所以鳥哥會這樣設定:
并請記得一件事情,那就是:『千萬不要有 GATEWAY 的設定!』, 因為 ppp0 撥接成功后, ISP 會主動的給予 ppp0 接口一個可以連上 Internet 的 default gateway , 如果你又設定另一個 default gateway ,兩個網關可能會造成你的網絡不通喔![root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none NM_CONTROLLED=no IPADDR=192.168.1.100 NETMASK=255.255.255.0 ONBOOT=yes
- 這部主機僅有連接 ADSL 調制解調器,并沒有內部網域:
如果這部 Linux 主機是直接連接到 ADSL 調制解調器上頭,并沒有任何內部主機與其聯機,也就是說,你的 eth0 有沒有 IP 都沒有關系時,那么上面的設定當中的那個『 ONBOOT=yes 』直接改成『 ONBOOT=no 』就好了!那撥接不會有問題嗎? 沒關系啊,因為你撥接啟動 ppp0 時,系統會主動的喚醒 eth0 ,只是 eth0 不會有 IP 信息就是了。
至于其他的檔案請參考?4.2.1 手動設定 IP 的聯機方法來處理即可。 當然啦,撥接之前,請確認你的 ADSL 調制解調器 (小烏龜) 已經與主機聯機妥當,也取得賬號與密碼,也安裝好了 rp-pppoe ,然后就來處理吧!
說實在的,鳥哥比較建議將內外網域分的清清楚楚比較好,所以,通常我都是主機上面接兩塊網絡卡, 一張對內一張對外,對外的那張網卡預設是不啟動的 (ONBOOT=no)。考慮到你可能僅有一張網卡,那么鳥哥也會給你建議, 直接給 eth0 一個私有 IP 接口吧!設定就如同本節稍早提到的那樣啰!
好了,那么開始來設定你的賬號與密碼吧!這個動作只要在第一次建立賬號/密碼時處理即可,未來除非賬號密碼改變了, 否則這個動作都不需要重新處理啦!(留意一下,撥接的設定指令有改變喔!與之前的 adsl-setup 不一樣啰!仔細看看!)
| [root@www ~]# pppoe-setup Welcome to the PPPoE client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly...LOGIN NAME (從 ISP 處取得的賬號填入處) Enter your Login Name (default root): T1234567 # 注意啊!這個賬號名稱是 ISP 給的,其中如果是 SeedNet ,輸入如上, # 如果是 Hinet 的話,就得要輸入 username@hinet.net,后面的主機名也要寫。INTERFACE (ADSL 調制解調器所接的網卡代號) Enter the Ethernet interface connected to the PPPoE modem For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethX, where 'X' is a number. (default eth0): eth0Enter the demand value (default no): noDNS (就填入 ISP 處取得的 DNS 號碼吧) Enter the DNS information here: 168.95.1.1 Enter the secondary DNS server address here: <==若無第二部就按 enterPASSWORD (從 ISP 處取得的密碼啊!) Please enter your Password: <==輸入密碼兩次,屏幕不會有星號 * 喔! Please re-enter your Password:USERCTRL (要不要讓一般用戶啟動與關閉?最好是不要!) Please enter 'yes' (three letters, lower-case.) if you want to allow normal user to start or stop DSL connection (default yes): noFIREWALLING (防火墻方面,先取消,用自己未來設定的) The firewall choices are: 0 - NONE: This script will not set any firewall rules. You are responsiblefor ensuring the security of your machine. You are STRONGLYrecommended to use some kind of firewall rules. 1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation 2 - MASQUERADE: Appropriate for a machine acting as an Internet gatewayfor a LAN Choose a type of firewall (0-2): 0Start this connection at boot time (要不要開機立即啟動撥接程序?) Do you want to start this connection at boot time? Please enter no or yes (default no):yes** Summary of what you entered ** Ethernet Interface: eth0 User name: T1234567 Activate-on-demand: No Primary DNS: 168.95.1.1 Firewalling: NONE User Control: no Accept these settings and adjust configuration files (y/n)? y Adjusting /etc/sysconfig/network-scripts/ifcfg-ppp0 Adjusting /etc/resolv.conf(But first backing it up to /etc/resolv.conf.bak) Adjusting /etc/ppp/chap-secrets and /etc/ppp/pap-secrets(But first backing it up to /etc/ppp/chap-secrets.bak)(But first backing it up to /etc/ppp/pap-secrets.bak) # 上面具有特殊字體的檔案主要功能是: # ifcfg-ppp0 :亦即是 ppp0 這個網絡接口的配置文件案; # resolv.conf :這個檔案會被備份后,然后以剛剛我們上面輸入的 DNS 數據取代; # pap-secrets, chap-secrets:我們輸入的密碼就放在這里! |
啟動 ADSL 的方法很多,通常鳥哥都是使用 /etc/init.d/network restart 即可處理!不過,如果發生一些不明的錯誤, 也可以使用 pppoe-stop 關閉后再以 pppoe-start 立即啟動撥接試看看。
通常比較容易出問題的地方在于硬件的聯機情況,請先確認所有的硬件聯機沒有問題喔! 通常,如果你使用小烏龜 (ATU-R) 時,請使用跳線連接網絡卡與 ATU-R。另外一個容易出錯的地方在于輸入的賬號與密碼, 賬號與密碼都是你的 ISP 給你的,并且注意大小寫(可以到 /etc/ppp/{chap,pap}-secrets 察看一下是否設定錯誤?)
上面的步驟搞定就可以連上 Internet 了。如果擔心設定方面有問題,可以透過手動設定 IP 的那個小節的五個步驟去檢查看看, 指令分別是:
| [root@www ~]# ifconfig [root@www ~]# route -n [root@www ~]# ping GW的IP [root@www ~]# dig www.google.com [root@www ~]# hostname |
| [root@www ~]# ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocolinet addr:111.255.69.90 P-t-P:168.95.98.254 Mask:255.255.255.255UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1RX packets:59 errors:0 dropped:0 overruns:0 frame:0TX packets:59 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:3RX bytes:7155 (6.9 KiB) TX bytes:8630 (8.4 KiB) |
如果你明明沒有 ADSL 聯機,但是卻作了上面的動作,那么得要注意喔,因為每次重新啟動網絡都會花很多時間在偵測 ADSL 調制解調器上。所以啰,我們得要修改 ppp0 的配置文件才行。動作很簡單,將 /etc/sysconfig/network-scripts/ifcfg-ppp0 內的 ONBOOT 改成 no, 然后進行:
| [root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-ppp0 DEVICE=ppp0 ONBOOT=no ....(其他省略)....[root@www ~]# chkconfig pppoe-server off |
很快的,這樣你就已經做好 ADSL 撥接上網的動作了!很快樂吧!但是不要忘記了,你的主機若還沒有更新 (update) 系統,恐怕資安方面會有些問題哩!所以,趕緊往下兩個章節讀讀去!
4.3 無線網絡--以筆記本電腦為例
除了使用實體 RJ-45 線路來連接網絡之外,由于現在筆記本電腦漸漸廣為使用,因此在筆記本電腦上面的無線網絡 (Wireless Local Area Network, WLAN) 也越來越重要啰~針對無線網絡所提出的標準中,早期是 IEEE 802.11b / 802.11g 較為重要,其中 802.11g 這個標準的傳輸速度已經可以達到 54Mbps 的水平。不過,近期以來還有新的標準,那就是 802.11n (注3) ,這個標準的理論傳輸速度甚至可達 300Mbps 哩!所以啰,我們也得稍微介紹一下無線網絡啦!
| Tips: 無線網絡的機制非常多,我們現在常聽到的主要有 Wi-Fi (可想成是 802.11 相關標準) 以及 WiMAX (802.16,?注4) 等, 在底下我們主要介紹的是目前使用較廣泛的 Wi-Fi 相關無線網卡喔!可不要搞錯啰! |
4.3.1 無線網絡所需要的硬件: AP、無線網卡
我們知道在 RJ-45 的以太網絡聯機環境中,以 switch/hub 以及網絡卡與網絡線最重要,該架構中主要以 switch/hub 串接所有的網絡設備。那么在無線網絡中,當然也需要一個接收訊號的裝置,那就是無線基地臺 (Wireless Access Point, 簡稱 AP)?了!另一個裝置當然就是安裝在計算機主機上面的無線網卡啰!
其實無線基地臺本身就是個 IP 分享器了,他本身會有兩個接口,一個可以與外部的 IP 做溝通,另外一個則是作為 LAN 內部其他主機的 GATEWAY 啰!那其他主機上面只要安裝了無線網卡,并且順利的連上 AP 后,自然就可以透過 AP 來連上 Internet 啦!整個傳輸的情況可以用下圖來示意:
圖 4.3-1、無線網絡的聯機圖標
在上圖中,我們假設 PC A 與 PC B 這兩部主機都有安裝無線網卡,因此他們可以掃瞄到局域網絡內的 AP 存在,所以可以透過這個 AP 來連上 Internet 啊。在不考慮內部 LAN 聯機的情況下,AP 如何連上 Internet 呢?雖然每部 AP 的控制接口都不相同,不過絕大部分的 AP 都是提供 Web 接口來設定的,因此你可以參考每部 AP 的說明書來進行設定,在這里鳥哥就不多說了。
鳥哥就以手邊有的設備來說明這個項目,使用的設備如下:
- AP : TP-Link (TL-WR941ND)
- USB 的無線網卡: D-Link (DWA-140),使用 RT3070sta 驅動程序
比較凄慘的是,CentOS 6.x 預設不支持 DWA-140 這個 USB 的無線網卡,因此原本我們還得要自行手動下載 USB 無線網卡的驅動程序才行!更怪的是,我們的核心偵測到的模塊是 rt2870sta,但實際上該硬件使用的是 rt3070sta模塊... 為了這個,搞了鳥哥兩、三天的時間去解決問題...還好,由世界上熱心的網友回報支持 Linux 的無線網卡網站說明,發現這只 USB 是支援 Linux 的喔!如下網址所示。而且,已經有公司將這個網卡編譯成 CentOS 6.x 可以使用的 RPM 檔案啰!相關網址如下:
- 網友們熱心提供:http://linux-wless.passys.nl/query_part.php?brandname=D-Link
- 幫我們打包成 RPM 的公司:http://rpm.pbone.net/index.php3
- Ralink 官網的下載處:http://www.ralinktech.com/support.php?s=2
鳥哥最終由上面第二個網址下載的兩個檔案是:kmod-rt3070sta-2.5.0.1-2.el6.elrepo.x86_64.rpm, rt2870-firmware-22-1.el6.elrepo.noarch.rpm。鳥哥將他放置于 /root 底下,等一下再來安裝。
| Tips: 這張 USB 無線網卡讓鳥哥搞到一個頭兩個大!基本上,Linux 核心預設不支持的設備,建議不要購買啦! 否則很難處理!鳥哥覺得這個 DWA-140 感覺就是張惡魔卡~好怪~好難搞... |
4.3.2 關于 AP 的設定:網絡安全方面
如果你留心一下圖 4.3-1?,那么就可以發現一件事情,那就是:『如果 AP 不設定任何聯機限制,那任何擁有無線網卡的主機都可以透過這個 AP 連接上你的 LAN?』, 要知道,通常我們都會認為 LAN 是信任網域,所以內部是沒有防火墻的,亦即是不設防的狀態,呵呵! 如果剛好有人拿著筆記本電腦經過你的 AP 可以接收訊號的范圍,那么他就可以輕易的透過你的 AP 連接上你的 LAN ,并且可以透過你的 AP 連上 Internet ,如果他剛好是個喜歡搞破壞的 cracker , 哈哈!那么當他使用你的 AP 去攻擊別人時,最后被發現的跳板是誰?當然是你的 AP! 那是誰會吃上官司?夠清楚了吧?而且你內部主機的數據也很有可能被竊取啊!
所以啦,『無線網絡的安全性一定是具有很大的漏洞的』,沒辦法, 因為無線網絡的傳輸并不是透過實體的網絡線,而是透過無線訊號,實體網絡線很好控制,無線訊號你如何偵測啊?對吧! 因此,請你務必在你的 AP 上面進行好聯機的限制設定,一般可以這樣做限制的:
- 在 AP 上面使用網卡卡號 (MAC) 來作為是否可以存取 AP 的限制:
如此一來,就只有你允許的網絡卡才能夠存取你的 AP ,當然會安全不少。不過這個方法有個問題, 那就是當有其他主機想要透過這個 AP 聯機時,你就得要手動的登入 AP 去進行 MAC 的設定, 在經常有變動性裝置的環境中 (例如公司行號或學校),這個方法比較麻煩~
- 設定你的 AP 聯機加密機制與密鑰:
另一個比較可行的辦法就是設定聯機時所需要的驗證密鑰!這個密鑰不但可以在網絡聯機的數據當中加密,使得即使你的數據被竊聽, 對方也是僅能得到一堆亂碼,同時由于 client 端也需要知道密鑰并且在聯機階段輸入密鑰, 因此也可以被用來限制可聯機的用戶啊!
當然,上面兩種方法你可以同時設定,亦即不但需要聯機的密鑰,而且在 AP 處也設定能夠存取的 MAC 網卡, 嘿嘿!這樣一來,就更安全的多了(注5)。底下讓我們來介紹一下 AP 里面經常要了解的數據, 那就是 ESSID/SSID 啰!
-
關于 ESSID/SSID :
想一想,如果你有兩部 AP 在同一個局域網絡內,那么請問一下,當你的無線網卡在上網時,他會透過哪一個 AP 聯機出去呢?很困擾,對吧!其實每部 AP 都會有一個聯機的名字,那就是 SSID 或 ESSID,這個 SSID 可以提供給 client 端, 當 client 端需要進行無線聯機時,他必須要說明他要利用哪一部 AP ,那個 ESSID 就是那時需要輸入的數據了!在鳥哥的案例當中,我將我的 AP 設定為 vbird_tsai 這個名字, 并且給予一個密鑰密碼,設定的方法如同下圖所示:
圖 4.3-2、無線網絡 AP 的 SSID 設定項目
如上圖,在登入了 AP 的設定項目后,依序 (1)先選擇無線網絡里面的『無線網絡設定』,然后在右邊的窗口當中 (2)填寫正確的 SSID 號碼,然后按下 (3)儲存即可。之后就是密碼項目啦!密碼項目的設定畫面如下:
圖 4.3-3、無線網絡 AP 的密鑰設定項目
我們先選擇 (1)無線網絡加密設定,然后在右邊窗口 (2)點選 WPA-PSK/WPA2-PSK 的加密方式,然后 (3)輸入加密的密鑰長度,鳥哥這里填寫的算是簡單到爆炸的密碼,小朋友不要學喔!填完后按下儲存即可。 這個時候我們就會有底下兩個數據:
- SSID: vbird_tsai
- 密鑰密碼: 123456789aaa
這僅是個范例說明! AP 設定就到此為止,如果您的設定有不同的地方,請自行查詢您 AP 的操作手冊呦!
4.3.3 利用無線網卡開始聯機
無線網卡有很多模式,鳥哥選擇的是 USB 無線網卡,所以想要知道有沒有捉到這張網卡,就得要使用 lsusb 來檢查, 如果核心預設不支持,還得要自行編譯驅動程序才行!如前所述,我們的驅動程序已經捉在 /root 底下了!
使用 USB 無線網卡的檢查方式如下:
| [root@www ~]# lsusb Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 003: ID 07d1:3c0a D-Link System DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT2870] Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub # 是有捉到的!只是,有加載嗎?不知道呢!繼續往下檢查看看! |
知道核心偵測到這張網卡,但是能不能正確的加載模塊呢?來瞧瞧:
| [root@www ~]# iwconfig lo no wireless extensions. eth0 no wireless extensions. # 要出現名為 wlan0 之類的網卡才是有捉到喔!所以沒有加載正確模塊啦! |
| [root@www ~]# rpm -ivh kmod-rt3070sta* rt2870-firmware* # 這個動作會進行很久,似乎程序在偵測硬件的樣子! # 這個咚咚做完之后,請將 USB 網卡插入 USB 插槽吧![root@www ~]# iwconfig lo no wireless extensions. eth0 no wireless extensions. ra0 Ralink STA |
好了,接下來要干嘛?當然是看看我們的無線網卡是否能夠找到 AP 啊!所以,首先我們要啟動無線網卡,就利用 ifconfig 即可:
| [root@www ~]# ifconfig ra0 up |
| [root@www ~]# iwlist ra0 scan ra0 Scan completed :Cell 01 - Address: 74:EA:3A:C9:EE:1AProtocol:802.11b/g/nESSID:"vbird_tsai"Mode:ManagedFrequency:2.437 GHz (Channel 6)Quality=100/100 Signal level=-45 dBm Noise level=-92 dBmEncryption key:onBit Rates:54 Mb/sIE: WPA Version 1Group Cipher : CCMPPairwise Ciphers (1) : CCMPAuthentication Suites (1) : PSKIE: IEEE 802.11i/WPA2 Version 1Group Cipher : CCMPPairwise Ciphers (1) : CCMPAuthentication Suites (1) : PSK ....(底下省略).... |
- https://wiki.archlinux.org/index.php/Rt2870
| [root@www ~]# ifconfig ra0 down && rmmod rt3070sta [root@www ~]# vim /etc/Wireless/RT2870STA/RT2870STA.dat Default CountryRegion=5 CountryRegionABand=7 CountryCode=TW <==臺灣的國碼代號! ChannelGeography=1 SSID=vbird_tsai <==你的 AP 的 ESSID 喔! NetworkType=Infra WirelessMode=9 <==與無線 AP 支持的協議有關!參考上述網址說明 Channel=6 <==與 CountryRegion 及偵測到的頻道有關的設定! ....(中間省略).... AuthMode=WPAPSK <==我們的 AP 提供的認證模式 EncrypType=AES <==傳送認證碼的加密機制啊! WPAPSK="123456780aaa" <==密鑰密碼!最好用雙引號括起來較佳! ....(底下省略).... # 鳥哥實際有修改的,就是上面有特別說明的地方,其余的地方都保留默認值即可。 # 更奇怪的是,每次 ifconfig ra0 down 后,這個檔案會莫名其妙的修改掉 @_@[root@www ~]# modprobe rt3070sta && ifconfig ra0 up [root@www ~]# iwconfig ra0 ra0 Ralink STA ESSID:"vbird_tsai" Nickname:"RT2870STA"Mode:Auto Frequency=2.437 GHz Access Point: 74:EA:3A:C9:EE:1ABit Rate=1 Mb/sRTS thr:off Fragment thr:offEncryption key:offLink Quality=100/100 Signal level:-37 dBm Noise level:-37 dBmRx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0Tx excessive retries:0 Invalid misc:0 Missed beacon:0 |
因為我們的網絡卡使用的代號是 ra0,所以也是需要在 /etc/sysconfig/network-scripts 設定好相對應的檔案才行啊!而由于我們的這塊卡其實是無線網卡, 所以很多設定值都與原本的以太網絡卡不同,詳細的各項變量設定你可以自行參考一下底下的檔案:
- /etc/sysconfig/network-scripts/ifup-wireless
至于我的網絡卡設定是這樣的:
| [root@www ~]# cd /etc/sysconfig/network-scripts [root@www network-scripts]# vim ifcfg-ra0 DEVICE=ra0 BOOTPROTO=dhcp ONBOOT=no <== 若需要每次都自動啟動,改成 yes 即可! ESSID=vbird_tsai RATE=54M <== 可以嚴格指定傳輸的速率,要與上面 iwconfig 相同,單位 b/s |
| Tips: 其實上面那個配置文件的內容都是在規劃出 iwconfig 的參數而已,所以你除了可以查閱 ifup-wireless 的內容外,可以 man iwconfig ,會知道的更詳細喔!而最重要的參數當然就是 ESSID 及 KEY 啰! ^_^ |
要啟動就用 ifup wlan0 來啟動,很簡單啦!要觀察就用 iwconfig 及 ifconfig 分別觀察,底下你自己瞧瞧就好啊! ^_^
| [root@www ~]# ifup ra0 Determining IP information for ra0... done. |
整個流程就是這么簡單喔!一般來說,目前比較常見的筆記本電腦內建的 Intel 無線網絡模塊 (Centrino) 適用于 Linux 的 ipw2200/ipw21000 模塊,所以設定上也是很快!因為 CentOS 6.x 預設就有支持,你不必重新安裝無線網卡驅動程序! 那直接透過上述的方式來處理你的無線網絡即可!很快速又方便吧!本章結尾的參考數據處, 鳥哥還是列出許多與無線網卡有關的連結,你可以自行前往查閱與你的無線網卡有關的信息喔(注6)! ^_^
4.4 常見問題說明
其實這個小節也很重要的!因為可以讓你在念完理論后,了解一下如何利用那些概念來查詢你的網絡設定問題喔! 底下我們就針對幾個常見的問題來說說看吧!
4.4.1 內部網域使用某些聯機服務(如 FTP, POP3)所遇到的聯機延遲問題
你或許曾經聽過這樣的問題:『我在我的內部區域網域內有幾部計算機, 這幾部計算機明明都是在同一個網域之內,而且系統通通沒有問題,為什么我使用 pop3 或者是 ftp 連上我的 Linux 主機會停頓好久才連上?但是連上之后,速度就又恢復正常!』
由于網絡在聯機時,兩部主機之間會互相詢問對方的主機名配合的 IP ,以確認對方的身份。 在目前的因特網上面,我們大多使用 Domain Name System (DNS) 系統做為主機名與 IP 對應的查詢,那就是我們在上面提到的 /etc/resolv.conf 檔案內設定的 IP 由來, 如果沒有指定正確的 DNS IP 的話,那么我們就無法查詢到主機名與 IP 的對應了。
公開的因特網可以這樣設定,但是如果是我們內部網域的私有 IP 主機呢? 因為是私有 IP 的主機,所以當然無法使用 /etc/resolv.conf 的設定來查詢到這部主機的名稱啊! 那怎么辦?要知道,如果兩部主機之間無法查詢到正確的主機名與 IP 的對應, 那么將『可能』發生持續查詢主機名對應的動作,這個動作一般需要持續 30-60 秒,因此,你的該次聯機將會持續檢查主機名 30 秒鐘,也就會造成奇怪的 delay 的情況。
這個問題最常發生在內部的 LAN ,例如使用 192.168.1.1 的主機聯機到 192.168.1.2 的主機。 這個問題雖然可以透過修改軟件的設定來略過主機名的檢查,但是絕大多數的軟件都是默認啟用這個機制的, 因此,內部主機『老是聯機時期很慢,聯機成功后速度就會恢復正常』 時,通常就是這個問題啦!尤其是在 FTP 及 POP3 等網絡聯機軟件上最常見。
那么如何避過這個情況?最簡單的方法就是『給予內部的主機每部主機一個名稱與 IP 的對應』即可。舉例來說,我們知道每部主機都有一個主機名為 localhost ,對應到 127.0.0.1 ,為什么呢?因為這個 127.0.0.1 與 localhost 的對應就被寫到 /etc/hosts 內嘛! 當我們需要主機名與 IP 的對應時,系統就會先到 /etc/hosts 找尋對應的設定值, 如果找不到,才會使用 /etc/resolv.conf 的設定去因特網找。這樣說,你明白了吧? 也就是說,只要修改了?/etc/hosts,加入每部主機與 IP 的對應, 就能夠加快主機名的檢查啰!
了解了嗎?所以說,你就要將你的 私有 IP 的計算機與計算機名稱寫入你的?/etc/hosts?當中了!這也是為啥我們在主機名設定的地方, 特別強調第五個檢查步驟的緣故。我們來看一看 /etc/hosts 原本的設定內容吧!
| [root@www ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost # 主機的 IP 主機的名稱 主機的別名 |
在上面的情況中很容易就發現了設定的方法了吧!很簡單吧!沒錯!那就是 IP 對應主機名啦! 那么現在知道為什么我們給他 ping localhost 的時候,地址會寫出 127.0.0.1 了吧! 那就是寫在這個檔案中的啦!而且 localhost 那一行不能拿掉呦! 否則系統的某些服務可能就會無法被啟動!好了!那么將我局域網絡內的所有的計算機 IP 都給他寫進去!并且,每一部給他取一個你喜歡的名字,?即使與 client 的計算機名稱設定不同也沒關系啦! 以鳥哥為例,如果我還額外加設了 DHCP 的時候,那么我就干脆將所有的 C Class 的所有網段全部給他寫入 /etc/hosts 當中,有點像底下這樣:
| [root@www ~]# vim /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.1 linux001 192.168.1.2 linux002 192.168.1.3 linux003 ......... ......... 192.168.1.254 linux254 |
如此一來,不論我哪一部計算機連上來,不論是在同一個網段的哪一個 IP , 我都可以很快速的追查到!嘿嘿!那么區內網絡互連的時候,就不會多等個好幾時秒鐘啰!
4.4.2 網址列無法解析問題
很多朋友常問的一個問題『咦!我可以撥接上網了,也可以 ping 到奇摩雅虎的 IP ,但為何就是無法直接以網址連上 Internet 呢!』嘿!被氣死! 前面不是一直強調那個 DNS 解析的問題嗎?對啦!就是名稱解析不對啦!趕快改一下 /etc/resolv.conf 這個檔案吧!改成上層 ISP 給你的 DNS 主機的 IP 就可以啦!例如 Hinet 的 168.95.1.1 及 Seednet 的 139.175.10.20 啰!例如底下的范例(這個范例就可以照抄了! ^_^):
| [root@www ~]# vi /etc/resolv.conf nameserver 168.95.1.1 nameserver 139.175.10.20 |
朋友們常常會在這個地方寫錯,因為很多書上都說這里要設定成為 NAT 主機的 IP , 那根本就是不對的!你應該要將所有管理的計算機內,關于 DNS 的設定都直接使用上面的設定值即可! 除非你的上層環境有使用防火墻,那才另外考慮!
4.4.3 預設路由的問題
記得我們在前兩章提到的網絡基礎當中,不是講了很多預設路由 (default gateway) 相關的說明嗎? 預設路由通常僅有一個,用來做為同一網域的其他主機傳遞非本網域的封包網關。 但我們也知道在每個網絡配置文件案 (/etc/sysconfig/network-scripts/ifcfg-ethx) 內部都可以指定『 GATEWAY 』這個參數,若這個參數重復設定的話,那可就麻煩啦!
舉例來說,你的 ifcfg-eth0 用來做為內部網域的溝通,所以你在該檔案內設定 GATEWAY 為你自己的 IP , 但是該主機為使用 ADSL 撥接,所以當撥接成功后會產生一個 ppp0 的接口,這個 ppp0 接口也有自己的 default gateway ,好了,那么當你要將封包傳送到 Yahoo 這個非為本網域的主機時, 這個封包是要傳到 eth0 還是 ppp0 呢?因為兩個都有 default gateway 啊!
沒錯!很多朋友就是這里搞不懂啦!常常會錯亂~所以,請注意,?你的 default gateway 應該只能有一個, 如果是撥接,請不要在 ifcfg-eth0 當中指定 GATEWAY或 GATEWAYDEV 等變量,重要重要!
更多的網絡除錯請參考后續第六章 Linux 網絡偵錯的說明。
4.5 重點回顧
- Linux 以太網絡卡的默認代號為 eth0, eth1 等等, 無線網卡則為 wlan0, ra0 等等;
- 若需要自行編譯網卡驅動程序時,則你必須要先安裝 gcc, make, kernel-header 等軟件。
- 內部網域的私有 IP 之主機的『 IP 與主機名的對應』,最好還是寫入 /etc/hosts , 可以克服很多軟件的 IP 反查所花費的等待時間。
- IP 參數設定在 /etc/sysconfig/network-scripts/ifcfg-eth0 當中,主機名設定在 /etc/sysconfig/network 當中,DNS 設定在 /etc/resolv.conf 當中,主機名與 IP 的對應設定在 /etc/hosts;
- 在 GATEWAY 這個參數的設定上面,務必檢查妥當,僅設定一個 GATEWAY 即可。
- 可以使用 /etc/init.d/network restart 來重新啟動整個系統的網絡接口。
- 若使用 DHCP 協議時,則請將 GATEWAY 取消設定,避免重復出現多個 default gateway ,反而造成無法聯機的狀況。
- ADSL 撥接后可以產生一個新的實體接口,名稱為 ppp0
- 無線網卡與無線基地臺之間的聯機由于是透過無線接口,所以需要特別注意網絡安全;
- 常見的無線基地臺(AP)的聯機防護,主要利用控制登入者的 MAC 或者是加上聯機加密機制的密鑰等方法;
- 設定網絡卡可以使用 ifconfig 這個指令,而設定無線網卡則需要 iwconfig ,至于掃瞄基地臺, 可以使用 iwlist 這個指令。
4.6 本章習題
- 我要如何確定我在 Linux 系統上面的網絡卡已經被 Linux 捉到并且驅動了? 網絡卡能不能被捉到可以使用『 dmesg|grep eth 』來判斷,有沒有驅動則可以使用 lsmod 看看模塊有沒有加載核心!最后,以 ifconfig eth0 192.168.0.10 測試看看!
- 假設我的網絡參數為:IP 192.168.100.100, Netmask 255.255.255.0, 請問我要如何在 Linux 上面設定好這些網絡參數 (未提及的網絡參數請自行定義!)?請使用手動與檔案設定方法分別說明。 手動設定為:『 ifconfig eth0 192.168.100.100 netmask 255.255.255.0 up 』
檔案設定為:vi /etc/sysconfig/network-scripts/ifcfg-eth0 ,內容為:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.100.100
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255 要啟動則使用 ifup eth0 即可! - 我要將我的 Linux 主機名改名字,步驟應該如何(更改那個檔案?如何啟用?)? Linux 主機名在 /etc/sysconfig/network 這個檔案里面的『HOSTNAME=主機名』來設定,先以 vi 來修改,改完后可以使用 /etc/init.d/network restart 不過建議直接 reboot 啟動主機名!
- /etc/resolv.conf 與 /etc/hosts 的功能為何? 以主機名尋找 IP 的方法, /etc/resolv.conf 內填寫 DNS 主機名,至于 /etc/hosts 則直接填寫主機名對應的 IP 即可! 其中 /etc/hosts 對于內部私有 IP 的主機名查詢非常有幫助!
- 我使用 ADSL 撥接連上 Internet ,請問撥接成功之后,我的 Linux 上面會有幾個網絡接口 (假設我只有一個網絡卡)? 因為撥接是使用 PPP (點對點)協議,所以撥接成功后會多出一個 ppp0 的接口,此外,系統原本即有 eth0 及 lo 這兩個界面,所以共有三個界面。
- 一般來說,如果我撥接成功,也取得了 ppp0 這個接口,但是卻無法對外聯機成功, 你認為應該是哪里出了問題?該如何解決? 因為撥接成功了,表示物理對外聯機沒有問題,那么可能的問題應該是發生在 Gateway 上面了!確認的方法請使用 route -n 查閱路由信息,然后修訂 /etc/sysconfig/network-scripts/ifcfg-eth0 吧!
- 如果你的局域網絡環境內有可以控管的無線 AP 時,請自行查出如何以 MAC 的方式管理可登入的用戶, 并將你的無線 AP 做好聯機加密的密鑰設定。 請自行測試!謝謝!
- 如果一部主機上面插了兩張相同芯片的網絡卡,代表兩者使用的模塊為同一個,此時可能會造成網卡代號的誤判; 請問你如何克服這個問題?讓網卡代號不會變動? 以現在的方法來講,其實我們可以透過指定 Hardware Address(硬件地址,通稱為 MAC) 來指定網卡代號與 MAC 的對應。 這個設定值可以在 ifcfg-ethx 里面以 HWADDR 這個設定項目來指定的。
- 如何在 Linux 上面的文字接口搜尋你所在區域的無線 AP ? 透過直接使用『 iwlist scan 』這個指令來指定某個無線網卡的搜尋! 然后再以 iwconfig 來進行網卡的設定即可!
- 請依序說明:如果你想要新增一塊新的網絡卡在你的主機上,并給予一個固定的私有 IP ,應如何進行?
- 先關掉主機的 power ,然后拆掉機殼,裝上網絡卡;
- 開機完成后,以 dmesg | grep eth 查詢是否可捉到該網絡卡,若無法捉到,請編譯模塊,若可捉到,找出網卡代號, 并且將該模塊與網卡代號寫入 /etc/modprobe.conf 當中,以利未來開機時可自動達成對應;
- 利用『 ifconfig "網卡代號" 』來查詢 MAC 為何?
- 開始在 /etc/sysconfig/network-scripts 內建立 ifcfg-"網卡代號" 檔案,同時給予 HWADDR 的對應;
- 啟動 /etc/init.d/network restart 測試是否能成功!
- 如果你想要登入某個區域的無線 AP ,你應該向該處所至少申請哪些數據? 無線網絡的技術相當多且復雜,所以需要取得的參數都不盡相同。不過,至少你還是得要取得 ESSID 以及 KEY 密碼,這樣才能夠聯機登入該 AP 當中。
4.7 參考數據與延伸閱讀
- 注1:rp-pppoe 官方網站:http://www.roaringpenguin.com/pppoe/
rp-pppoe 的安裝方法:http://linux.vbird.org/linux_server/0130internet_connect/0130internet_connect.php#connect_adsl - 注2:相關的認證說明:
chap:?http://en.wikipedia.org/wiki/Challenge-handshake_authentication_protocol
pap:?http://en.wikipedia.org/wiki/Password_authentication_protocol - 注3:802.11n 在維基百科的說明:http://en.wikipedia.org/wiki/IEEE_802.11n-2009
- 注4:Wi-Fi?http://zh.wikipedia.org/zh-tw/WiFi
WiMAX?http://zh.wikipedia.org/wiki/WiMAX?variant=zh-tw - 注5:無線網絡安全白皮書:http://www.cert.org.tw/document/docfile/Wireless_Security.pdf
- 注6:Intel Centrino 的無線網卡相關模塊信息:
http://ipw2100.sourceforge.net/,?http://ipw2200.sourceforge.net/
HP 的許多無線網絡的計劃鏈接:http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
總結
以上是生活随笔為你收集整理的鸟哥的Linux私房菜(服务器)- 第四章、连上 Internet的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试题精选100题(63)-数组中
- 下一篇: 鸟哥的Linux私房菜(服务器)- 第五