# 網絡基本功(十二):細說Linux網絡配置(上)
**轉載請在文首保留原文出處:EMC中文支持論壇**[https://community.emc.com/go/chinese](https://community.emc.com/go/chinese) [](http://service.weibo.com/share/share.php?title=%23ECN%e4%b8%ad%e6%96%87%e6%94%af%e6%8c%81%e8%ae%ba%e5%9d%9b%23 %e7%bd%91%e7%bb%9c%e5%9f%ba%e6%9c%ac%e5%8a%9f%ef%bc%88%e5%8d%81%e4%ba%8c%ef%bc%89%ef%bc%9a%e7%bb%86%e8%af%b4Linux%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae%ef%bc%88%e4%b8%8a%ef%bc%89 @EMC%e6%98%93%e5%ae%89%e4%bf%a1%e4%b8%ad%e5%9b%bd%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba&url= https://community.emc.com/message/846116#846116)
## 介紹
將一臺設備添加到本地網絡的基本步驟包括:
* 指定唯一的IP地址與主機名。
* 確保啟動時正確配置網絡接口。
* 創建默認路由。
* 指定DNS域名服務器以使設備能夠連接到網絡其他部分。
## 更多信息
**指定主機名與IP地址:**
使用**/etc/hosts**文件是將設備名映射到IP地址的最簡單的方式,每一行以IP地址開始,跟隨識別到的各種符號名:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98718/image002.jpg)
由于**/etc/hosts**僅包括本地映射而且必須維護在每一臺客戶端設備,所以最好保存那些需要在啟動時映射的信息(即:主機本身,默認網關,以及域名服務器)。
可使用**hostname**命令為設備指定主機名。該命令通常在啟動腳本中運行,腳本中包含從配置文件讀取的主機名。
**ifconfig:配置網絡接口:**
**ifconfig**打開或關閉網絡接口,設置IP地址與子網掩碼,以及其他選項和參數。通常在啟動時通過命令行從配置文件中讀取參數來運行,但也可以手動運行以做修改。
**ifconfig**命令格式如下:
**ifconfig** interface [family] address options…
例如:
**ifconfig eth0 192.168.1.13 netmask 255.255.255.0 up**
為eth0設置IPv4地址與子網掩碼,并將該接口準備好供使用。大多數系統中**,** **ifconfig –a**列出系統的網絡接口以及當前設置。
family參數告訴**ifconfig**配置的是哪一種網絡協議。用戶可以對一個接口設置多個協議并同時使用,但必須分開配置。IPv4選項為**inet,**IPv6選項為**inet6。**缺省為**inet**。
address參數指定接口的IP地址。也可以使用主機名,但該主機名必須能在啟動時解析為IP地址。對于設備的主接口來說,這意味著主機名必須出現在本地**hosts**文件中,因為其他解析方式依賴于已被初始化的網絡。
關鍵字**up**將接口打開,**down**將其關閉**。**
**netmask**選項為接口設置子網掩碼。
**broadcast**選項為接口指定IP廣播地址。
**route:配置靜態路由:**
**route**命令指定靜態路由,指明該路由表項永遠不會更改,即使運行路由進程。當在本地網絡中添加新的設備時,通常僅需要指定默認路由。
這里有兩種情況:一,當報文目的地址是直連網絡上的某臺主機時,路由表中的 “next-hop gateway”是本地主機自己的一個接口,報文直接發送到目的地,這時可在配置接口時用**ifconfig**命令將路由添加到路由表中。 **二,**可能沒有與目的地址相匹配的路由,這時,啟用默認路由,否則,返回ICMP“network unreachable” 或 “host unreachable” 信息給發送方。很多本地網絡只有一個出口,所以只需配置指向出口的默認路由。
每一條**route**命令添加或刪除一條路由。如下**route**命令原型幾乎適用于每一Linux版本:
**# route add -net 192.168.45.128/25 zulu-gw.atrust.net**
該命令通過網關路由器zulu-gw.atrust.net添加一條到192.168.45.128/25網絡的路由。通常,網關路由器是相鄰主機或本地主機的一個接口(Linux要求在網關地址前加上**gw**選項名)。**route**命令必須能夠將zulu-gw.atrust.net解析成IP地址。
**Ubuntu網絡配置:**
如下圖所示,Ubuntu在**/etc/hostname**以及**/etc/network/interfaces**,以及**/etc/network/options**中配置網絡信息。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98719/image003.jpg)
主機名在 **/etc/hostname**中設置。很多場景都要用到這一文件中配置的名字,某些情況下對命名是有限制要求的。
IP地址,網絡掩碼,默認網關在 **/etc/network/interfaces**中設置。以iface關鍵字開頭的一行介紹了各個接口。iface之后的縮進行指明附加參數。例如:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98720/image004.jpg)
**ifup**和**ifdown**命令會讀取該文件并通過調用下層命令(諸如**ifconfig**)并配以合適的參數將接口連通或斷開。auto語句指定啟動時默認或ifup –a運行時的連通接口。
iface行中的inet關鍵字是ifconfig中使用的地址。關鍵字static表示一種“方式”,指eth0的IP地址和網絡掩碼是直接指定的。地址和網絡掩碼行要求靜態配置,gateway行指明默認網關,用于安裝默認路由。
**SUSE網絡配置:**
SUSE用戶可以選擇NetworkManager或是傳統的配置方法,用戶可以在YaST中做出選擇。也可以使用YaST GUI來配置傳統系統。這里,我們介紹傳統方式。除了配置網絡接口以外,YaST也提供 **/etc/hosts**文件,靜態路由,DNS配置的直接UI。下圖顯示了底層的配置文件。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98721/image005.jpg)
除了DNS參數以及系統主機名之外,SUSE將大多數網絡選項配置在 **/etc/sysconfig/network**目錄下的**ifcfg**-interface文件。每一個接口呈現一個文件。
除了指定接口的IP地址,網關,以及廣播信息,**ifcfg-***文件可以配置很多其他網絡選項。**ifcfg.template**文件對很多參數有清楚的注釋。以下圖為例:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98722/image006.jpg)
SUSE系統中全局靜態路由信息(包括默認路由)存儲在**routes**文件中。文件中的各行就好象**route**命令省略了選項名,內容包含目標地址,網關,掩碼,接口以及可選參數存儲在路由表中,供路由進程查詢。對于上述僅有默認路由的主機來說,路由文件包含以下內容:
default 192.168.1.254 - -
針對不同接口的路由保存在**ifroute**-interface文件中,接口部件的命名方法與**ifcfg-***文件一致。其內容格式與**routes**文件相同。
**Red Hat網絡配置:**
Red Hat網絡配置GUI名為**system-config-network**,也可以通過Network名下面的System->Administration菜單下訪問。該工具為配置網絡接口與靜態路由提供了一個簡單的UI,也提供建立IPsec通道,配置DNS,添加**/etc/hosts**的面板。
下表列出了GUI編輯的底層文件。可在**/etc/sysconfig/network**中設置機器的主機名,也包括DNS域名以及默認網關。
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98723/image007.jpg)
例如,以下是某個以太網接口的**network**文件:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98724/image008.jpg)
接口相關的數據存儲在 **/etc/sysconfig/network-scripts/ifcfg-**ifname,ifname是網絡接口的名字,該文件為每個接口設置IP地址,掩碼,網絡,以及廣播地址。也包含指明接口是否要在啟動時開啟。
常規機器有配置以太網接口以及回環接口的文件,例如
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98725/image009.jpg)
以及
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98726/image010.jpg)
基于DHCP的echo文件更加簡單:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98727/image011.jpg)
在**/etc/sysconfig**文件中更改配置信息之后,對相應端口運行 **ifdown** ifname, **ifup** ifname。如果一次配置多個端口,使用命令**service network restart**重置整個網絡。這其實是運行**/etc/rc.d/init.d/network**的一個快速的方法,每次啟動時被調用,加上start參數。
也可以通過啟動腳本來配置靜態路由,添加到**/etc/sysconfig/static-routes** 文件的路由信息在啟動時被存入路由表。這些表項為**route add**命令指定參數:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98728/image012.jpg)
首先列出的是接口,但它實際上是在**route**命令行的最后執行,將路由與指定接口相關聯。(也可以在GUI中看到該架構,路由作為部分設置內容配給各個接口)。命令剩下的內容包含**route**參數。上文靜態路由的例子會產生如下命令:
[](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98729/image013.jpg)
- 介紹
- 網絡基本功(一):細說網絡傳輸
- 網絡基本功(二):細說交換機
- 網絡基本功(三):細說VLAN與Trunk
- 網絡基本功(四):細說路由(上)
- 網絡基本功(五):細說路由(下)
- 網絡基本功(六):鏈路聚合
- 網絡基本功(七):細說IP地址與子網
- 網絡基本功(八):細說TCP滑動窗口
- 網絡基本功(九):細說TCP重傳
- 網絡基本功(十):細說TCP確認機制
- 網絡基本功(十一):TCP窗口調整與流控
- 網絡基本功(十二):細說Linux網絡配置(上)
- 網絡基本功(十三):細說Linux網絡配置(下)
- 網絡基本功(十四):細說診斷工具ping
- 網絡基本功(十五):細說網絡性能監測與實例(上)
- 網絡基本功(十六):細說網絡性能監測與實例(下)
- 網絡基本功(十七):細說tcpdump的妙用(上)
- 網絡基本功(十八):細說tcpdump的妙用(下)
- 網絡基本功(十九):細說NAT原理與配置
- 網絡基本功(二十):細說ICMP和ARP
- 網絡基本功(二十一):細說HTTP(上)
- 網絡基本功(二十二):細說HTTP(下)
- 網絡基本功(二十三):Wireshark抓包實例診斷TCP連接問題
- 網絡基本功(二十四):Wireshark抓包實例分析TCP重傳
- 網絡基本功(二十五):Wireshark抓包實例分析TCP重復ACK與亂序
- 網絡基本功(二十六):Wireshark抓包實例分析TCP窗口及reset
- 網絡基本功(二十七):Wireshark抓包實例分析HTTP問題(上)
- 網絡基本功(二十八):Wireshark抓包實例分析HTTP問題(下)
- 網絡基本功(二十九):Wireshark抓包實例診斷數據庫常見問題
- 網絡基本功(三十):細說DNS(上)
- 網絡基本功(三十一):細說DHCP