Linux进阶学习笔记之——Linux的网络参数设置

Linux 的网络参数设置

1、连接 Internet

1.1、Linux 网络相关配置文件

我们知道 TCP/IP 的重要参数主要是 IP、Netmask、Gateway、DNS IP,而且千万不要忘记你这台主机也应该有主机名(Hostname)。此外,我们也知道 IP 的获取办法有手动获取、DHCP 自动分配等。那么这些参数主要写在哪些配置文件中呢?

所需网络参数 主要配置文件名 重要参数
IP
Netmask
DHCP
Gateway
/etc/sysconfig/network-scripts/ifcfg-网卡名 DEVICE=网卡名称
BOOTPROTO=是否启用 dhcp
HWADDR=是否加入网卡 MAC 地址
IPADDR=IP 地址
NETMASK=子网掩码
ONBOOT=要不要默认启动此接口
GATEWAY=网关地址
NM_CONTROLLED=额外的网管软件,建议取消
主机名 /etc/sysconfig/network NETWORKING=要不要使用网络
NETWORKING_IPV6=是否支持 IPV6
HOSTNAME=主机名
DNS IP /etc/resolv.conf Name Server DNS 的 IP 地址
私有 IP 对应的主机名 /etc/hosts 私有 IP 主机名 别名

此外,还有一些文件需要了解一下:

  • /etc/services

    这个文件是记录构建在 TCP/IP 上面的各种协议所定义的 port number,都是这个文件所规划出来的。如果你想自定义一个新的协议与 port 相对应,就需要修改这个文件。

  • /etc/protocols

    这个文件是在定义 IP 数据报协议的相关数据,包括 ICMP/TCP/UDP 的数据报协议的定义等。

至于网络方面的启动命令,记住以下一个命令即可:

  • systemctl restart network(/etc/init.d/network restart):

    一口气重新启动整个网络的参数。它会主动地读取所有的网络配置文件,所以可以很快地恢复系统默认的参数值。

  • ifup 网卡名(ifdown 网卡名)

    启动或者关闭某个网络接口。这两个 scripts 会主动去 /etc/sysconfig/network-scripts/ 目录下,读取适当的配置文件来处理。

此外,还有一个 NetworkManager 的软件来管理网络,如果想要自己搭建网络环境,建议把它关闭。

1.2、连接 Inernet 的设置方法

1.2.1、手动配置固定 IP 参数

我的网络环境:我的 Linux 主机与一台路由器连接,路由器分配的地址为:10.0.0.100 ~ 10.0.0.250,子网掩码为:255.0.0.0,如图:
在这里插入图片描述

所以可知,取得的固定 IP 参数并非一定是 Public IP。它只是一组可接受的固定 IP。相关配置参数与启动脚本及指令如下:

修改的参数 配置文件与重要启动脚本 查看结果的指令
IP 相关参数 /etc/sysconfig/network-scripts/ifcfg-网卡名
systemctl restart network
ifconfig (IP/Netmask)
route -n (gateway)
DNS /etc/resolv.conf dig www.baidu.com
主机名 /etc/sysconfig/network
/etc/hosts
hostname 主机名
ping $(hostname)
reboot
1.2.1.1、IP/Netmask/Gateway 的配置、启动与查看
[root@li ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE="ens33"		#网卡名称,必须要与 ifcfg-ens33 相对应
UUID="1d79d0d4-b10b-44ea-b843-574618e0588a"		#设备的 UUID
ONBOOT="yes"		#是否默认启动此接口
BOOTPROTO=none		#取得 IP 的方式,其实关键字只有 dhcp,手动可以输入 none
IPADDR=10.0.0.246	#就是 IP
NETMASK=255.0.0.0	#子网掩码
GATEWAY=10.0.0.1	#默认路由
...

配置完成后,现在让我们来重新启动网络接口,这样才能更新整个网络参数:

[root@li ~]# systemctl restart network

接下来检查一下配置是否正确:

#检查一下 IP 参数
[root@li ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.246  netmask 255.0.0.0  broadcast 10.255.255.255	#这一行
        inet6 fe80::20c:29ff:fe5d:576  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5d:05:76  txqueuelen 1000  (Ethernet)
        RX packets 6649  bytes 455083 (444.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11962  bytes 1373300 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        
#检查一下路由定义
[root@li ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 ens33
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33
#0.0.0.0 代表默认路由的配置值

#检查与路由器之间能否连接成功
[root@li ~]# ping -c 3 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.793 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.726 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.607 ms

--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2015ms
rtt min/avg/max/mdev = 0.607/0.708/0.793/0.082 ms
#如果失败了,要看路由器是否已经关闭了?或者是 Switch/Hub 是否有问题?或者是网线的问题,还是路由器配置错误?

这时 TCP/IP 参数已经配置完毕了,这表示你可以使用 IP 来上网了。但是还不能使用主机名上网。

1.2.1.2、DNS 服务器 IP 的定义与查看

这个 /etc/resolv.conf 文件很重要,它会影响到你是否可以查询到主机名与 IP 地址的映射。

[root@li ~]# vim /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
search lan server
nameserver 10.0.0.1

测试:

[root@li ~]# yum -y install bind-utils
[root@li ~]# dig www.baidu.com
;; QUESTION SECTION:
;www.baidu.com.                 IN      A

;; ANSWER SECTION:
www.baidu.com.          1029    IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       58      IN      A       61.135.169.121
www.a.shifen.com.       58      IN      A       61.135.185.32

;; Query time: 18 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)		#可以看到 server 是哪台主机
;; WHEN: 四 8月 27 10:49:01 CST 2020
;; MSG SIZE  rcvd: 101

上面的输出有两个重点:一个是问题查询(QUESTION SECTION) www.baidu.com 的 A(Address)参数,并且从回答(ANSWER SECTION)中得到我们所需要的 IP 参数。二是最后的 Server 字段,表明 DNS 服务器的 IP 地址。

1.2.1.3、主机名的修改

修改主机名就需要修改 /etc/sysconfig/network 和 /etc/hosts 这两个文件:

[root@li ~]# vim /etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
HOSTNAME=Li.server

[root@li ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
#上面两行特别重要,不要删除
10.0.0.246      Li.server

修改完毕后需要重新启动。因为系统中有很多的服务需要主机名,都是去这个文件中读取的。但我们还需要确认一些信息,再去重启。

[root@li ~]# ping -c 2 Li.server		#ping 我们刚才设置的主机名
PING Li.server (10.0.0.246) 56(84) bytes of data.
64 bytes from Li.server (10.0.0.246): icmp_seq=1 ttl=64 time=0.075 ms
64 bytes from Li.server (10.0.0.246): icmp_seq=2 ttl=64 time=0.036 ms

--- Li.server ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.036/0.055/0.075/0.020 ms

1.2.2、自动取得 IP 参数

[root@li ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=dhcp		#只需要修改这个,其余的注解掉
#IPADDR=10.0.0.246
#NETMASK=255.0.0.0
#GATEWAY=10.0.0.1

[root@li ~]# systemctl restart network

基本上,/etc/resolv.conf 默认会被 DHCP 所修改,甚至连主机名都会被 DHCP 修改。


2、Linux 中常用的网络命令

2.1、设置网络参数的命令

  • ifconfig:查询、设置网卡与 IP 网络等相关参数;
  • ifup、ifdown:这是两个 script 文件,起作用是通过更简单的方式来启动与关闭网络接口;
  • route:查看、配置路由表;
  • ip:整合式的命令,可以直接修改上述提到的功能。

2.1.1、手动/自动配置 IP 参数与启动/关闭网络接口:ifconfig、ifup、ifdown

2.1.1.1、ifconfig
[root@li ~]# ifconfig {interface} {up|down}
[root@li ~]# ifconfig interface {options}
选项与参数:
interface:网卡接口名称
options:可以使用的参数,包括:
	up,down:启动或关闭该网络接口
	mtu:设置不同的 MTU 值
	netmask:子网掩码
	broadcast:广播地址
#1、查看所有的网络接口(直接输入 ifconfig)
[root@li ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.246  netmask 255.0.0.0  broadcast 10.255.255.255
        inet6 fe80::20c:29ff:fe5d:576  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5d:05:76  txqueuelen 1000  (Ethernet)(传输数据的缓冲区长度)
        RX packets 5671  bytes 388961 (379.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10151  bytes 1168482 (1.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0(数据包冲突情况)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 4  bytes 336 (336.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 336 (336.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
#2、暂时修改网络接口,给予 ens33 一个 10.0.0.125 的参数
[root@li ~]# ifconfig ens33 10.0.0.125
#系统会依照该 IP 所在的 class 范围内,自动计算出 netmask 以及 network,broadcast 等 IP 参数,若想修改其他 IP 参数:

[root@li ~]# ifconfig ens33 10.0.0.125 \
> netmask 255.0.0.0 mtu 8000
[root@li ~]# ifconfig ens33 mtu 5000	#仅修改 MTU

#在实体网卡上再仿真出一个网络接口,也就是一张网卡上设置多个 IP 的意思
[root@li ~]# ifconfig ens33:0 172.16.0.100
[root@li ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 5000
        inet 10.0.0.125  netmask 255.0.0.0  broadcast 10.255.255.255
        inet6 fe80::20c:29ff:fe5d:576  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5d:05:76  txqueuelen 1000  (Ethernet)
        RX packets 493  bytes 44193 (43.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 616  bytes 79326 (77.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.0.100  netmask 255.255.0.0  broadcast 172.16.255.255
        ether 00:0c:29:5d:05:76  txqueuelen 1000  (Ethernet)

#关掉 ens33:0 这个接口
[root@li ~]# ifconfig ens33:0 down

#重启网络,使之前的配置全部失效
[root@li ~]# systemctl restart network
2.1.1.2、ifup、ifdown
[root@li ~]# ifup {interface}
[root@li ~]# ifdown {interface}

不过注意的是,如果以 ifconfig ens33 的方式来设置或修改了网络接口后,那就无法再以 ifdown ens33 的方式来关闭了因为 ifdown 会去分析比对当前网络参数与 ifcfg-ens33 是否相符,不符的话就会放弃此次操作。因此使用 ifconfig 修改完毕后,应该使用 ifconfig ens33 down 来关闭

2.1.2、修改路由:route

[root@li ~]# route [-nee]
[root@li ~]# route add [-net|-host] [网络或主机] netmask [mask] [gw|dev]
[root@li ~]# route del [-net|-host] [网络或主机] netmask [mask] [gw|dev]
选项与参数:
查看的参数:
	-n:不要使用通信协议或主机名,直接使用 IP 地址或 port number
	-ee:显示更详细的信息
增加与删除路由的相关信息:
	-net:表示后面接的路由为一个网络
	-host:表示后面接的为连接到单台主机的路由
	netmask:与网络有关,可设置 netmask 决定网络的大小
	gw:gateway 的简写,后续接的是 IP 的数值,与 dev 不同
	dev:如果只是要指定由哪一块网卡连接出去,则使用这个参数
#1、单纯地查看路由
[root@li ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 ens33
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33

[root@li ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         phicomm.me      0.0.0.0         UG    0      0        0 ens33
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ens33
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 ens33

在默认情况下,route 会解析出 IP 的主机名,如果解析不到呢?就会有延时,所以直接使用 route -n。

  • Destination、Genmask:这两个参数就是 network 与 netmask 了,它们就组合成了一个完整的网络
  • Gateway:该网络是通过哪个 Gateway 连接出去的?如果显示的是 0.0.0.0 表示的是该路由是直接由本机传送的,也就是通过局域网的 MAC 直接发送的如果现实的是 IP 的话,表示该路由需要经过路由器(网关)的帮忙才能发送出去
  • Flags:总共有多个标志,代表的意义如下:
    • U(route is up):该路由是启动的
    • H(target is a host):目标是一台主机(IP)而非网络
    • G(use gateway):需要通过外部的主机来传递数据包
    • R:使用动态路由时,恢复路由信息的标志;
    • D:动态路由;
    • M:路由已经被修改了;
    • !:这个路由将不会被接受(用来阻止不安全的网络)。
  • Iface:这个路由传递数据包的接口。
#2、路由的增加与删除
[root@li ~]# ping 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
64 bytes from 172.16.0.1: icmp_seq=1 ttl=63 time=2.31 ms
64 bytes from 172.16.0.1: icmp_seq=2 ttl=63 time=2.21 ms
64 bytes from 172.16.0.1: icmp_seq=3 ttl=63 time=1.97 ms
[root@li ~]# route add -net 172.160.0.0 netmask 255.255.0.0 dev ens33
#注意,增加的路由必须能够与你的网络互通

[root@li ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev ens33

[root@li ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         phicomm.me      0.0.0.0         UG    0      0        0 ens33
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 ens33
172.160.0.0     0.0.0.0         255.255.0.0     U     0      0        0 ens33

#增加默认路由的方法,请注意,只要有一个默认路由就够了
[root@li ~]# route add default gw 172.160.0.1
[root@li ~]# systemctl restart network		#重启网络,恢复原本的设置

2.1.3、网络参数综合命令:ip

[root@li ~]# ip [options] [动作] [命令]
选项与参数:
options:设置的参数,主要有:
	-s:显示出设备的统计数据,例如接收数据包的总数等;
操作:也就是可以针对哪些网络参数进行操作,包括:
	link:与设备相关的设置,包括:MTU、MAC 地址等
	addr/address:关于额外的 IP 协议,例如多 IP 的实现等
	route:与路由有关的相关设置
2.1.3.1、关于接口设备(device)的相关设置:ip link
[root@li ~]# ip [-s] link show		#单纯地显示该设备的相关信息
[root@li ~]# ip link set [device] [动作与参数]
选项与参数:
show:仅显示出这个设备的相关属性,如果加上 -s 会显示更多的统计信息
set:可以开始设置项目,device 指的是 ens33 等设备名称
动作与参数:
	up|down:启动或关闭某个接口
	address:如果这个设备可以更改 MAC 的话,用这个参数修改
	name:给予这个设备一个特殊的名字
	mtu:就是最大传输单元
#1、显示本机所有的接口信息
[root@li ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:5d:05:76 brd ff:ff:ff:ff:ff:ff

[root@li ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast
    0          0        0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    0          0        0       0       0       0
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:5d:05:76 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    713706     11314    0       0       0       0
    TX: bytes  packets  errors  dropped carrier collsns
    2401764    21104    0       0       0       0
2.1.3.2、关于额外 IP 的相关设定:ip address

如果说 ip link 是与 ISO 七层协议的第二层数据链路层相关的话,那么 ip address(ip addr) 就是与第三层网络层相关了

[root@li ~]# ip address show		#显示查看 IP 参数
[root@li ~]# ip address [add|del] [IP参数] [dev 设备名] [相关参数]
选项与参数:
show:仅显示接口的 IP 信息
add|del:进行相关参数的增加或删除设置,主要有:
	IP 参数:主要就是网络的设置
	dev:这个 IP 参数所要设置的接口
	相关参数主要有以下这些:
		broadcast:设置广播地址,如果是 + 则表示让系统自己计算
		label:设备别名
		scope:这个选项的参数,通常是这几类:
			global:允许来自所有来源的连接
			site:仅支持 ipv6,仅允许本主机的连接
			link:仅允许本设备的自我连接
			host:仅允许本主机内部的连接
			所以当然使用 global 了,默认也是这个参数
#1、显示所有的接口的 IP 参数
[root@li ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5d:05:76 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.246/8 brd 10.255.255.255 scope global dynamic ens33
       valid_lft 84945sec preferred_lft 84945sec
    inet6 fe80::20c:29ff:fe5d:576/64 scope link
       valid_lft forever preferred_lft forever

增加虚拟网络接口试试:

[root@li ~]# ip address add 176.160.0.100/16 broadcast + dev ens33 label ens33:Li
[root@li ~]# ip address show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5d:05:76 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.246/8 brd 10.255.255.255 scope global dynamic ens33
       valid_lft 84854sec preferred_lft 84854sec
    inet 176.160.0.100/16 brd 176.160.255.255 scope global ens33:Li		#这一行
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5d:576/64 scope link
       valid_lft forever preferred_lft forever
       
[root@li ~]# ifconfig
ens33:Li: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 176.160.0.100  netmask 255.255.0.0  broadcast 176.160.255.255
        ether 00:0c:29:5d:05:76  txqueuelen 1000  (Ethernet)  
        
#删除刚刚的那个接口
[root@li ~]# ip address del 176.160.0.100/16 dev ens33
2.1.3.3、关于路由的相关设定:ip route
[root@li ~]# ip route show
[root@li ~]# ip route [add|del] [IP或网络号] [via gateway] [dev 设备]
选项与参数:
show:单纯地显示出路由表,也可以使用 list
add|del:添加或删除路由
	IP 或网络号:可使用网络号或单纯的 IP
	via:网关地址
	dev:设备
	mtu:额外设置 MTU
#1、显示出路由信息
[root@li ~]# ip route show
default via 10.0.0.1 dev ens33
10.0.0.0/8 dev ens33 proto kernel scope link src 10.0.0.246
169.254.0.0/16 dev ens33 scope link metric 1002

#2、路由的添加,主要是本机可直接沟通的网络
[root@li ~]# ip route add 172.160.0.0/16 dev ens33
[root@li ~]# ip route show
172.160.0.0/16 dev ens33 scope link

#3、增加可以通往外部的路由,需要通过 router
[root@li ~]# ip route add 172.16.0.0/16 via 10.0.0.1 dev ens33
[root@li ~]# ip route show
172.16.0.0/16 via 10.0.0.1 dev ens33

#4、删除路由
[root@li ~]# ip route del 172.160.0.0/16
[root@li ~]# ip route del 172.16.0.0/16

2.1.4、DHCP 客户端命令:dhclient

如果你是使用 DHCP 协议在局域网内获取 IP 的话,那么是否一定要去编辑 ifcfg-ens33 内的 BOOTPROTO 呢?有更快速的办法,就是利用 dhclient 这个命令。因为这个命令才是真正发送 DHCP 请求的

[root@li ~]# dhclient ens33

2.2、网络排错命令检查

2.2.1、两台主机之间的沟通:ping

ping 是通过 ICMP 数据报来进行整个网络的状态报告。

[root@li ~]# ping [选项与参数] IP
选项与参数:
-c 数值:后面接的是 ping 的次数
-n:在后面输出数据时不进行 IP 与主机名的反查,直接使用 IP 输出(速度较快)
-s 数值:发送出去的 ICMP 数据报大小,默认为 56bytes
-t 数值:TTL 的数值,每经过一个节点就减少 1
-W 数值:等待响应对方主机的秒数
-M [do|dont]:主要在检测网络的 MTU 数值大小,两个常见的项目是:
	do:代表传送一个 DF 标志,让数据报不能重新拆包与打包
	dont:表示可以拆包与打包
#1、测试与路由器的连通性
[root@li ~]# ping -c 3 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.448 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.737 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.778 ms

--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 0.448/0.654/0.778/0.148 ms

#2、找出最大的 MTU 数值
[root@li ~]# ping -c 2 -s 1000 -M do 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 1000(1028) bytes of data.
1008 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.935 ms
1008 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.804 ms
#如果有响应,则代表这个 MTU 可以接受
[root@li ~]# ping -c 2 -s 8000 -M do 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 8000(8028) bytes of data.
ping: local error: Message too long, mtu=1500
ping: local error: Message too long, mtu=1500
#如果没响应说明这个 MTU 数值太大了

不过,需要注意的是,由于 IP 数据报的报头就已经占用了 20bytes,再加上 ICMP 的报头有 8bytes,所以当你在使用 -s size 的时候,那个数据报的大小就需要先扣除 (20+8=28)的大小了

2.2.2、两主机各节点分析:traceroute

[root@li ~]# traceroute [选项与参数] IP
选项与参数:
-n:可以不必进行主机的名称解析,单纯使用 IP
-U:使用 UDP 的 port 33433 来进行检测,这也是默认的检测协议
-I:使用 ICMP 的方式进行检测
-T:使用 TCP 进行检测,一般使用 port 80 检测
-w:若对方主机在几秒之内没有回应就说明不通...默认是 5 秒
-p 端口号:若不想使用 UDP 与 TCP 的默认端口,可在此改变端口
-i 设备:用在比较复杂的环境,如果网路接口很多很复杂时,才会用到这个参数
-g 路由:与 -i 的参数相仿,只是 -g 后面接的是 gateway 的 IP
[root@li ~]# yum install traceroute
#1、检测我的主机与手机之间的各节点连接状态(我的主机连接在 IP 为 10.0.0.1 的路由器下,这台路由器桥接了 172.16.0.1 的路由器,手机则连接在这台路由器下)
[root@li ~]# traceroute -n 172.16.0.171
traceroute to 172.16.0.171 (172.16.0.171), 30 hops max, 60 byte packets
 1  10.0.0.1  0.355 ms  0.365 ms  0.381 ms		#先经过 10.0.0.1 这台路由器
 2  172.16.0.171  16.212 ms  16.182 ms  17.334 ms
 
 #2、检测到百度的节点信息
 [root@li ~]# traceroute -n www.baidu.com
traceroute to www.baidu.com (61.135.185.32), 30 hops max, 60 byte packets
 1  10.0.0.1  0.336 ms  0.350 ms  0.357 ms
 2  172.16.0.1  3.561 ms  3.493 ms  3.405 ms
 3  192.168.1.1  8.793 ms  10.312 ms  10.242 ms
 4  222.136.56.1  14.093 ms  14.056 ms  14.053 ms
 5  221.13.196.201  13.266 ms 221.13.196.205  13.411 ms 221.13.197.181  14.148 ms
 6  61.168.28.85  32.559 ms  32.492 ms 61.168.28.89  39.739 ms
 7  219.158.22.41  32.394 ms 219.158.98.185  29.700 ms 219.158.11.101  29.648 ms
 8  124.65.194.82  29.582 ms 125.33.186.50  31.507 ms 124.65.194.82  29.801 ms
 9  202.106.227.10  29.712 ms  26.629 ms  26.479 ms
10  202.106.43.30  29.753 ms 123.125.248.122  25.877 ms 123.125.248.106  25.813 ms
11  * * *
...(下面全是 * * *

traceroute 这个命令会针对欲连接的目标的所有 node 进行 UDP 的超时等待,并检测回复的时间,每个节点检测三次。其中,返回星号的,代表该 node 可能设有某些防护措施,让我们发送的数据报信息被丢失掉。

#默认使用 UDP 检测,我们也可以使用 TCP 进行测试
[root@li ~]# traceroute -T -w 1 -n www.baidu.com
traceroute to www.baidu.com (61.135.169.121), 30 hops max, 60 byte packets
 1  10.0.0.1  0.461 ms  0.529 ms  0.488 ms
 2  61.135.169.121  6.069 ms  6.092 ms  6.114 ms

2.2.3、查看本机的网络连接与后门:netstat

[root@li ~]# netstat -[rn]		#与路由有关的参数
[root@li ~]# netstat -[antulpc]		#与网络接口有关的参数
选项与参数:
与路由有关的参数说明:
-r:列出路由表
-n:不使用主机名与服务名称,使用 IP 与 port number
与网络有关的参数说明:
-a:列出所有的连接状态,包括 tcp/udp/unix socket 等
-t:仅列出 TCP 数据报的连接
-u:仅列出 UDP 数据报的连接
-l:仅列出已在 Listen(监听)的服务的网络状态
-p:列出 PID 与 Program 的文件名
-c:可以设置几秒钟后自动更新一次
#1、列出当前的路由表状态,且以 IP 及 port number 进行显示
[root@li ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG        0 0          0 ens33
10.0.0.0        0.0.0.0         255.0.0.0       U         0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens33

#2、列出当前的所有网络连接状态,使用 IP 与 port number
[root@li ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp        0      0 10.0.0.246:22           10.0.0.100:50428        ESTABLISHED
tcp        0     64 10.0.0.246:22           10.0.0.100:50427        ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN
udp        0      0 0.0.0.0:68              0.0.0.0:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     19624    private/verify
unix  2      [ ACC ]     STREAM     LISTENING     19609    private/tlsmgr
...

netstat 的输出主要分为两大部分,分别是 TCP/IP 的网络接口部分,以及传统的 Unix Socket 部分

#3、显示目前已经启动的网路服务
[root@li ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1035/sshd         
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1202/master       
tcp6       0      0 :::22                   :::*                    LISTEN      1035/sshd         
tcp6       0      0 ::1:25                  :::*                    LISTEN      1202/master       
udp        0      0 0.0.0.0:68              0.0.0.0:*                           976/dhclient 

通过参数 -p 我们可以知道启动这个服务的 PID 和服务名,如果想要关闭这个端口,可以直接 kill 删除 PID,也可以使用 killall 删除服务名即可。

#4、查看本机所有的网络连接状态
[root@li ~]# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1035/sshd         
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1202/master       
tcp        0      0 10.0.0.246:22           10.0.0.100:50428        ESTABLISHED 1297/sshd: root@not
tcp        0     64 10.0.0.246:22           10.0.0.100:50427        ESTABLISHED 1293/sshd: root@pts
tcp6       0      0 :::22                   :::*                    LISTEN      1035/sshd         
tcp6       0      0 ::1:25                  :::*                    LISTEN      1202/master       
udp        0      0 0.0.0.0:68              0.0.0.0:*                           976/dhclient 

2.3、检测主机名与 IP 的对应:host、nslookup

关于主机名与 IP 的对应,主要的命令是 dig,不过还有两个简单的命令:

2.3.1、host

[root@li ~]# host [-a] hostname [server]
选项与参数:
-a:列出该主机的详细的各项主机名设置数据
[server]:可以使用不是由 /etc/resolv.conf 文件定义的 DNS 服务器 IP 来查询
#1、列出 www.baidu.com 的 IP
[root@li ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 61.135.185.32
www.a.shifen.com has address 61.135.169.121

可以看到,已经查询出 IP。那么这个 IP 是向谁查询的呢?其实就是写在 /etc/resolv.conf 那个文件里面的 DNS 服务器 IP。如果不想使用该文件内的主机来查询,可以这样做:

[root@li ~]# host www.baidu.com 223.5.5.5	#国内的一台 DNS 服务器 IP
Using domain server:
Name: 223.5.5.5
Address: 223.5.5.5#53
Aliases:

www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 61.135.169.121
www.a.shifen.com has address 61.135.185.32

[root@li ~]# host www.baidu.com 8.8.8.8		#当然也可以查国外的
www.wshifen.com has address 103.235.46.40

2.3.2、nslookup

[root@li ~]# nslookup [-query=[type]] [hostname|IP]
选项与参数:
	-query=type:查询的类型,除了传统的 IP 与主机名的对应外,DNS 还有很多信息,所以我们可以查询很多不同的信息,包括 mx、cname等
#1、找出 www.baidu.com 的 IP
[root@li ~]# nslookup www.baidu.com
Server:         10.0.0.1
Address:        10.0.0.1#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 61.135.185.32
Name:   www.a.shifen.com
Address: 61.135.169.121

#2、找出 172.16.0.171 的主机名
[root@li ~]# nslookup 10.0.0.183
183.0.0.10.in-addr.arpa name = riashittekiiPad.lan.

2.4、远程连接命令

2.4.1、终端机与 BBS 连接:telnet

[root@li ~]# telnet [host|IP [port]]
[root@li ~]# yum install telnet
#1、检测本地主机的 110 这个 port 是否正确启动
[root@li ~]# telnet localhost 110
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused		#没有启动

[root@li ~]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 li.erver ESMTP Postfix
ehlo localhost
250-li.erver
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

2.5、文字接口下载器:wget

[root@li ~]# wget https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm
--2020-08-28 09:20:15--  https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm
正在解析主机 repo.zabbix.com (repo.zabbix.com)... 162.243.159.138, 2604:a880:1:20::b82:1001
正在连接 repo.zabbix.com (repo.zabbix.com)|162.243.159.138|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:451020 (440K) [application/x-redhat-package-manager]
正在保存至: “zabbix-agent-5.0.0-1.el7.x86_64.rpm”

50% [===========================>                             ] 229,113     26.4KB/s 用时 8.5s

猜你喜欢

转载自blog.csdn.net/qq_36879493/article/details/108273192
今日推荐