标签:linux
Linux网络配置详解
我一台主机想要接入网络中需要配置的网络属性有:
IP地址
NETMASK(子网掩码)
GATEWAY(网关)
HOSTNAME(主机名)
DNS(DNS服务器地址):DNS可以帮助我们解析网络中其它主机的主机名,DNS服务器地址至少得需要两个,当我们的第一个DNS服务器不在线的时候,才会使用第二个DNS服务器的地址,所以我们一般会把响应速度最快的DNS服务器地址写在第一个,称为主DNS服务器。
ROUTE(路由)
DHCP:Dynamic Host Configuration Protocol(动态主机配置协议),这是一种让一台DHCP服务器为其它主机提供地址或其它网络配置信息的一种服务,我们把它称为DHCP服务器或者DHCP Server,为了防止我们的网络中没有DHCP服务器的情况出现,ICANN给我们预留了一些以169.254......随机获得的自动地址,会随机帮我们生成一个地址来供我们使用,但是该网段内的IP地址只能用于本地通信,无法连接互联网,因为它没有网关。
我们Linux主机的网络功能是内核的功能,我们所配置的IP地址也是属于内核的,是在内核上生效的,只是被关联到了网卡上而已。
·Linux系统中的网络接口类型
对于我们的Linux系统而言,它的每一个网络接口都有一个名称,因为对于我们的系统来说识别每一个硬件的依靠的是硬件上的主次设备号,以及与我们硬件相关联的驱动程序,所以当我们去访问任何一个硬件的时候,都是通过访问该设备的设备文件来实现的,但是以这样的方式来管理网卡是非常不方便的,所以我们的Linux系统中的网卡才有了名称的机制,这些名称早先在红帽5中是基于别名来定义的,就相当于是给一个模块取一个名字,在红帽5中是在/etc/modprobe.conf文件中通过alias定义了网卡的别名的,在红帽6中不是通过别名来定义网卡名称,而是通过udev来定义的,在红帽6的/etc/udev/rules.d/70-persistent-net.rules文件中定义了网卡的命名机制,因此如果我们将来我们要给网卡改名的时候就得在这个文件中进行修改:
网络接口类型:
->lo(loopback)接口:本地回环接口,表示在本机内部自己既是客户端又是服务端,数据不用发向网络,只是用来自己和自己进行通信的一种接口
->Ethernet(以太网网卡)
命名方式:eth#(#表示的是数字)
->点对点连接的网卡
命名方式:ppp#(#表示的是数字)
故我们以后引用网卡的时候直接引用网卡的名称即可,不用再引用网卡的内核驱动或者是设备文件了。
·ifconfig命令
这个命令是一个非常老旧的管理网络的命令,功能非常小,该命令可以用来显示当前主机上处于活动状态的网卡的信息。
上图中的信息分别表示为:
->Link encap:表示的是数据链路层所使用的协议
->HWaddr:表示的是MAC地址(五个冒号隔开的六段十六进制数字),即物理地址
->inet addr:表示的是ipv4的IP地址
->Bcast(Broadcast):表示的是广播地址
->Mask:表示的是子网掩码
当我们自己指定了IP地址之后,系统会自动帮助我们计算出广播地址和子网掩码
->inet6 addr:表示的是ipv6的默认地址
->Scope:表示的是地址的作用范围
Global指的是全局地址,可以被其它主机找到
Link指的是只对当前网卡有效的地址,表示自己的网卡既做客户机又做服务机,自己访问自己的时候有效,其它情况都无效
->UP:表示的是启用状态
->BROADCAST:表示允许广播
->RUNNING:表示运行
->MULTICAST:表示允许多播
->MTU:表示的是最大传输单元
->Metric:表示的是度量
->RX packets:表示的是接受到的报文的个数
->errors:表示的是错误的个数
->dropped:表示的是丢弃的个数
->overruns:表示的是溢出的个数
->frame:表示的是帧数
->TX packets:表示的是发送出去的报文的个数
->collisions:表示的是有多少次冲突发生
->txqueuelen:表示的是传输队列的长度
->RX bytes:表示的是接收到的报文一共有多少字节
->TX bytes:表示的是发送出去的报文一共有多少字节
->Interrupt:表示的是中断号
ifconfig命令的-a选项可以显示所有网卡的信息:
ifconfig命令还可以直接跟某块网卡的名称来显示具体某块网卡的信息:
还可以使用ifconfig命令来配置网卡的地址
格式:ifconfig DEVICE IP/NETMASK(子网掩码有两种表示方法,一种是直接使用具体的掩码的形式,一种是使用掩码的长度)
我们还可以使用ifconfig命令来启用或禁用一个网卡
格式:ifconfig DEVICE [up|down]
我们有时候自己ping自己的主机IP地址是为了确认我们的内核中的TCP/IP协议栈是不是正常工作的,这样是为了确认我们本地的通信首先得正常无误:
我们使用ifconfig命令配置的地址会立即生效,但是在我们重启网络服务或主机之后都会失效
·网络服务
在我们红帽系列的Linux系统中,对于网络地址的管理可以通过系统内置的一个服务脚本来实现,这个脚本是红帽提供的,在红帽5中,这个脚本文件是/etc/init.d/network,该脚本文件可以接收四个参数,分别是start、stop、restart以及status,这个脚本可以让我们系统内核中TCP/IP协议栈自动去我们关联在网卡中的信息,并且让配置文件中的地址生效,在红帽6中,该脚本变成了/etc/init.d/NetworkManager,但是红帽6中也支持红帽5中的那个脚本,只不过默认使用/etc/init.d/NetworkManager这个脚本,但是这个脚本目前来讲功能还不是很完善,所以我们在红帽6中还是建议使用/etc/init.d/network这个脚本。
·管理网关的命令
route(路由)命令,route命令有很多的子命令专门用于管理本地的路由信息的:
->route命令不加任何选项表示的是查看本地路由表
-n选项,表示以数字的方式显示各主机及端口的详细信息
上图中显示的Flags条目中,U表示启用状态,G表示该网关是一个网关路由(表示有下一跳的路由条目),没有G表示该目标路由是一个本地网络,不需要任何网关就可以到达
->add子命令:表示添加路由
-host选项表示添加主机路由
-net选项表示添加网络路由,-net 0.0.0.0表示添加默认路由
使用格式:route add -host|-net 目标路由 gw(gateway) nexthop(下一跳)
route add default gw nexthop,表示添加的是默认路由
->del子命令:表示删除路由
使用格式:route del -host|-net 路由条目
可以指定下一跳,在网关不只一个的情况下,可以不指定下一跳,因为一般情况下,网关只有一个。
指定下一跳:
删除默认路由:
route del -net 0.0.0.0,不用指定掩码,因为默认路由没有掩码
还可以直接route del default:
我们使用命令行的方式配置的网络地址和路由信息,在重启主机或网络服务后都会失效
我们Linux系统上还有另外一个用来管理网络的软件包叫做iproute2,这个非常强大的软件包提供了一个叫做ip的命令,ip命令有很多的子命令,也可以用来配置路由,还可以用来实现路由表的管理。
·ip命令
子命令:
->link:用来配置网卡的属性
show,用来查看网络接口的MAC地址,-s(statistics)选项用来显示统计信息
使用格式:ip link show,ip -s link show
set,用来设定网卡的某些工作属性的
常用格式:ip link set DEVICE [up|down],表示启用或禁用网卡
->addr:用来管理网络地址
show:查看本机上所有的网卡的所有地址
使用格式:ip addr show
to PREFIX:表示只显示和PREFIX相匹配的地址
使用格式:ip addr show dev(指定设备的关键字) DEVICE to PREFIX(前缀),用来显示和PREFIX匹配到的地址
PREFIX指的是以IP地址的前三段开头以子网掩码长度结尾的所有地址
add:添加地址,得指定设备
使用格式:ip addr add IP地址 dev DEVICE
如果要添加IP地址的这个网卡之前已经有地址了,那么使用该命令再次配置的地址得使用ip addr show命令才可以看到,而使用ifconfig命令无法看到,并且再次配置的地址被称为非主要地址
如果使用ip addr add IP地址 dev DEVICE ethX label ethX:X这种格式的话表示指定该网卡的别名,并且将我们新添加的IP地址添加到我们指定的网卡别名中去,此时使用ifconfig命令也就可以看到我们新添加的地址了,这样也就实现了一块网卡里面有多个地址:
secondry被称为辅助地址,也叫做第二地址,但是第二地址不时第二个地址的意思。
del:删除地址
使用格式:ip addr del IP地址 dev DEVICE
flush:清除地址
我们addr子命令的子命令del命令的时候,一次性只能删除一个地址,而我们使用flush子子命令可以一次性删除一堆地址的,使用格式:
ip addr flush dev DEVICE to PREFIX
->route子命令,该命令和路由相关
ip route show格式表示的是显示本机路由表信息
ip route add to 目标IP地址 dev DEVICE via 网关地址,该格式表示添加一条路由
我们也可以使用ifconfig命令来实现网卡别名以及同一块网卡多个IP地址的设置:
使用格式:ifconfig ethX:X IPADDR/NETMASK
但是我们使用命令的方式配置的所有网络信息,都会随着我们的重启网络服务或是重启主机之后失效:
要想使别名信息可以永久有效就得使用配置文件的方法来配置网卡别名的相关信息,直接边界/etc/syscofig/network-scripts/ifcfg-ethX:X即可,里面的条目信息,除了DEVICE项目要写成ethX:X之外,其余其它条目均与ethX中的一样,但是别名设备不能使用dhcp协议,非主要地址是不可以使用DHCP服务器来动态获取IP地址的,必须使用IPADDR指定。
·网络配置文件
我们Linux系统配置网络的配置文件是在/etc/sysconfig/network目录下面的,这是我们Linux系统网络服务的总开关的位置,包括主机名定义都在这个文件里面:
网络接口(网卡)配置文件:
/etc/sysconfig/network-scripts/ifcfg-网卡名称,该文件里面的所有内容是严格区分大小写的。
上图中的内容解释如下:
DEVICE->表示该文件所关联的设备名是什么,该设备名必须与此文件名的后半部分一致
BOOTPROTO->表示的是引导协议,指的是启动这个网卡的时候我们是使用什么方式来配置它的地址的
一般来说这个条目有四个取值:
static,静态地址
none,静态地址
dhcp,动态地址
bootp,dhcp的前身
IPADDR->表示IP地址
NETMASK->指定子网掩码,IPADDR和NETMASK是必须有的,只要是配置网卡信息,这两项是必须有的,网关不是必须配置的,没有网关我们只是不能和远程主机通信而已
GATEWAY->指定默认网关
ONBOOT->表示开机时是否自动激活此网卡
HWADDR->表示的是硬件地址,要与硬件中的地址保持一致,这个条目可以省略不写
USERCTL=[yes|no]->表示是否允许普通用户管理网卡
PEERDNS=[yes|no]->表示在引导协议位dhcp的时候,是否接受由DHCP服务器指定的DNS地址
这种方法配置的网卡信息不会立即生效,但是在重启主机或网络服务后会永久有效。
·路由配置文件
我们使用配置文件的方法配置路由的方法是在/etc/sysconfig/network-scripts目录下新建一个route-ethX(针对我们要配置哪一块网卡的路由信息)文件,添加格式有两种:
->目标地址(有可能是主机地址,也有可能是网络地址,如果是网络地址的话后面得加子网掩码) via(关键字指定下一跳) NEXTHOP
可以添加多条信息
->ADDRESS0=指定目标地址
NETMASK0=指定子网掩码
GATEWAY0=指定网关
ADDRESS1=...
....
....
表示添加下组路由信息
·DNS服务器指定的方法
DNS服务器指定的方法只有一种,在/etc/resolv.conf文件里面配置,该文件在用户使用dhcp协议为网卡指定地址的时候,我们的DHCP服务器会来修改这个文件,但是我们在配置我们的网卡信息的时候,如果设置PEERDNS=no,DHCP服务器就不会来修改这个文件了,我们在这个文件里面指定DNS服务器的格式是:
nameserver DNS_IP1
nameserver DNS_IP2
nameserver DNS_IP3
最多只可以指定三个,如果我们没有DNS服务器,又想使用主机名来访问其他主机的时候就可以指定本地解析,我们指定本地解析的方法是编辑/etc/hosts这个文件,我们使用本地解析的话,就无需在使用DNS服务器:
在该文件中的编辑格式:
目标主机的IP 指定的主机名 别名
我们本地DNS解析的原理是:
当我们使用主机名去访问某个主机的时候,系统会先去查看/etc/hosts这个文件,看里面有没有相关条目,如果没有,就去查找DNS缓存,如果DNS缓存里面也没有的话,就去DNS服务器里面找。
·配置主机名
命令法:
hostname命令
hostname命令后面什么都不跟,可以显示当前主机名
使用格式:hostname 主机名
配置文件法:
编辑/etc/sysconfig/network文件
配置格式:
HOSTNAME=主机名
NETWORKING=yes表示是否启用本机的网络功能,如果等于no,我们所配置的IP地址无法生效,这是我们本机是否启用网络功能的总开关
NETWORKINGIPV6->表示是否启用ipv6功能,但是此种方式并不能彻底的禁用本机的ipv6功能,除非你把本机的ipv6模块卸载掉
重启网络服务一般是不会影响到主机名的,主机名一般在我们重启了主机之后才会生效,该文件里面还可以定义我们的网关,加上GATEWAY条目即可,但是这里定义的网关是全局的,可能会和我们的网卡中定义的网关相冲突,我们的网关是小范围有效,故还是以我们的网卡中定义的网关为准。
我们红帽系列的Linux中还支持使用文本图形界面和图形界面来配置我们的网络,我们先使用setup命令:
之后就可以在里面配置我们的网络环境了
本文出自 “菜鸟的技术文档” 博客,请务必保留此出处http://zhubo.blog.51cto.com/11395641/1840091
标签:linux
原文地址:http://zhubo.blog.51cto.com/11395641/1840091