网络管理协议
TCP协议
TCTP/IP协议主要包含传输控制协议(Transmission Control Protocol)和网际协议(Internet Protocol )
OSI
- 应用层:网络服务和最终用于的一个接口
- 协议有:http,https,dns,ftp等
- 表示层:有数据的标识、安全、压缩等
- 格式有:JPEG ASCII加密等
- 会话层:建立、管理、终止会话
- 对应主机进程,指本地主机和远程管理正在进行的会话
- 传输层:定义传输数据的协议端口号,以及流量控制和差错校验等
- TCP,UDP
- 网络层:进行逻辑寻址,实现不同网络之间的路径选择
- 协议:ICMP,IP,ARP,RARP
- 数据链路层:建立逻辑连接,进行硬件地址寻址,差错校验等功能,
- 将比特流组成字节进而合并为数据帧,用mac地址访问介质
- 物理层:建立、维护、断开物理连接
- 比特流
TCP/IP
网络接口层主要为上层提供服务,完成链路控制等功能。
网际层主要解决主机到主机之间的通信问题,主要协议有网际协议(IP)、地址解析协议(ARP)、反向地址解析协议(RARP)、互联网控制报文协议(ICMP)
传输层为应用层提供端到端的通信功能,同时提供流量控制,确保数据完整和正确。
TCP协议位于该层,提供一种可靠的、面向连接的数据传输服务
UDP协议位于该层,提供一种不可靠的、面向无连接的数据传输服务
应用层对应于OSI参考模型中的上面三层,为用户提供所需要的各种应用服务,eg:FTP、Telnet、DNS、SMTP等包
包是网络上数据传输的数据片段,也称为分组、数据包或封包,也称为IP数据包。
用户数据按照规定划分为大小适中的若干组,每个组加上包头构成一个包,这个过程叫做封装。
网络上使用包为单位传输。
TCP/IP称为帧 IP层称为IP数据包 TCP层称为TCP报文
IPv4地址
- 比特流
- 表示方式:点分十进制 0.0.0.0-255.255.255.255
- 分类:
- A类:1-127 10
- 网络数:126 ,127开头的,本地环回口
- 每个网络中的主机数:2^24-2
- 默认子网掩码:255.0.0.0
- 私网地址:10.0.0.0/8
- B类:128-191 110
- 网络数:2^16
- 每个网络中的主机数:2^16-2
- 默认子网掩码:255.255.0.0
- 私网地址:172.16.0.0/16-172.31.0.0/16
- C类:192-223 11100000
- 网络数:2^24
- 每个网络中的主机数:2^8-2
- 默认子网掩码:255.255.255.0
- 私网地址:192.168.0.0/24-192.168.255.0/24
- D类:224-239
- 组播地址
- E类:240-255
- 科学研究
网络字节顺序
TCP/IP协议定义了一种所有机器在互联网分组的二进制字段中必须使用的网络标准字节顺序(Network Standard Byte Order)
传输的时候需要遵循以下转换规则:主机字节顺序———>网络字节顺序———->主机字节顺序
发送方将主机字节顺序的整数转换为网络字节顺序,然后发送出去,接收方收到数据后将网络字节顺序的整数转换为字节的主机字节顺序,然后处理。地址解析协议 ARP
TCP/IP网络使用IP地址寻址,IP包在IP层实现路由选择。
IP包在数据链路层的传输需要知道设备的物理地址(通常称为MAC地址,也是网卡的硬件地址),需要一种IP地址到物理地址的转换协议。
TCP/IP协议栈使用一种动态绑定技术来实现一种维护起来既高效又容易的机制,ARP。
- 科学研究
- A类:1-127 10
已知ip地址获取mac地址
- 每个主机都有一个arp高速缓存,里面存有常用的/最近使用的ip地址与其对应的mac地址,最常见的默认网关和ip地址及其对应的mac地址
- 当主机 A想向主机B发送ip数据报的时候,就先在其arp高速缓存上查看有无主机B的ip地址。如果有,就查其对应的硬件地址,在将此硬件地址写入mac地址
- ARP高速缓存中无目的地址对应的MAC地址时:

- ps:1.ARP请求的广播只在本网络中进行(路由器隔离广播)
2.源主机和目的主机不在一个网络,目的主机收不到ARP请求
- ARP代理:
- 路由器连接源主机所在网络的接口(默认网关)代替目的主机返回ARP响应,响应中写入默认网关的MAC地址
UDP协议
UDP协议是一种无连接的传输层协议,主要用于不要求分组顺序到到达的传输,分组传输的顺序的检查和排序由应用层完成,提供面向事务的简单不可靠信息传送服务。
缺点:不提供数据包分组、组装和不能对数据包进行排序,流量不易控制,报文发送之后,无法得知其是否安全完整到达。
优点:资源消耗小,处理速度快ICMP协议
Internet Control Message Protocol (Internet 控制报文协议)。
属于TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。
控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。
eg:ping 命令,ping的实际过程就是ICMP协议工作的过程。
功能:报告问题而不是纠正错误,纠正错误由发送方完成。网络管理命令
ping
ping命令用来测试目标主机或域名是否可达,通过发送ICMP数据包当网络主机,显示相应情况,并根据输出信息来确定目标主机或域名是否可达。
ping的结果通常情况下是可信的,但是有些服务可以设置禁止ping,从而使ping的结果并不是完全可信。
- 路由器连接源主机所在网络的接口(默认网关)代替目的主机返回ARP响应,响应中写入默认网关的MAC地址
| 参数 | 说明 |
|---|---|
| -d | 使用Socket的SO_DEBUG功能 |
| -f | 极限检测。大量且快速地传送网络数据包给一台机器,看其回应 |
| -n | 只输出数值 |
| -q | 不显示任何传送数据包的信息,只显示最后的结果 |
| -r | 忽略普通的Routing Table,直接将数据包发送到远端主机上 |
| -R | 记录路由过程 |
| -v | 详细显示指令的执行过程 |
| -c | 在发送指定数目的数据包后停止 |
| -i | 设定间隔几秒发送一个网络数据包给一个机器,预设值是一秒发送一次 |
| -I | 使用指定的网络接收送出数据包 |
| -l | 设置在送出要求信息之前先行发出的数据包 |
| -p | 设置填满数据包的范本样式 |
| -s | 指定发送的数据字节数 |
| -t | 设置存活数值TTL的大小 |
在Linux中,ping命令不会自动终止,需要用CTRL+c来终止,或者用-c参数来指定要求完成的回应次数。
#指定时间间隔和次数限制的ping[root@lhuan ~]# ping -c 5 -i 0.01 baidu.comPING baidu.com (39.156.69.79) 56(84) bytes of data.64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=249 time=29.7 ms64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=249 time=29.6 ms64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=3 ttl=249 time=29.6 ms64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=4 ttl=249 time=29.6 ms64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=5 ttl=249 time=29.6 ms--- baidu.com ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 60msrtt min/avg/max/mdev = 29.640/29.684/29.777/0.161 ms, pipe 2
ifconfig
ifconfig命令可以用于查看、配置、启用或禁用指定网络端口(即网卡),eg:配置网卡的IP地址、掩码、广播地址、网关等。
需要安装net-tools软件包,才能用这个命令
[root@lars ~]# yum install net-tools -y
查看所有网络接口配置信息:ifconfig -a
查看指定接口配置: ifconfig [interface] [up/down]关闭或启动
ifconfig <interface> [[-net -host] <address>]interface 是网络接口名address是分配给指定接口的主机名或IP地址-net 告诉ifconfig将这个地址作为网络号-host 告诉ifconfig将这个地址作为主机地址[-] promisc:启动混杂模式,[-]表示关闭混杂模式混杂模式:表示该主机能够接收所有流经网卡的数据包非混杂模式:表示该主机的网卡只能够接受目的地址是自己的数据包开启混杂模式: ifconfig [interface] promisc关闭混杂模式: ifconfgi [interface] ‐promisc
使用
##查看网卡基本信息[root@lhuan ~]# ifconfigdocker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255ether 02:42:8c:6f:45:03 txqueuelen 0 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.17.0.3 netmask 255.255.240.0 broadcast 172.17.15.255inet6 fe80::5054:ff:fe84:3ebb prefixlen 64 scopeid 0x20<link>ether 52:54:00:84:3e:bb txqueuelen 1000 (Ethernet)RX packets 21204587 bytes 2070382180 (1.9 GiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 21514381 bytes 3993351964 (3.7 GiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 48203 bytes 7819766 (7.4 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 48203 bytes 7819766 (7.4 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0##后面跟网络接口,查看指定网络接口的信息[root@lhuan ~]# ifconfig dockee0dockee0: error fetching interface information: Device not found[root@lhuan ~]# ifconfig docker0docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255ether 02:42:8c:6f:45:03 txqueuelen 0 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0第一行:表示连接状态UP表示此网络接口为启动状态RUNNING表示网卡设备已连接MULTICAST表示支持组播mtu 为数据包的最大传输单元第二行IPv4地址信息,依次为IP地址、子网掩码、广播地址第三-五行IPv6地址信息第六行网卡的硬件地址(MAC地址)Ethernet表示连接类型为以太网第七到十行接收和发送数据包情况统计、异常数据包统计情况。eg:接受包的数量、大小,collisons表示发售那个冲突次数
route
route命令用于查看和编辑计算机中的IP路由表
route -f -p [command [destination] [mask netmask] [gateway] [metric] [dev if]]
| 参数 | 说明 |
|---|---|
| Command | 指定想要进行的操作,eg:add、change、delete、print |
| destination | 指定该路由的网络目标 |
| mask netmask | 指定子网掩码 |
| gateway | 网关 |
| metric | 为路由指定一个整数成本指标,当在路由表的多个路由中进行选择的时候可以使用 |
| dev if | 为访问目标的网络接口指定 |
#显示所有的路由表
[root@lhuan ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.0.1 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.17.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
FLAGS 路由的标志位:U表示启用状态,G表示默认网关,H表示主机路由
- 手动去添加路由:route add
- 用法:
route add [-net| -host]
- 添加主机路由:
- route add -host 192.168.1.100/24 gw 192.168.1.2 ens34
- 添加默认路由:
- route add default gw 192.168.1.2
- 网络路由:
- route add ‐net 192.168.1.0/24 gw 192.168.1.2 dev eth0
- 删除路由:route del
- 用法
route del [-host|-net]
- 删除主机路由
- 删除网络路由
- route del -host 192.168.1.100/24 gw 192.168.1.2 dev ens34
- 删除默认路由
- route del default gw 192.168.1.2
scp
scp可以将本地文件传送到远程主机或从远程主机拉取文件到本地
scp命令执行成功返回0,失败或者有异常的时候返回非0的值
| 参数 | 说明 |
|---|---|
| -P | 指定远程连接端口 |
| -q | 把进度参数关掉 |
| -r | 递归地复制整个文件夹 |
| -V | 冗余模式。 打印调试信息和问题定位 |
将本地文件传送至远程主机
scp -P 123456 NGINX.TXT root@192.168.10.10:/root
拉取远程主机文件至本地路径
scp -P 123456 root@192.168.10.10:/root/NGINX.TXT /root
rsync
rsync命令是Linux下常用的数据镜像备份工具,用户在不同的主机之间同步文件。
除了单个文件之后,rsync还可以镜像保存整个目录树和文件系统,可以增量同步,并且保持文件原来的属性,eg:权限、时间戳定。
rsync在数据传输过程中是加密的,保证了数据的安全性。
Usage: rsync [OPTION]... SRC [SRC]... DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
or rsync [OPTION]... [USER@]HOST:SRC [DEST]
or rsync [OPTION]... [USER@]HOST::SRC [DEST]
or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect
to an rsync daemon, and require SRC or DEST to start with a module name.
[OPTION] 可以设置某些选项。eg:压缩传输、是否递归传输等
[SRC] 为本地目录或文件
USER 登录远程服务的用户名
HOST 登录远程服务的主机
DEST 表示远程路径
| 参数 | 说明 |
|---|---|
| -v | 详细输出模式 |
| -q | 精简输出模式 |
| -c | 打开检验开关,强制对文件传输进行校验 |
| -a | 归档模式,表示以递归方式传输文件,并保持文件属性 |
| -r | 对子目录以递归模式处理 |
| -R | 使用相对路径信息 |
| -p | 保持文件权限 |
| -o | 保持文件属主信息 |
| -g | 保持文件属组信息 |
| -t | 保持文件时间信息 |
| -n | 指定哪些文件将被传输 |
| -W | 复制文件,不进行增量检测 |
| -e | 指定使用rsh,ssh方式进行数据同步 |
| —delete | 删除那些DST中SRC没有的文件 |
| —timeout=TIME | IP超时时间,单位为秒 |
| -z | 对备份的文件在传输的时候进行压缩处理 |
| —exclude=PATTERN | 指定排除不需要传输的文件模式 |
| —include=PATTERN | 指定不排除而需要传输的文件模式 |
| —exclude-from=FILE | 排除FILE中指定模式的文件 |
| —include-from=FILE | 不排除FILE中指定模式匹配的文件 |
| —version | 打印版本信息 |
| -address | 绑定到特定的地址 |
| —config=FILE | 指定其他的配置文件,不适用默认的rsyncd.conf文件 |
| —port=PORT | 指定其他的rsync服务端口 |
| —progress | 在传输的时候实现传输过程 |
| —log-format=format | 指定日志文件格式 |
| —password-file=FILE | 从FILE中得到密码 |
rsync有三种工作方式:
(1).本地文件系统上实现同步。命令行语法格式为上述”Local”段的格式。
(2).本地主机使用远程shell和远程主机通信。命令行语法格式为上述”Access via remote shell”段的格式。
(3).本地主机通过网络套接字连接远程主机上的rsync daemon。命令行语法格式为上述”Access via rsync daemon”段的格式。
[root@xuexi ~]# rsync /etc/fstab /tmp # 在本地同步
[root@xuexi ~]# rsync -r /etc 172.16.10.5:/tmp # 将本地/etc目录拷贝到远程主机的/tmp下,以保证远程/tmp目录和本地/etc保持同步
[root@xuexi ~]# rsync -r 172.16.10.5:/etc /tmp # 将远程主机的/etc目录拷贝到本地/tmp下,以保证本地/tmp目录和远程/etc保持同步
[root@xuexi ~]# rsync /etc/ # 列出本地/etc/目录下的文件列表
[root@xuexi ~]# rsync 172.16.10.5:/tmp/ # 列出远程主机上/tmp/目录下的文件列表
netstat
netstat命令用于监控系统网络配置和工作状态,可以显示内核路由表、活动的网络状态以及每个网络接口的有用统计数字。
| 参数 | 命令 |
|---|---|
| -a | 显示所有连接中的Socket |
| -c | 持续列出网络状态 |
| -h | 帮助 |
| -i | 显示网络接口 |
| -l | 显示监控中服务器的Socket |
| -n | 直接使用IP地址 |
| -p | 显示正在使用Socket的程序名称 |
| -r | 显示路由表 |
| -s | 显示网络工作信息统计表 |
| -t | 显示TCP端口情况 |
| -u | 显示UDP端口情况 |
| -v | 显示命令执行过程 |
| -V | 显示版本信息 |
#显示所有端口,包括TCP和UDP head-4只显示前4行
[root@lhuan ~]# netstat -a | head -4
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 VM_0_3_centos:smtp 0.0.0.0:* LISTEN
tcp 0 0 VM_0_3_cento:cslistener 0.0.0.0:* LISTEN
#显示TCP所有端口
[root@lhuan ~]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 VM_0_3_centos:smtp 0.0.0.0:* LISTEN
tcp 0 0 VM_0_3_cento:cslistener 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:http 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ftp 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 lhuan:ssh 114.229.51.137:57958 ESTABLISHED
tcp 0 1 lhuan:ssh 159.203.13.59:50224 LAST_ACK
tcp 0 0 lhuan:52212 169.254.0.55:lsi-bobcat ESTABLISHED
tcp6 0 0 VM_0_3_centos:smtp [::]:* LISTEN
tcp6 0 0 [::]:mysql [::]:* LISTEN
#显示UDP所有端口
[root@lhuan ~]# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 lhuan:ntp 0.0.0.0:*
udp 0 0 VM_0_3_centos:ntp 0.0.0.0:*
udp6 0 0 lhuan:ntp [::]:*
udp6 0 0 VM_0_3_centos:ntp [::]:*
#显示所欲处于监听状态的端口并以数字方式显示而不是服务名
[root@lhuan ~]# netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 :::3306 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp 0 0 172.17.0.3:123 0.0.0.0:*
udp 0 0 127.0.0.1:123 0.0.0.0:*
#显示所有TCP端口并显示对应的进程名称或进程号
[root@lhuan ~]# netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1293/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1097/php-fpm: maste
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1387/nginx: master
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1107/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1747/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1293/master
tcp6 0 0 :::3306 :::* LISTEN 1131/mysqld
#显示核心路由信息
[root@lhuan ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
link-local 0.0.0.0 255.255.0.0 U 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
#显示网络接口列表
[root@lhuan ~]# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0 1500 0 0 0 0 0 0 0 0 BMU
eth0 1500 21543810 0 0 0 21867288 0 0 0 BMRU
lo 65536 48694 0 0 0 48694 0 0 0 LRU
#统计各个TCP连接的各个状态对应的数量
[root@lhuan ~]# netstat -plnta | sed '1,2d'| awk '{print $6}'| sort | uniq -c
3 ESTABLISHED
7 LISTEN
traceroute
traceroute命令跟踪数据包到达网络主机所经过的路由。
原理:视图以最小的TTL发出探测包来跟踪数据包到达主机所经过的网关,然后监听一个来自网关的ICMP的应答。
[root@lhuan ~]# traceroute
Usage:
traceroute [ -46dFITnreAUDV ] [ -f first_ttl ] [ -g gate,... ] [ -i device ] [ -m max_ttl ] [ -N squeries ] [ -p port ] [ -t tos ] [ -l flow_label ] [ -w waittime ] [ -q nqueries ] [ -s src_addr ] [ -z sendwait ] [ --fwmark=num ] host [ packetlen ]
| 参数 | 说明 |
|---|---|
| -f | 设置第一个检测数据包的存活数值TTL的大小 |
| -g | 设置来源路由网关,最多可设置8个 |
| -i | 使用指定的网络接口送出数据包 |
| -I | 使用ICMP回应取代UDP数据信息 |
| -m | 设置检测数据包的最大存活数值TTL,默认值为30次 |
| -n | 直接使用IP地址而非主机地址,当DNS不起作用的时候常用到这个参数 |
| -p | 设置UDP传输协议的通信端口,默认是33434 |
| -r | 忽略普通的路由表Routing Table 直接将数据包送到远端主机上 |
| -s | 设置本地主机送出数据包的IP地址 |
| -t | 设置检测数据包的TOS数值 |
| -v | 详细显示指令的执行过程 |
| -w | 设置等待远端主机回报的时间,默认值为3秒 |
| -x | 开启或关闭数据包的正确性检验 |
| -qn | 在每次设置生存期的时候,把探测数据包的个数设置为值n,默认为3 |
[root@lhuan ~]# ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=1 ttl=49 time=29.0 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=2 ttl=49 time=28.9 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=3 ttl=49 time=28.9 ms
64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=4 ttl=49 time=28.9 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 28.940/28.969/29.034/0.174 ms
#显示本地主机到www.baidu.com所经过的路由信息
[root@lhuan ~]# traceroute baidu.com
traceroute to baidu.com (220.181.38.148), 30 hops max, 60 byte packets
1 100.104.221.129 (100.104.221.129) 1.899 ms * *
2 100.104.243.232 (100.104.243.232) 0.794 ms * *
3 10.196.28.181 (10.196.28.181) 0.631 ms * *
4 10.196.0.66 (10.196.0.66) 1.479 ms 10.196.4.217 (10.196.4.217) 1.519 ms 10.196.0.66 (10.196.0.66) 1.370 ms
5 10.162.5.110 (10.162.5.110) 1.746 ms 10.162.5.109 (10.162.5.109) 1.579 ms 101.89.240.49 (101.89.240.49) 2.625 ms
6 101.95.218.73 (101.95.218.73) 3.042 ms 4.825 ms 101.227.217.33 (101.227.217.33) 1.857 ms
7 101.89.240.49 (101.89.240.49) 2.214 ms 101.89.240.61 (101.89.240.61) 1.840 ms 202.97.97.221 (202.97.97.221) 27.585 ms
##域名不可达,最大30跳
[root@lhuan ~]# traceroute -n baidu.com
traceroute to baidu.com (220.181.38.148), 30 hops max, 60 byte packets
1 100.104.221.129 2.233 ms
* *
2 * * *
3 * * *
4 10.196.0.58 1.311 ms 10.196.95.33 1.753 ms *
5 101.89.240.61 13.528 ms 10.162.5.110 1.694 ms 10.162.5.109 18.346 ms
6 101.95.218.33 3.700 ms * *
7 202.97.44.165 28.099 ms 101.89.240.53 3.219 ms 101.89.240.61 9.769 ms
8 36.110.246.178 26.563 ms 101.95.218.41 3.114 ms 101.95.218.249 3.999 ms
9 202.97.33.105 27.128 ms * 202.97.97.229 22.767 ms
10 36.110.246.150 26.810 ms 36.110.245.178 25.739 ms 36.110.245.230 27.692 ms
11 * 36.110.246.197 26.809 ms *
12 * * 220.181.17.18 26.522 ms
13 220.181.17.90 26.890 ms * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
每行记录对应一跳,每跳表示一个网关,每行有三个时间,单位是ms(毫秒)
*表示ICMP信息没有返回
telnet
telnet命令通常用来进行远程登录。
telnet程序是基于TELNET协议的远程的路客户端程序。TELNET协议是TCP/IP协议簇中的一族,是Internet远程登录服务的标准协议和主要方式,为用户提供了本地计算机上完成远程主机工作的能力。
telnet采用明文传输,安全性较差。
telnet可以确定远程服务端口的状态,以便确认服务是否正常。
[root@164-161A164 ~]# telnet 10.97.164.160 22
Trying 10.97.164.160...
Connected to 10.97.164.160.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4
wget
https://www.cnblogs.com/sx66/p/11887022.html
wget可以下载网络文件
| 参数 | 说明 |
|---|---|
| -b | 后台执行 |
| -d | 显示调试信息 |
| -nc | 不覆盖已有的文件 |
| -c | 断点下传 |
| -N | 指定wget只下载更新的文件 |
| -S | 显示服务器响应 |
| -T timeout | 超时时间设置(单位为秒) |
| -w time | 重试延时(单位为秒) |
| -Q quota=number | 重试次数 |
| -nd | 不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录中 |
| -nH | 不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下载到当前目录下 |
| -l [depth] | 下载远程服务器目录结构的深度 |
| -np | 只下载目标站点指定目录及其子目录的内容 |
wegt具有强大的功能,eg:断点续传,可同时支持FTP或HTTP协议下载,并可以设置代理服务器。
## 使用 wget -c 断点续传
wget -c https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
使用 wget -b 后台下载
[root@network test]# wget -b https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
继续在后台运行,pid 为 1463。
将把输出写入至 “wget-log”。
[root@network test]# tail -f wget-log
8550K .......... .......... .......... .......... .......... 96% 814K 0s
8600K .......... .......... .......... .......... .......... 97% 9.53M 0s
8650K .......... .......... .......... .......... .......... 98% 86.8M 0s
8700K .......... .......... .......... .......... .......... 98% 145M 0s
8750K .......... .......... .......... .......... .......... 99% 67.4M 0s
8800K .......... .......... .......... .......... .......... 99% 107M 0s
8850K .......... ......... 100% 1.95M=16s
2018-11-10 15:39:07 (564 KB/s) - 已保存 “wordpress-4.9.4-zh_CN.tar.gz.2” [9082696/9082696])
ss
ss是Socket Statistics的缩写。
ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。
ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。
| 参数 | 说明 |
|---|---|
| -a | 显示所有 |
| -t | 显示TCP连接 |
| -l | 列出所有打开的网络连接端口 |
| -s | 显示sockets摘要 |
| -p | 显示进程 |
| -n | 不解析服务名称 |
| -r | 解析服务名称 |
| -m | 显示内存情况 |
#查看进程使用的socket
[root@lhuan ~]# ss -pl
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN 0 0 rtnl:kernel *
nl UNCONN 0 0 rtnl:ntpd/650 *
nl UNCONN 768 0 rtnl:dockerd/20278
#显示所有状态为established的SMTP连接
[root@lhuan ~]# ss -o state 'established'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str 0 0 /usr/local/yd.socket.client 28079 * 28080
u_str 0 0 /run/dbus/system_bus_socket 14153 * 14152
u_str 0 0 /run/dbus/system_bus_socket 18089 * 18088
u_str 0 0 * 16767 * 16766
u_str 0 0 * 18768 * 18776
网络配置
linux 网络属性管理
主机之间进行通信:路由
- 跨主机通信需要路由,一般主机上有三种:主机路由、默认路由、网络路由
- 将linux主机接入到网络需要配置一下信息:IP/mask 默认网关 DNS 服务器(3个)
- linux配置网路方式:
- 动态指定:DHCP服务
- 静态指定:临时/永久配置
- ifcfg系列: ifconfig /route /netstat等工具
- ip系列:ip{link | route| addr} ss等工具
- 通过修改配置文件:/etc/sysconfig/network-script/*
- CentOS7配置工具:nmcli
Linux网络相关配置文件
| 文件 | 说明 | | —- | —- | | /etc/hostname | 主要用于修改主机名称 | | /etc/sysconfig/network-scripts/ifcfg- | 设置网卡参数的文件,eg:IP地址、子网掩码、广播地址、网关等。
为网卡编号或环回网卡 | | /etc/resolve.conf | 计算机的IP对应的主机名称或域名对应的IP地址。
通过设置/etc/nsswitch.conf中的选项,可以选择是DNS解析优先还是本地设置优先 | | /etc/nsswitch.conf(Name Seronfigvice Switch Configuration,名字服务切换配置) | 规定通过哪些途径,以及按照什么顺序来查找特定类型的信息 |
配置Linux系统的IP地址
配置文件路径:/etc/sysconfig/network-scripts/
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE="Ethernet" #类型
PROXY_METHOD="none" #代理方法
BROWSER_ONLY="no" #浏览唯一
BOOTPROTO="dhcp" #启动协议:DHCP static none
DEFROUTE="yes" #默认路由 yes
#ipv4 ipv6 相关配置
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33" #网卡名称
UUID="ef01c159-38e8-4dcf-a5b1-2baf122bddd6" #网卡 UUID 唯一标识设备
DEVICE="ens33" #设备名称
ONBOOT="yes" #是否启动
IPADDR=# ip地址
NETMASK=# 子网掩码
GATEWAY= 默认网关
DNS= DNS的nameserver地址
dns: 默认情况下bootproto是dhcp或者配置DNS则在下次启动网络服务的时候,会将那么nameserver地址写到/etc/resolv.conf文件中
最简单的配置方法:
TYPE="Ethernet"
BOOTPROTO="dhcp"
NAME="ens33"
ONBOOT="yes"
TYPE="Ethernet"
BOOTPROTO=static
NAME="ens33"
ONBOOT="yes"
IPADDR
NEMASK
GATWAY
DNS
/etc/sysconfig/network-scripts/route-IFACE <指定
| 参数 | 说明 |
|---|---|
| TYPE | 网络连接类型 |
| BOOTPROTO | 启动动态IP还是静态IP |
| ONBOOT | 系统启动的时候是否启用这个网络接口 |
| DEFROUTE | 值为yes的时候,将该接口设置为默认路由 |
| IPV4_FAILURE_FATAL | 设置为yes,在连接发生致命失败的情况下,系统会尽可能让连接保持可用 |
| IPV6INIT | 值为yes的时候,启用IPv6 |
| IPV6_AUTOCONF | 自动配置该连接 |
| IPV6_DEFROUTE | 值为yes,NetworkManager将该接口设置为默认路由 |
| IPV6_FAILURE_FATAL | 当设置为yes,当连接发生致命失败的情况下,系统会尽可能让连接保持可用 |
| NAME | 连接名 |
| UUID | 设置的唯一ID,此值与网卡对应 |
| DEVICE | 设备名 |
| GATEWAY | 默认路由 |
| DNS1 | 域名服务器地址,当有多个的时候可以使用DNS2 |
| IPV6_PEERDNS | 是否需要忽略由DHCP等自动分配的DNS地址 |
| IPADDR | IP地址 |
| IPV6_PEERROUTES | 忽略自动路由 |
网络接口识别并命名相关的udev配置文件:可以用于修改网卡的设备名称,不过要重新装载网卡驱动生效 /etc/udev/rules.d/70‐persistent‐net.rules
lsmod 查看内核装载的模块
卸载网卡驱动:
modprobe ‐r e1000
装载网卡驱动:
modprobe e1000
ip 命令
[root@localhost ~]# ip --help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
vrf }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-h[uman-readable] | -iec |
-f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } | -br[ief] |
-o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
-rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}
ip link 网络设备配置
- ip link help 显示配置帮助信息
- ip link set [interface] [up| down] 启动或关闭指定的接口
- ip link set [interface] multicast [on |off]:开启或关闭接口的组播功能
- ip link set [interface] name <NEW_NAME>: 设置接口的新名称
- ip link set [interface] mtu <MTU_NAME>:设置接口的mtu值
- ip link set [interface] nets [PID | NAME]:将指定进程或接口添加到命名空间中
命名空间 namespace 资源隔离 cgroup 资源限制 cpu mem io等等
- ip link show :显示所有接口状态信息
- ip link show [interface] :显示某个接口的状态信息
- ip link show up:显示状态为up的接口状态信息
ip address 协议地址管理
- ip address show 查看所有设备IP设备地址信息
dev <interface> 查看指定设备的IP地址信息<br /> label <interface:> 查看指定设备的标签<br /> dev <interface> primary 查看指定设备主IP
- ip address [add | del] IPADRESS dev <interface>
ip address add x.x.x.x/x dev ens32 [broadcase x.x.x.x | label ens32:1] 配置IP地址 <br /> ip address add x.x.x.x/x dev ens32 scope [global|link|host] 指定作用域<br /> global 全局可用(如果从另外一个网卡进来的数据也可以与该地址通信) <br /> link 仅链接可用(只能是该网卡直连的设备通信,同一个广播域) <br /> host 本机可用(只能自己通信,不能与其它任何地址通信)
- ip address flush dev <interface> 清空指定设备的所有IP地址
- ip address ‐ protocol address management
- ip addr { add | del } IFADDR dev STRING
- ip address add [ipaddress] dev [interface] 配置IP地址
- ip address del [ipaddress] dev [interface] 删除IP地址
- ip address add 192.168.1.1/24 dev ens33 --> ip link set ens33 up
重启网络服务:
- /etc/init.d/network restart或service network restart
- /etc/init.d/NetworkManager restart或service NetworkManager restart
- if config 192.168.1.1.24 dev ens33 up
ip route 网络路由设置
- ip route add 添加路由信息
- x.x.x.x/x via x.x.x.x dev <interface> 网络路由
- x.x.x.x via x.x.x.x dev <interface> 主机路由
- default x.x.x.x/x via x.x.x.x dev <interface> 默认路由
src x.x.x.x 添加路由时可以指定源IP地址
- ip route replace 192.168.1.0/24 via 192.168.1.1 dev [interface] scr 192.168.1.2 修改路由信息 (如果路由信息不存在则创建
- ip route change 192.168.1.0/24 via 192.168.1.1 dev [interface] scr 192.168.1.2 修改路由信息 (如果路由信息不存在则提示不存在)
- ip route delete
- ip route delete 192.168.1.0/24 : 删除路由
- ip route show:查看路由表
- ip route get 192.168.1.0/24:查看指定路由的详细信息
- ip route flush 192.168.1.0/24 :清空指定路由
- ip route flush:清空所有路由表
centos7 ip地址配置工具 (nmlic)
[root@localhost network-scripts]# nmcli --help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
- 常用方法:
- device ‐ show and manage network interfaces
- nmcli device status 查看所有网卡状态
- nmcli device show 查看所有网卡信息
- nmcli device show eth0 查看指定网卡信息
- nmcli device connect eth0 连接指定网卡
- nmcli device disconnect [interface] 断开指定网卡连接
- connection ‐ start, stop, and manage network connections
- nmcli connection show 查看所有连接信息
- nmcli c show eth0 查看指定设备详细信息
- 如何修改IP地址等属性:
- device ‐ show and manage network interfaces
网络客户端工具:
- lftp
- lftp [‐p port] [‐u user[,password]] SERVER
- get 下载单个文件
- mgst 下载多个文件
- ls 显示当前目录文件
- lftpget URL 直接跟URL地址下载文件到当前目录
- ftp 传统的ftp客户端工具,能用lftp就不用这个
- wget
- -q:静默模式
- -c:断点续传
- -O:指定下载到指定路径
- —limit -rates = 限制传输速率
网络管理配置小实验
需求:ABC三台主机,其中B充当路由器,完成AC之间通信
拓扑:A ——net1——- B ——net2———C
网卡示例:
A: host网卡
B:host网卡 + Nat网卡
C:Nat网卡
实验步骤:
1. ABC主机配置IP地址后测试直连是否OK
A: ifconfig ens33 192.168.10.10/24 up
B: ifconfig ens33 192.168.10.20/24 up
ifconfig ens36 172.16.128.8/16 up
C: ifconfig ens36 172.16.128.2/16 up
测试:
B:
a) ping 192.168.10.10 -> AB直连正常
b) ping 172.16.128.2 -> BC直连正常
2. AC主机上配置路由(主机路由/网络路由/默认路由)
主机路由:
A:ip route add 172.16.128.2 via 192.168.10.20 dev ens33 -> A知道怎么去
C: ip route add 192.168.10.10 via 172.16.128.8 dev ens36 -> C知道怎么回
网络路由:
A: ip route add 172.16.128.2/16 via 192.168.10.20 dev ens33
C: ip route add 192.168.10.10/24 via 172.16.128.8 dev ens36
默认路由:
A:ip route add default via 192.168.10.20 dev ens33
C: ip route add default via 172.16.128.8 dev ens36
3.B 开启转发功能
命令行下:#echo "1" > /prco/sys/net/ipv4/ip_forward
保持开机启动:
#vi /etc/sysctl.conf
设置net.ipv4.ip_forward值为1
net.ipv4.ip_ward = 1 //默认为0即不开启,1为开启转发功能
立即生效:
sysctl -p
4. 验证:ping 172.16.128.2
DHCP 动态主机配置协议
介绍
DHCP(Dynamic Host Configuration Protocol)提供一种动态指定IP地址和相关网络配置参数的机制。
动态主机配置协议,它是一个局域网网络协议,工作于UDP,监听的端口 68
DHCP基于C/S模式,主要用于大型网络
优点
减少网络管理员的工作量
避免ip地址的冲突
提高ip地址的利用率
移动计算机之后,不需要重新配置网络信息
相关概念
- DHCP客户端:获取网络配置参数
- DHCP服务端:提供网络配置参数(IP地址,默认网关,dns等)
- DHCP中继服务:服务端与客户端之间转发DHCP的设备(路由)
- 作用域:一个网络中所有可分配ip地址的连续范围,一个物理子网的单IP地址范围
- 超级作用域:一组作用域的集合,实现一个物理子网中多个逻辑IP地址
- 排除范围:排除作用域中有限制的IP地址(默认网关等)
- 地址池:作用域-排除范围=可分配的IP地址
- 保留地址:DHCP服务器永久提供地址租约,确保客户端始终使用相同的IP地址
- 租用:客户端从服务端获得临时IP地址的过程
- 租约:
获得IP地址的使用时间
获得IP地址的时候,租约就会被激活或更新,当租约到期时,可以进行续租操作
运行过程
DHCP客户端在局域网中发起一个广播(discover包),主要用于发现DHCP服务器
DHCP服务端收到discover包,回应客户端offer包,用于告诉客户端“我”能提供IP地址
DHCP客户端接收到offer包的时候,会发送request包请求IP地址
DHCP服务端发送ack包,确认信息
租约更新
- 自动更新租约
当租期大于等于50%,自动尝试更新租约
当租期大于等于87.5%,发送广播播再次更新租约
当租期大于等于100%,客户端停止使用当前IP地址,重新进行DHCP租约过程
- 手动更新:
windows:ifconfig / renew | ifconfig /release
Linux: dhclient -r
配置DHCP服务器与客户端
服务器
1.软件安装
#确认当前系统是否有安装相应的软件包
[root@lhuan ~]# rpm -aq | grep dhcp
dhcp-libs-4.2.5-77.el7.centos.x86_64
dhcp-common-4.2.5-77.el7.centos.x86_64
##如果需要安装
rpm -ivh dhcp-4.2.5-77.el7.centos.x86_64.rpm
主要的配置文件
/etc/dhcp/dhcpd.conf DHCP主配置文件
/usr/lib/systemd/system/dhcpd.service DHCP服务启动和停止控制单元
2.编辑主配置文件
如果存在的话,就修改
如果不存在的话,就创建
3.启动服务
systemctl start dhcpd
客户端
网卡上设置BOOTPROTO=”dhcp”
然后重启网络接口,使用ifconfig查看是否获取到新的IP地址
DNS
介绍
访问互联网可以使用域名,也可以使用IP地址直接进行访问。
在使用域名访问网络应用的时候,DNS负责将其解析为IP地址
DNS(域名解析服务)是一个分布式数据库系统,数据量的增长并不会影响其性能
新加入的网络应用可以由DNS负责将新主机的信息传播到网络中的其他部分。
DNS是基于客户端/服务端,c/s模型
DNS系统组成
域名空间:标识一组数据并提供他们相关的有关信息的树结构的详细说明
域名服务器:保持和维护域名空间中的相关数据
stub解析器:去域名空间查询主机(DNS客户端工具)
正向解析和反向解析
DNS分层结构
根域名(.)
顶级域名(.com .con …) 全球13个
子域名(eagles.com)
主机名称(www.eagles.com)
DNS服务器类型
权威性服务器
主域名服务器 提供特定域的权威信息,是可信赖的
辅助域名服务器 (主辅主要去做冗余服务) 信息来源于主DNS服务器
主域名服务器和辅助域名服务器之间的数据同步使用的是TCP协议;其他情况下一般都是 UDP协议
残根域名服务器
秘密域名服务器
非权威性服务器
说明:
- 1.所有服务器均会设置高速缓存服务器来提供域名解析(提高解析效率)
- 2.一些域的主域名服务器可以是另一个域的辅助域名服务器
- 3.一个域只能创建一个主域名服务器,另外至少需要创建两个辅助域名服务器(冗余)
- 4.在网络上设置高速缓存服务器可以减少主辅域名服务器的负载量,减少网络传输压力
- 5.转发服务器一般用于用户不希望站点内的服务器直接和外部服务器通讯的情况 ,内网DNS服务器
DNS的区域:
- 1.方便根据实际情况分散域名的管理工作的负荷,将DNS域名空间划分为区域来进行管理
- 区域是DNS服务器管理范围
- DNS服务器以区域为单位来管理域名空间
- 2.一台DNS服务器可以管理一个或多个区域,而一个区域也可以由多个DNS服务器来管理
- 将DNS域名空间划分成多个zone,每个zone都会存放一个或多个dns域的相关信息
- 在dns服务器中必须建立zone,在区域当中划分建立字域,然后添加各种记录域的委托管理
- 管理是分布式,dns将子域名授权给其他组织进行管理
优点:
- 拓展:
- XT:用来做SPF(返垃圾邮箱)
- AAAA:用来指定主机名(或域名)对应的ipv6地址
- SRV:记录是哪台计算机提供哪个服务,格式:服务名字、点、协议的类型,
- 显性URL:从一个地址301重定向另一个地址的时候
DNS查询类型
本地解析
通过以前查询获得到的缓存信息就地应答查询递归查询
由最初的域名服务器代替客户端进行域名查询。如果该域名服务器不能直接回答,则会在域中各分支的上下进行递归查询,最终返回查询结果给客户端。
在域名服务器进行查询期间,客户端将完全处于等待状态
找个人代替自己找
迭代查询
每次由客户端发起请求,如果请求的域名服务器能够提供需要查询的信息,则返回主机地址信息,如果不能提供,则引导客户端到其他域名服务器查询。
自己完成,首先到一个地方找,如果没招到再向另一个地方找
DNS解析过程
- 浏览器缓存
- 系统缓存
- 路由器缓存
——————-——————以上都是DNS客户端的缓存
- ISP DNS缓存
- 根域名服务器
- 顶级域名服务器
- 子域名服务器
- 主机名
- 返回结果,访问,保存至缓存
- 打开浏览器输入www.baidu.com dns cdn
DNS服务配置
网络上的域名服务系统使用最多的是BIND(Berkeley Internet Name Domain)软件,该软件实现了DNS协议
1.软件安装 ```检查系统中相关软件是否安装
[root@lhuan ~]# rpm -aq | grep bind bind-libs-9.11.4-9.P2.el7.x86_64 bind-license-9.11.4-9.P2.el7.noarch bind-export-libs-9.11.4-9.P2.el7.x86_64 bind-libs-lite-9.11.4-9.P2.el7.x86_64 bind-utils-9.11.4-9.P2.el7.x86_64
安装
[root@lhuan ~]# rpm -ivh bind-9.11.4-9.P2.el7.x86_64.rpm
主要的文件<br />/etc/named.conf DNS主配置文件<br /> /usr/lib/systemd/system/named.service DNS服务器的控制单元文件
<a name="QXkLw"></a>
### DNS服务测试
- 配置文件:/etc/resolv.conf
- nameserver DNS_SERVER_IP1
- nameserver DNS_SERVER_IP2
- FQDN 全球域名:
- 正向解析:FQDN—>IP
- dig ‐t A FQDN
- host ‐t A FQDN
- 反向解析:IP—>FQDN
- dig ‐x IP
- host ‐t PTR IP
<a name="138c0b06"></a>
#### /etc/host.conf
- Order:指定使用不同的名称解析机制顺序
- hosts:/etc/hosts文件
- bind:使用DNS服务器地址
- nis:使用NIS服务
- Alert::以off和on为参数。若为on,则任何试图骗取IP地址的行为都通过syslog工具进行记录
- Nospoof :在反向解析中,找到了指定IP地址来匹配主机名,对返回的地址进行解析,来确认查询到的IP地址是否匹配,防止“欺骗”IP地址,on:开启,off:关闭
- multi on:表示是否允许/etc/hosts文件,允许主机指定多个地址,on:开启,off:关闭
- recorder:所有查询将被重新排序 ,on:开启,off:关闭
<a name="aV3Yx"></a>
#### /etc/resolv.conf配置文件
- 常用选项
- nameserver:列出域名服务器的IP地址,最多可以出现3个nameserver指令
- domain:定义默认的域名(主机的本地域名)
- options:
- rotate:打开客户端,进行轮询查询(多个nameserver指令情境下)
- nocheckname:当需要使用带下划线"_"的域名时,需要设置该选项
<a name="zz8XL"></a>
### host
host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。
| 选项 | 参数 |
| --- | --- |
| -a | 显示详细的DNS信息; |
| -c<类型> | 指定查询类型,默认值为“IN“; |
| -C | 查询指定主机的完整的SOA记录; |
| -r | 在查询域名时,不使用递归的查询方式; |
| -t<类型> | 指定查询的域名信息类型; |
| -v | 显示指令执行的详细信息; |
| -w | 如果域名服务器没有给出应答信息,则总是等待,直到域名服务器给出应答; |
| -W<时间> | 指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令; |
| -4 | 使用IPv4; |
| -6 | 使用IPv6. |
[root@lhuan ~]# host baidu.com baidu.com has address 39.156.69.79 baidu.com has address 220.181.38.148 baidu.com mail is handled by 15 mx.n.shifen.com. baidu.com mail is handled by 20 mx1.baidu.com. baidu.com mail is handled by 20 jpmx.baidu.com. baidu.com mail is handled by 20 mx50.baidu.com. baidu.com mail is handled by 10 mx.maillb.baidu.com.
<a name="98y3A"></a>
### nslookup
nslookup命令用于查询DNS记录,查看域名解析是否正常,在网络故障的时候可以用来诊断网络问题
<a name="kzfKI"></a>
#### 直接查询
nslookup domain [dns-server]<br />domain是要查询的域名,dns-server是可选字段,默认使用本地DNS服务器解析。
[root@lhuan ~]# nslookup baidu.com Server: 183.60.83.19 Address: 183.60.83.19#53
Non-authoritative answer: Name: baidu.com Address: 220.181.38.148 Name: baidu.com Address: 39.156.69.79
[root@lhuan ~]# nslookup lhuan.top Server: 183.60.83.19 Address: 183.60.83.19#53
Non-authoritative answer: Name: lhuan.top Address: 106.54.241.164
<a name="TYRiy"></a>
#### 指定参数查询
nslookup -qt=type domain [dns-server],其中type表示参数类型<br /> 常见类型:
| 类型 | 说明 |
| --- | --- |
| A | 地址记录(IPV4) |
| AAAA | 地址记录(IPV6) |
| CNAME | 别名记录 |
| MX | 邮件服务器记录 |
| PTR | 反向记录 |
[root@lhuan ~]# nslookup -q=AAAA baidu.com Server: 183.60.83.19 Address: 183.60.83.19#53
Non-authoritative answer: * Can’t find baidu.com: No answer
<a name="eIrYb"></a>
### dig
[https://www.cnblogs.com/ginvip/p/6365605.html](https://www.cnblogs.com/ginvip/p/6365605.html)<br />dig是UNIX/BSD系统自带的DNS诊断工具。<br />@ :指定进行域名解析的域名服务器 <br />-x:进行逆向域名查询<br />+noall:忽略全部,不进行输出<br />+answer:只输出结果,省略过程<br />server 待查询名称服务器的名称或ip地址;<br />name 将要查询的资源记录的名称;<br />type 显示所需的查询类型,ANY,A,MX,SIG,默认是A<br />使用+【no】short运行简短输出<br />使用+【no】trace 跟踪域名解析过程
[root@lhuan ~]# dig baidu.dom +trace
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> baidu.dom +trace ;; global options: +cmd . 236127 IN NS c.root-servers.net. . 236127 IN NS i.root-servers.net. . 236127 IN NS m.root-servers.net. . 236127 IN NS e.root-servers.net. . 236127 IN NS g.root-servers.net. . 236127 IN NS k.root-servers.net. . 236127 IN NS a.root-servers.net. . 236127 IN NS f.root-servers.net. . 236127 IN NS l.root-servers.net. . 236127 IN NS h.root-servers.net. . 236127 IN NS d.root-servers.net. . 236127 IN NS j.root-servers.net. . 236127 IN NS b.root-servers.net. ;; Received 239 bytes from 183.60.83.19#53(183.60.83.19) in 0 ms
可以看出从本地的DNS服务器127.0.1.1返回了13个根域名服务器信息,系统从13个根服务器随机选择一个进行访问。
dog. 86400 IN NSEC domains. NS DS RRSIG NSEC dog. 86400 IN RRSIG NSEC 8 1 86400 20201026050000 20201013040000 26116 . 5H53aiqCMUByEHakJ0oEniR/Doq2EewW1zAgjrPR6y8pdY0BAw63nAzF WNAtCQfRKyiSfcnjNkMH3G1pTrKgAHGAJk72HD4NKgTvL/79tVQBZAF+ ft1vw7CpTGaXUK+HMAeGKUBA8a9VQL+iSooXPi4o0mturU74X4xERQuw JmvsnX1Ct47oxv/BzNTh4zNzmwfVaxNeB8WTiFrKkAVhgnkW8PEYeqZk RNbzkCTLcgrHZHHNbUXyo2QMtSmfO+Sx5mb+vRy3I1GW9z3JEgTrWaTs 0k9nYVagBiQbvoXH4+hbcoMghXJr4uw85vTNPG0+VhlZe1nhq+vsJM2q 68nTMg== . 86400 IN NSEC aaa. NS SOA RRSIG NSEC DNSKEY . 86400 IN RRSIG NSEC 8 0 86400 20201026050000 20201013040000 26116 . ioIxYX2P8P2NVpT1OFmRLoP1newmXTNqFp3OY4zHZcYhAoSVH+1tv8EH M28H16DpGRGZ3tt78OVtXCh05CGSAkJNaTorDd7X5f/dzdjpFlAZ2AVw SR9+X9G0D4M85aeWU3UjW58rXpenm65s2Vbcj7q19YoRdCmhW6K9etct Sj/B9umNZ5XQb7jXqvDUYVSfkg2BPXVVDq1Qxkfat1knq8XsSqOsuilr 4D1+HQZQdlHCQDmhoIFbq1A5cZ8mZBT3YkQDL26dMnUXsOuuBMF/Roio LU0X+xdULC10Zn9WnSVa4+Cgq3oKV5p3WW+kpcGRCZBB5NTcoBKVJYaX 15VjzQ== . 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2020101300 1800 900 604800 86400 . 86400 IN RRSIG SOA 8 0 86400 20201026050000 20201013040000 26116 . HkZ31JxlLwbIUlbbsF7KZOZoNEamRr4vHVtG3MGo+Xbi0GBEPVK+CudV AMjzgIjA8tbCQ2vRSiCBvemRehxLLhICI9haH8sKjkJ2HbpfpVs8iCLQ FNVdqbNfSnL+CQOs1ufE2rDIygjcDgMDYUnRYjbkTYhHJxcshIRBa/cu EDsErwrCPb+kCHdYoPDgng+FmL4m6S6DJMwLq81sCUuPgWsZf6CnY3Zs ScB80WWAouIlBECom8sgXKoibttZf4PMMpsvdh8Uj4G2MldPSRvOMG5Q jw3tB0QuzJr6Qdv1/BmAfSndczyVH4mYK82eeiyjRUPb0SX3IqwIuhbQ 4xmdHg== ;; Received 1029 bytes from 199.7.83.42#53(l.root-servers.net) in 4 ms
```
[root@lhuan ~]# dig qq.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28239
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;qq.com. IN A
;; ANSWER SECTION:
qq.com. 146 IN A 58.250.137.36
qq.com. 146 IN A 125.39.52.26
qq.com. 146 IN A 58.247.214.47
;; Query time: 0 msec
;; SERVER: 183.60.83.19#53(183.60.83.19)
;; WHEN: Tue Oct 13 21:18:21 CST 2020
;; MSG SIZE rcvd: 83
第一部分显示 dig 命令的版本和输入的参数。
第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
第三部分中的 "QUESTION SECTION" 显示我们要查询的域名。
第四部分的 "ANSWER SECTION" 是查询到的结果。
第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。
