前言、本章学习目标
- 了解LINUX网络接口和主机名配置的方法
- 熟悉网络相关的几个配置文件
- 了解网关和路由
- 熟悉网络相关的命令使用
一、网络IP地址配置
在Linux中配置IP地址的方法有以下这么几种:
1、图形界面配置IP地址(操作方式如Windows系统配置IP,但在实际生产中,我们并不建议在我们的服务器上安装Linux的图形界面,因为安装了图形界面将一定程度地影响了服务器的安全性和稳定性。)
2、ifconfig命令临时配置IP地址(临时配置IP地址,即当我们重启计算机或重启网络服务后,配置将失效)
3、setup工具永久配置IP地址(setup工具是由Red Hat开发的,因此在正常情况下,该工具只能用于Red Hat系列的Linux系统)(setup工具——红帽专有图形化工具setup设置IP地址)(使用setup命令设置完网络后需要使用service network restart重启网络)
4、修改网络配置文件ifcfg(需要使用service network restart重启网络)
Linux网络配置文件:
在/etc/sysconfig/network-scripts/目录下有不少文件,绝大部分都是脚本类的文件,但有一类ifcfg开头的文件为网卡配置文件(interface config),所有ifcfg开头的文件在启动网络服务的时候都会被加载读取,但具体的文件名ifcfg-XX的XX可以随意命名。
二、Linux主机名设置
用于设置主机名,但也有几个其它好用的功能。
hostname [-I] [-f] [-d] [-s] [hostname]
选项说明:
-I :获取该主机上所有非环回IP地址,该选项不依赖于主机名解析
-f,--fqdn :获取fqdn
-d,--domain:获取fqdn的域名部分,等价于命令dnsdomainname
-s,--short :获取fqdn的主机名部分,严格地说是获取第一个"."前的部分。
[root@ ~]# hostname -I
192.168.101.11 172.16.10.10
hostname修改的主机名为临时生效,它修改的其实是/proc/sys/kernel/hostname文件。
[root@xuexi ~]# cat /proc/sys/kernel/hostname
xuexi.longshuai.com
要想永久生效,需要修改配置文件/etc/hostname(CentOS 7)或/etc/sysconfig/network(CentOS 6)。例如在CentOS 7上:
[root@ ~]# echo "appserver" >/etc/hostname
三、Linux网关和路由
1、Linux上分为3种路由
主机路由:直接指明到某台具体的主机怎么走,主机路由也就是所谓的静态路由
网络路由:指明某类网络怎么走
默认路由:不走主机路由的和网络路由的就走默认路由。操作系统上设置的默认路由一般也称为网关。
若Linux上到某主机有多条路由可以选择,这时候会挑选优先级高的路由。在Linux中,路由条目的优先级确定方式是先匹配掩码位长度,再比较管理距离(比如metric)。
也就是说,掩码位长的路由条目优先级一定比掩码位短的优先级高,所以主机路由的优先级最高,然后是直连网络(即同网段)的路由(也算是网络路由)次之,再是网络路由,最后才是默认路由。若路由条目的掩码长度相同,则比较节点之间的管理距离,管理距离短的生效。
例如下面的路由表中,若ping 192.168.5.20,则先比对192.168.100.78发现无法匹配,然后比对192.168.100.0,发现也无法匹配,接着再匹配192.168.0.0这条网络路由条目,发现能匹配,所以选择该路由条目。
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.100.2 0.0.0.0 UG 100 0 0 eth0
172.16.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1
192.168.0.0 192.168.100.70 255.255.0.0 UG 0 0 0 eth0
192.168.100.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
192.168.100.78 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
2、管理路由表
route [add/del] [-host/-net/default] [address[/mask]] [netmask] [gw] [dev]
选项说明:
add/del:增加或删除路由条目
-net:增加或删除的是一条网络路由
-host:增加或删除的是一条主机路由
default:增加或删除的是一条默认路由
netmask:明确使用netmask关键字指定掩码
gw:指定下一跳的地址。要求下一跳地址必须是能到达的,且一般是和本网段直连的接口。
dev:强制将路由条目关联到指定的接口上。一般内核会自动判断路由条目应该关联到哪个网络接口。
示例:
添加和删除默认路由
route add default gw 192.168.100.10/route del default gw 192.168.100.10
添加和删除网络路由
route add -net 172.16.10.0/24 gw 192.168.100.70
route del -net 172.16.10.0 netmask 255.255.255.0 gw 192.168.100.70
添加和删除主机路由
route add -host 172.16.10.55 gw 192.168.10.20/route del -host 172.16.100.55
3、配置永久路由
根据接口创建路由配置文件/etc/syconfig/network-scripts/route-ethX,要从那个接口出去X就是几。
路由配置文件的配置格式非常简单,每一行一个路由条目,先是要到达的目标,然后是via关键字,最后是下一跳地址。要求下一跳必须能到达,且一般都和ethX同网段。
例如eth0网卡的IP地址是192.168.10.123,要通过网卡eth0出去到达10.0.0.10,那么下一跳的地址要和eth0的地址在同网段,如192.168.10.222。
10.0.0.0 via 192.168.10.222
#默认路由
default via 192.168.100.1
0.0.0.0/0 via 192.168.100.1
#网段路由
192.168.10.0/24 via 192.168.100.1
#主机路由
192.168.100.52/32 via 192.168.100.33 dev eth1
四、和网络相关的几个文件
1、DNS配置文件/etc/resolv.conf
该文件用于设置DNS指向,以及解析顺序。该文件格式如下:
domain domain_name # 声明本地域名,即解析时自动隐式补齐的域名
search domain_name_list # 指定域名搜索顺序(最多6个),和domain不能共存,若共存了,则后面的行生效
nameserver IP1 # 设置DNS指向,最多3个
nameserver IP2
nameserver IP3
2、网卡规则文件/etc/udev/rules.d/70-persistent-net.rules
当插入新的网络设备时,内核首先识别到,随后在sysfs文件系统(一般挂载在/sys下)中生成该设备对应的信息文件。然后内核通知udev的后台守护进程udevd,udevd将读取sysfs中对应设备的相关信息,并比对或生成udev的规则集,能匹配上的则做对应的操作。对于网卡来说,它的的规则集文件默认为/etc/udev/rules.d/70-persistent-net.rules,匹配该规则集成功后,最后还在/sys/class/net目录中生成对应的设备子目录。
3、服务端口配置文件/etc/services
该文件中记录的是端口和服务的对应关系。
五、网络接口配置-bonding
Bonding就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。
NIC的物理识别:
使用多个网卡时,能够物理标示特定网卡非常有用,物理标示NIC的一个方法是使其一个或多个LED闪烁,若要eth0上的LED闪烁30秒,可以运行ethtool -p eth0 30
bond模式:
Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。
Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)
Mode=3(broadcast) 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。
Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)
Mode=5(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave
Mode=6(balance-alb) 在5的tlb基础上增加了rlb。
注:常用的mode有0、1、5、6,当使用0时,还需要”Switch”支援及设定。
六、Linux网络常用的命令
1、arp和arping
维护或查看系统arp缓存,arp为地址解析协议,将给定的ipv4地址在网络中查找其对应的MAC地址。
一般会使用arp协议获取局域网内的主机MAC,所以局域网主机之间也互称为网络邻居。
2、ip命令
这是一个极其强大的命令,很多网络信息显示和管理的命令,都可以由ip命令来替代完成。它是一个严格模式化的命令。
3、netstat命令
可以检测网络端口的监听和运行情况。
4、nmap命令
nmap是一个端口扫描器,可以探测远程系统哪些端口处于开放状态。
5、tcpdump命令
用于将网络通信捕获至文件,用来分析数据包的流向,通常需要与wireshark结合使用。
七、本章实验
1、设置主机名并配置一条静态路由;
2、找出操作系统中正在监听的端口。