Skip to main content

 路由器网 > 新闻资讯 >

linux网络配置详解

2014-06-30 23:07 浏览:

基础知识:

局域网内寻址通过MAC地址(物理地址)来实现

FF:FF:FF:FF:FF:FFMAC的广播地址,主机间通信发起方如果不知道接收方MAC会用此MAC地址发一个广播包。

 

电缆传输过程:电流(电信号)------经过一段距离(电阻)-----电信号衰减中继器

 

不同介质的传输距离不同,但都是有限的。

 

网桥、交换机:切割冲突域(有端口MAC对应表,定期清理---学习)

路由器:(有路由表,定期学习、清理),选路根据路由协议,逻辑寻址依靠被路由协议(如ip协议)切割广播域(引入IP等逻辑地址寻址)

 

网络模式:

单工:只能单向发送数据。

半双工:可以双向发送数据,但同一时刻只能有一方可以发送数据(如对讲机)。

全双工:如双绞线,传输数据只要用到2跟线(一个为发送数据用的,一个为接收数据用的),另外2根用来屏蔽干扰。双机互联必须使用交叉线(一端收,一端发),双方同时可以向对方发送数据,就如同电话机,电话线就只有两条线!---千兆网络需要使用双绞线全部8条线

 

主机要联网----必须设置一个网关(即默认路由)

 

***MAC地址不能跨网络,每次都由router封装为自己出口网口的MAC地址(主机间通信最终还是要靠MAC地址!)

 

ARPIP--MAC已知对方ip地址,请求mac地址

RARP(MAC—IP, 已知对方MAC地址,请求IP地址)

 

IP地址分为2段:网络地址.主机地址;以子网掩码标识网络位。

 

子网掩码:是一堆连续的10组成的二进制数字。

 

路由过程:发信息前,系统判定目标主机是否属于本主机所在网络,若不是则通过网关发出去。

 

**端口(范围065535):系统通过端口来识别同一系统上的不同进程,以表示2台不同主机的进程间的通信。流程:数据包----网卡----内核空间(查看目标端口号)-----用户空间对应进程

 

*服务器需要监听在某端口上,它的端口号必须固定以便于客户端访问。

 

*一个端口只能对应一个进程,2者之间建立起对应关系,这种机制对于服务器端称为被动打开,对于客户端称为主动打开。

 

端口与IP有一一对应的关系,1server上有多个ip,就可以有多个80端口可供使用(每个ip一个80端口),对于server程序来说,必须至少与其中一个ip绑定,这种绑定(1ip1个端口)称为套接字(socket

 

ISO/OSI 7层网络模型

 

 

TCP/IP网络模型

 

IP地址分类A\B\C\D

 

127.0.00/8用于回环地址

 

*主机位全1为广播地址,全0为网络地址

 

*)国际组织ICANN管理IPv4地址,如需使用需要向他们注册购买

 

私有地址(这些地址不会被互联网上的路由器路由的,路由即选路):

A类:10.0.0.0/8

B类:172.16.0.0/16------172.31.0.0/16

C类:192.168.0.0/24-----192.168.255.0/24

 

术语:

主机路由:目标地址为主机IP的路由条目。

网络路由:目标地址为网络IP的路由条目。

 

*路由选路原则:一般以最佳匹配/最长匹配条目优先。

 

*默认路由/缺省路由:0.0.0.0  在路由表中找不到目标IP的条目时走这条路由。

 

超网(将几个小网络合并为一个大的网络,对应网络位转为主机位)

分网(变长子网掩码,将一个大网络分为几个小网络)

 

*远端主机之间底层(物理层)可能不同,可能是ethernet/ppp/ATM等不同的MAC算法的网络,这些都由router来屏蔽了不同。

 

TCP/IP网络模型

第四层:传输层

TCP协议:传输控制协议,有连接的协议

UDP协议:用户数据报协议,无连接的协议;不管接收方是否可以收到,只管发,效率高,用于例如QQ等即时通讯软件,UDP较简单,采用UDP的程序一般通过应用层来控制传输错误。

 

 

TCP协议描述:有连接的协议;先敲门,试探性地询问目的方在不在,如无响应则不发,如有相应则发送报文,并且每发一个报文接收方都要确认一下,TCPUDP更加可靠,但传输效率低,目前网络服务90%以上都采用TCP

 

TCP协议通信过程:

1,  通信双方建立连接(3次握手)

2,  传输数据

3,  断开连接,发起方发送断开请求—timewait1----time wait2--关闭连接。

 

TCP3次握手过程(第12步为新建连接的过程,第3步为连接已建立的过程)

1)  发送方向接收方发起连接请求(将SYN位置为1SN序列号,sn=100

2)  接收方确认(syn=1,ack=1,an(确认号)=101(意思为:100号报文已收到,可以发101号报文),sn=300(这是响应方的报文序列号,是另外一套编号体系))

3)  发送方(Ack=1sn=101an=301------此时连接状态为已建立(Established

4)  接下来开始传输数据:接收方发送报文(ack=1,sn=301,an=102

 

TCP断开连接过程(四次断开)

1)  发送方想接收方发起请求(fin=1,ack=1,an=xxx

2)  略。。。。。。。

 

TCP有限状态机的概念:即tcp连接不管什么时候,总是处于一种状态中的!在TCP连接的不同的阶段有不同的状态!

 

linux网络配置命令

 

对于linux,内存分为:

用户空间:命令:配置ip,临时生效;配置文件:永久生效(系统启动时读取)

内核空间:网络功能(TCP/IP协议栈),网络的配置在内核生效

 

网络配置的内容:

ip地址,子网掩码,网关,本机的DNS服务器,路由,主机名,几块网卡绑定(用于网卡冗余/加大吞吐量)

以上配置可以手工指定,也可以动态从DHCP服务器获取

*linux也可以作为router来使用!

 

*本机的多个DNS服务器的配置:第一个dnsserver不在线则找第二个;不是第一个dns server解析不出再找第二个!解析不出就不解析了。所以应该把访问速度最快的dns server放在第一个。

 

*DHCP动态获取ip地址:如获取不到DHCP分配的地址,会随机生成一个169.254.0.0/16网段的ip,此ip只能用于本地网络间主机通信,无网关。

 

*linux内核:网络属于内核功能,ip地址属于内核,不属于网卡,只要当前主机有的ip,别人在另一块网卡的ipping进来,也会给予响应(即使与ping请求的源ip不属于同一网段)!

lo:本地回环网络接口(兼serverclient,在内存中完成通信)

 

以太网卡名称:ethX范围从eth1eth100

pppXppp1----ppp2

 

*系统一般将网卡模块定义为一个别名(配置文件:/etc/modprobe.conf,可以自己去改这个名字。例  alias  eth0 pcnet32

 

*(RHEL6)系统一般将网卡模块定义为一个别名

(配置文件:/etc/udev/rules.d/70-persistent-net.rules,可以自己去改这个名字。

 

 

ifconfig命令(显示当前系统上处于活动状态的网卡信息),显示信息关键字如下:

Rx:接受到的包的个数                   Errors:错误包个数       dropped:丢弃报个数

Tx:发送的包的个数               collisions:冲突包个数overruns:溢出包个数

txqueuelen:传输队列长度      Rx bytes:接受到的字节数 Tx bytes:传出去的字节数

Interrput:中断号

 

ifconfig命令使用示例:

ifconfig -a 显示所有连接(接口)配置信息

ifconfig ethX显示指定连接(接口)配置信息

ifconfig ethX IP/mask(指定连接(接口)ip2种风格:(1x.x.x.x/24(2)x.x.x.x/255.0.0.0

ifconfig ethX IP/mask [up|down] (指定连接(接口)ip并启用|关闭对应接口)

 

ifup/ifdown ethX  启用或关闭对应接口

以上配置方式是一次生效,重启网络服务后即失效

 

RHEL5上网络服务脚本:/etc/init.d/network

RHEL6上网络服务脚本:/etc/init.d/NetworkManager(建议禁用使用NetworkManager服务)

 

网关添加(临时):

route [add|del]  [-host(主机路由)|-net(网络路由)]DEST  gw NextHop

route命令不带参数为查看系统路由表,DESTdefault为默认路由。

route命令输出详解:flagsU为本地网络,就是本机直连的。UG为网关路由,需要通过网关发出去。

route命令实例:

默认路由添加:#route  add  default gw NextHop

                            #routeadd  -net 10.0.0.0/8 gw 192.168.10.1

route –n(以数字形式(不解析主机名)显示路由信息,这样执行速度会比较快)

 

 

 

 

 

配置文件配置网卡ip(永久有效)

示例:vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 #表示关联的设备

BOOTPROTO={static|none|dhcp|bootp} #引导的协议

IPADDR=

NETMASK=

GATEWAY=

ONBOOT= #network服务启动时是否自动激活此接口

HWADDR= #硬件地址,要与硬件中的地址保持一致,可以省略

USERCTL={yes|no} #是否允许普通用户控制此接口

PEERDNS={yes|no} #是否在BOOTPROTOdhcp时接收由dhcp服务器指定的DNS地址,并更新到/etc/resolve.conf

 

*这种方式配置网卡不会立即生效,但重启网络服务后会生效!

 

配置路由(配置文件形式):/etc/sysconfig/network-scripts/route-ethX(自己在这个目录下建一个对应网口的路由配置文件,通过那个网口出去就写那个网卡名称)

有两种添加格式:

1)  Dest  via  NextHop

例如:vi route-eth1输入:

  1. 168.10.0/24 via 10.10.10.254     :x保存退出

#service network restart#route –n

2) 例如:vi route-eth1输入:

ADDRESS0=192.168.0.0

NETMASK0=255.255.255.0

GATEWAY0=192.168.0.1

ADDRESS1=

NETMASK1=

GATEWAY1=

 

*DNS Server指定方法:编辑/etc/resolve.conf(最多指定3个)用nameserverx.x.x.x来指定

可以指定的DNS Serverdhcp服务器指定的DNS地址给覆盖掉,将ifcfg-ethXPEERDNS=no设置一下即可不被覆盖。

 

指定本地解析:

编辑/etc/hosts文件:输入:10.0.0.1(IP)  www.a.com(主机名)  www(别名)

本地解析主机名顺序一般为:1)先找hosts文件2)再找dns缓存3)再找dns服务器

这个顺序可以在/etc/nsswitch.conf文件中配置!

 

临时配置主机名:hostname命令

永久配置主机名:编辑/etc/sysconfig/network文件

HOSTNAME指令配置主机名

NETWORKING={yes|no}指令指定是否启用网络(IPv4)总开关,也可以在这个文件中定义GATEWAY=(全局的网关)-----*****在网卡配置文件中定义的GATEWAY更加优先,那个是专门对应于网卡的,这里的GATEWAY是全局的。

 

策略路由:某个网络采用哪一张路由表(系统可以有多张路由表)

 

软件包iproute2提供了很强大的命令集,其中包含ip命令,ip命令的有些高级功能是ifconfig命令无法替代的。它可以控制流量

ip link(网络接口属性)        show

                                                        set ethX   [up|down|arp {on|off}]

ip命令过于强大,此处略!                                                                                   

 

一个网卡可以有多个IP,用别名来配置

示例:

#ifconfig eth0:0  x.x.x.x/24

让别名永久生效:

新建一个配置文件/etc/sysconfig/network-scripts/ifconfig-ethx:x(注:别名不能使用dhcp协议,只能配置静态地址!)

 

*)/etc/init.d/NetworkManager(此服务不支持网络桥接功能,建议禁用此服务)

禁用此服务方法:

将网卡配置文件中

NM_CONTROLLED=no

#chkconfig NetworkManager off

#chkconfig network on

#service NetworkManager stop

#service network start

 

***实现网卡配置时,可以复制其他的网卡配置文件在此基础上改一下即可,但注意HWADDR一定要改过来,觉得麻烦删掉HWADDR这一行也可以!