# 网络基本功(十二):细说Linux网络配置(上)
**转载请在文首保留原文出处:EMC中文支持论坛**[https://community.emc.com/go/chinese](https://community.emc.com/go/chinese) [![image001.gif](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98708/image001.gif)](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地址开始,跟随识别到的各种符号名:
[![image002.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98718/image002.jpg)](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**中配置网络信息。
[![image003.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98719/image003.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98719/image003.jpg)
主机名在 **/etc/hostname**中设置。很多场景都要用到这一文件中配置的名字,某些情况下对命名是有限制要求的。
IP地址,网络掩码,默认网关在 **/etc/network/interfaces**中设置。以iface关键字开头的一行介绍了各个接口。iface之后的缩进行指明附加参数。例如:
[![image004.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98720/image004.jpg)](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。下图显示了底层的配置文件。
[![image005.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98721/image005.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98721/image005.jpg)
除了DNS参数以及系统主机名之外,SUSE将大多数网络选项配置在 **/etc/sysconfig/network**目录下的**ifcfg**-interface文件。每一个接口呈现一个文件。
除了指定接口的IP地址,网关,以及广播信息,**ifcfg-***文件可以配置很多其他网络选项。**ifcfg.template**文件对很多参数有清楚的注释。以下图为例:
[![image006.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98722/image006.jpg)](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域名以及默认网关。
[![image007.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98723/image007.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98723/image007.jpg)
例如,以下是某个以太网接口的**network**文件:
[![image008.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98724/image008.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98724/image008.jpg)
接口相关的数据存储在 **/etc/sysconfig/network-scripts/ifcfg-**ifname,ifname是网络接口的名字,该文件为每个接口设置IP地址,掩码,网络,以及广播地址。也包含指明接口是否要在启动时开启。
常规机器有配置以太网接口以及回环接口的文件,例如
[![image009.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98725/image009.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98725/image009.jpg)
以及
[![image010.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98726/image010.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98726/image010.jpg)
基于DHCP的echo文件更加简单:
[![image011.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98727/image011.jpg)](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**命令指定参数:
[![image012.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98728/image012.jpg)](https://community.emc.com/servlet/JiveServlet/showImage/2-846116-98728/image012.jpg)
首先列出的是接口,但它实际上是在**route**命令行的最后执行,将路由与指定接口相关联。(也可以在GUI中看到该架构,路由作为部分设置内容配给各个接口)。命令剩下的内容包含**route**参数。上文静态路由的例子会产生如下命令:
[![image013.jpg](https://community.emc.com/servlet/JiveServlet/downloadImage/2-846116-98729/670-42/image013.jpg)](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