您的位置:首页 > 理论基础 > 计算机网络

Linux网络基础()以Debian的方式

2007-09-18 00:48 417 查看
原贴:http://debian.linuxsir.org/doc/inthedebianway/debian_net.html

以Debian的方式系列(INTHEDEBIANWAY):

Linux网络基础

etonyC.F.AN
etony@tom.com

v0.0.1,2006-7-23本文档主要介绍讲述在Debian系统下有关网络的一些基本信息.

1.声明

版本信息:
本文档的最新版本将张贴于:LinuxSir.Org论坛
Debian发行版讨论区
;

也可以从
http://debian.linuxsir.org/
获取.

反馈:
所有评论,错误报告,其他信息以及批评,请邮寄到
etony@tom.com
;

或在LinuxSir.Org论坛
Debian发行版讨论区
张贴.

版权信息:
本文档的版权
(c)2006-2007
etonyC.F.AN
所有.

转载请注明源自
http://debian.linuxsir.org/
.

2.网络相关配置文件介绍

2.1/etc/hosts

包含(本地网络中)已知主机的一个列表。如果系统的IP不是动态获取,就可以使用它。对于简单的主机名解析(点分表示法),在请求DNS或NIS网络名称服务器之前,/etc/hosts.conf通常会告诉解析程序先查看这里。


文件格式:
ip地址主机名别名

$cat/etc/hosts

127.0.0.1localhost.localdomainlocalhost


2.2/etc/services

Internet网络服务文件,将网络服务名转换为端口号/协议。由inetd、telnet、tcpdump和一些其它程序读取。文件中的每一行对应一种服务,它由4个字段组成,中间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”。


文件格式:
服务端口/端口类型别名

$cat/etc/services|more

tcpmux1/tcp#TCPportservicemultiplexer
echo7/tcp
echo7/udp
discard9/tcpsinknull
discard9/udpsinknull
systat11/tcpusers
daytime13/tcp
daytime13/udp
netstat15/tcp
qotd17/tcpquote
msp18/tcp#messagesendprotocol


2.3/etc/hostname

主机名配置文件,该文件只有一行,记录着本机的主机名。

文件格式:


主机名
$cat/etc/hostname
tonybox


2.4/etc/host.conf

当系统中同时存在DNS域名解析和/etc/hosts主机表机制时,由该/etc/host.conf确定主机名解释顺序。示例:


orderhosts,bind#名称解释顺序
multion#允许主机拥有多个IP地址
nospoofon#禁止IP地址欺骗


order是关键字,定义先用本机hosts主机表进行名称解释,如果不能解释,再搜索bind名称服务器(DNS)。

2.5/etc/nsswitch.conf

名称服务交换设定档。它控制了数据库搜寻的工作,包括承认的主机,使用者,群组等。此外,这个档案还定义了所要搜寻的数据库,例如此行:


hosts:filesdns


指明主机数据库来自两个地方,files(/etc/hostsfile)和DNS,并且本机上档案优先于DNS。


$cat/etc/nsswitch.conf

passwd:compat
group:compat
shadow:compat

hosts:filesdns
networks:files

protocols:dbfiles
services:dbfiles
ethers:dbfiles
rpc:dbfiles

netgroup:nis


2.6/etc/resolv.conf

该文件是DNS域名解析的配置文件,它的格式很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个,分别是:


nameserver#定义DNS服务器的IP地址
domain#定义本地域名
search#定义域名的搜索列表
sortlist#对返回的域名进行排序


下边是一个示例:


#cat/etc/resolv.conf
domainmydebian.com
nameserver192.168.1.1//最多三个域名服务器地址


2.7/etc/network/interfaces

网络接口参数配置文件,下面是一个配置示例,有两个网络接口,其中eth0分配静态IP地址,eth1动态获取IP地址:


#Thisfiledescribesthenetworkinterfacesavailableonyoursystem
#andhowtoactivatethem.Formoreinformation,seeinterfaces(5).

#Theloopbacknetworkinterface
autolo
ifaceloinetloopback

#Theprimarynetworkinterface
autoeth0
ifaceeth0inetstatic
address192.168.1.254
network192.168.1.0
netmask255.255.255.0
broadcast192.168.1.255
gateway192.168.1.1

autoeth1
ifaceeth1inetdhcp


如果对此文件进行修改,需要重启网络方能生效:


#/etc/init.d/networkingrestart


3.基本的网络配置命令和脚本

3.1etherconf

Debian下提供一个名叫etherconf软件包,用于配置网络信息,这包括主机名,IP,DHCP,DNS,GATEWAY,NETMASK...等,默认没有安装这一软件包,需要您手动安装:


#aptitudeinstalletherconf


安装完毕后运行:


$dpkg-reconfigureetherconf


进行配置.

这个软件会修改以下配置文件:


/etc/resolv.conf
/etc/network/interfaces
/etc/hosts
/etc/hostname


重复使用这一配置文件的方法是:


#dpkg-reconfigureetherconf


3.2/etc/init.d/networking

系统启动时的初始化脚本,当系统以某个级别启动时,它负责初始化所有的已配置的网络接口.

3.3ifconfig

用于配置常驻内核的网络接口。它用于在引导成功时设定网络接口。此后,只在需要调试及系统调整时才使用。


命令格式:
ifconfig[接口]
ifconfig接口[aftype]options|address...


如没有给出参数,ifconfig显示当前有效接口的状态。如给定单个接口作为参数,它只显示给出的那个接口的状态;如果给出一个-a参数,它会显示所有接口的状态,包括那些停用的接口。否则就对一个接口进行配置。


选项
接口接口名称。通常是一个后跟单元号的驱动设备名,例如第一个以太接口eth0。

up
此选项激活接口。如果给接口声明了地址,等于隐含声明了这个选项。
down
此选项使接口驱动设备关闭。

netmaskaddr
为接口设定IP网络掩码。缺省值通常是A,B或C类的网络掩码(由接口的IP地址推出),但也可设为其它值。
addaddr/prefixlen
为接口加入一个IPv6地址。
deladdr/prefixlen
为接口删除一个IPv6地址。
hwclassaddress
如接口驱动程序支持,则设定接口的硬件地址。此选项必须后跟硬件的类型名称和硬件地址等价的可打印ASCII字符。当前支持的硬件类型包括ether(以太网),ax25(AMPRAX.25),ARCnet和netrom(AMPRNET/ROM)

 利用ifconfig命令查看网络信息:


ifconfig
eth0Linkencap:EthernetHWaddr00:15:58:3E:F2:6B
inetaddr:192.168.1.254Bcast:192.168.1.255Mask:255.255.255.0
inet6addr:fe80::215:58ff:fe3e:f26b/64Scope:Link
UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1
RXpackets:29458errors:0dropped:0overruns:0frame:0
TXpackets:23690errors:0dropped:0overruns:0carrier:0
collisions:0txqueuelen:1000
RXbytes:10945195(10.4MiB)TXbytes:2935004(2.7MiB)
Interrupt:169Baseaddress:0xe200

eth0:0Linkencap:EthernetHWaddr00:15:58:3E:F2:6B
inetaddr:192.168.1.244Bcast:192.168.1.255Mask:255.255.255.0
UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1
Interrupt:169Baseaddress:0xe200

loLinkencap:LocalLoopback
inetaddr:127.0.0.1Mask:255.0.0.0
inet6addr:::1/128Scope:Host
UPLOOPBACKRUNNINGMTU:16436Metric:1
RXpackets:354errors:0dropped:0overruns:0frame:0
TXpackets:354errors:0dropped:0overruns:0carrier:0
collisions:0txqueuelen:0
RXbytes:45062(44.0KiB)TXbytes:45062(44.0KiB)

ppp0Linkencap:Point-to-PointProtocol
inetaddr:18.18.18.13P-t-P:18.18.18.1Mask:255.255.255.255
UPPOINTOPOINTRUNNINGNOARPMULTICASTMTU:1396Metric:1
RXpackets:9631errors:0dropped:0overruns:0frame:0
TXpackets:9189errors:0dropped:0overruns:0carrier:0
collisions:0txqueuelen:3
RXbytes:8460352(8.0MiB)TXbytes:913898(892.4KiB)


ifconfig的第一种格式(或使用不带任何参数的ifconfig命令)可以用来查看当前系统的网络配置情况。


*eth0:表示网卡代号
*lo:Linux内部的网络回环地址,用于模拟网络行为,
*HWaddr:网卡的硬件地址,也就是MAC地址
*inetaddr:网卡的ip地址
*Bcast:广播地址(broadcast);
*Mask:子网掩码;
*MTU:最大传输单元的缩写(MaximumTrasmissionUnit),标示此网络接口的可传输的最大封包,此值的设定错误可能引起网络故障.
*RX:网络从起动到现在为止数据的接收情况
*TX:网络从起动到现在为止数据的发送情况
*collisions:网络信号发生冲突的情况;


激活网络设备


ifconfigeth0up


更改网络设备信息


#ifconfigeth0192.168.1.112netmask255.255.255.0


关闭网络设备


ifconfigeth0down


修改网卡的MAC地址


ifconfigeth0down
ifconfigeth0hwetherxx:xx:xx:xx:xx:xx
ifconfigeth0up


4.网络服务相关

5.测试网络

5.1ping

向网络主机发送ICMP回显请求(ECHO_REQUEST)分组程序使用ICMP协议的强制回显请求数据报以使主机或网关发送一份ICMP的回显应答。回显请求数据报(``pingsIP及ICMP的报头,后跟一个``时间值关键字''然后是一段任意长度的填充字节用于把保持分组长度为16的整数倍。以下是程序的选项:


ping[-ccount][-iwait][-ppattern][-spacketsize][-tttl]destination

-c
count在发送(和接收)了正好数量为count的回显应答分组后停止操作。
-i
wait在发送每个分组时等待wait个秒数。缺省值为每个分组等待一秒。此选项与-f选项不能同时使用。

-p
pattern可以指定最多16个填充字节用于保持分组长度为16的整数倍。在网络上诊断与数据相关问题时此选项很有用。例如``-pff''将使发出的分组都用全1填充数据区。

-s
packetsize指定要发送数据的字节量。缺省值为56,这正好在添加了8字节的ICMP首部后组装成64字节的ICMP数据报。

-t

ttl指存活数值TTL的大小默认为255



tony@tonybox:~$pingwww.linuxsir.org-c4
PINGwww.linuxsir.org(218.61.34.138)56(84)bytesofdata.
64bytesfrom218.61.34.138:icmp_seq=1ttl=52time=103ms
64bytesfrom218.61.34.138:icmp_seq=2ttl=52time=125ms
64bytesfrom218.61.34.138:icmp_seq=3ttl=52time=126ms
64bytesfrom218.61.34.138:icmp_seq=4ttl=52time=110ms

---www.linuxsir.orgpingstatistics---
4packetstransmitted,4received,0%packetloss,time3003ms
rttmin/avg/max/mdev=103.513/116.329/126.598/9.856ms
tony@tonybox:~$


5.2route

Routeroute程序对内核的IP路由表进行操作。它主要用于给那些已经用ifconfig(8)程序配置过的接口指定主机或网络设置静态路由。

当使用了add或del选项的时候,route修改路由表.如果没有这些选项,route显示当前路由表的内容.


#route[-nee]
#routeadd[-net|-host]目标主机或网络[netmask][gw|dev]
#routedel[-net|-host]目标主机或网络[netmask][gw|dev]

-n   :数字地址形式代替解释主机名形式来显示地址。此项对检测为何你到域名服务器的路由发生故障的原因非常有用。
-ee  :将产生包括选路表所有参数在内的大量信息
add  :添加一条路由
del  :删除一条路由
-net  :路由目标target为网络。
-host :路由目标target为主机。
netmask:为添加的路由指定网络掩码!
gw  :通过一个网关进行包路由.


注意:

指定的网关首先必须是可达的。也就是说必须为该网关预先指定一条静态路由。如果你为本地接口之一指定这个网关地址的话,那么此网关地址将用于决定此接口上的分组将如何进行路由。这是兼容BSD风格。dev  :强制路由与指定的设备关联,否则内核自己会试图检测相应的设备(方法是检查要增加的路由项所处环境中已存在的路由和设备声明)。在多数正常的网络上无需使用。


#route查看本地路由信息
tonybox:/etc/network/run#route
KernelIProutingtable
DestinationGatewayGenmaskFlagsMetricRefUseIface
18.18.18.1*255.255.255.255UH000ppp0
192.168.1.0*255.255.255.0U000eth0
default*0.0.0.0U000ppp0



routeadd-net127.0.0.0
加一条普通的回环记录,它使用掩码255.0.0.0(从目标地址可以判断它是A类网)并与设备"lo"相关联.

routeadd-net192.168.1.0netmask255.255.255.0deveth0
给通过"eth0"的路由表添加一条指向网络192.56.76.x的路由。其中C类子网掩码修饰词并不是必须的,因为192.*是个C类的IP地址。这里可省略关键字"dev"。

routeadddefaultgw192.168.1.1
加入一条缺省路由(如果无法匹配其它路由则用它)。使用此路由的所有包都将通过网关192.168.1.1进行传输。

routeadd224.0.0.0netmask240.0.0.0deveth0
这是一条模糊的命令,把它记录在案就可以让人们知道如何做了.此命令设定所有D类地址(用于组播)的路由通过"eth0"进行。这是用于带组播的内核正确的配置行。


5.3traceroute


traceroute[-dFIlnrvx][-ffirst_ttl][-ggateway]
[-iiface][-mmax_ttl][-pport]
[-qnqueries][-ssrc_addr][-ttos]
[-wwaittime][-zpausemsecs]
host[packetlen]


通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。UNIX系统中,我们称之为Traceroute,MSWindows中为Tracert。Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。


-d
指定不对计算机名解析地址。
-hmaximum_hops
指定查找目标的跳转的最大数目。
-jcomputer-list
指定在computer-list中松散源路由。
-wtimeout
等待由timeout对每个应答指定的毫秒数。
host
目标计算机的名称。



#traceroutewww.linuxsir.org
traceroutetowww.linuxsir.org(218.61.34.138),30hopsmax,40bytepackets


6.配置ADSL上网

首先,你要拥有上网帐号和密码,并且有一块网卡正确的与ADSLmoden正确相连

6.1安装PPPoE软件包


$sudoinstallpppoepppoeconf


6.2然后进行配置


确认检测到了您的网卡
输入您的ADSL帐号
输入您的ADSL帐号密码
常规选项:是否修改默认路由:yes
是否获取DNS:yes
是否在引导时自动连接:yes
是否马上建立连接:yes


完成这些步骤以后,连接应该可以正常使用了

6.3手动控制


$sudopondsl-provider#手动连接
$sudopoffdsl-provider#手动断开连接


6.4FAQ

Q:拨号成功,但无法和外网通讯

A:使用route命令检查本地路由,看默认路由是否正确

Q:无法解析域名

A:检查/etc/resolv.conf文件,看是否正确获取了DNS
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: