网络基础管理
1. 回归传统命名
//修改网卡配置文件
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# mv ifcfg-ens33 ifcfg-eth0
[root@localhost network-scripts]# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33 //此处要把ens33改成eht0
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=ens33 //此处要把ens33改成eht0
ONBOOT=yes
//编辑/etc/default/grub配置文件,在以GRUB_CMDLINE_LINUX开头的行内rhgb的前面加上net.ifnames=0 biosdevname=0
[root@localhost ~]# vim /etc/default/grub
//为grub2生成其配置文件
[root@localhost ~]# grub2-mkconfig -o /etc/grub2.cfg
//重启系统
[root@localhost ~]# reboot
2. 网络管理常用命令
2.1 ifconfig
//查看所有处于活动状态的所有网络接口
[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.80.128 netmask 255.255.255.0 broadcast 192.168.80.255
inet6 fe80::20c:29ff:fe77:3a04 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:77:3a:04 txqueuelen 1000 (Ethernet)
RX packets 4407 bytes 352888 (344.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3296 bytes 738671 (721.3 KiB)
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 1 (Local Loopback)
RX packets 4 bytes 348 (348.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 348 (348.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//仅查看eth0网卡状态
[root@localhost ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.80.128 netmask 255.255.255.0 broadcast 192.168.80.255
inet6 fe80::20c:29ff:fe77:3a04 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:77:3a:04 txqueuelen 1000 (Ethernet)
RX packets 4457 bytes 356710 (348.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3328 bytes 742007 (724.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//查看所有网卡状态信息, 包括禁用和启用
[root@localhost ~]# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.80.128 netmask 255.255.255.0 broadcast 192.168.80.255
inet6 fe80::20c:29ff:fe77:3a04 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:77:3a:04 txqueuelen 1000 (Ethernet)
RX packets 4526 bytes 362263 (353.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3374 bytes 745821 (728.3 KiB)
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 1 (Local Loopback)
RX packets 4 bytes 348 (348.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 348 (348.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//网卡配置信息含义如下:
UP: 网卡处于活动状态
BROADCAST: 支持广播
RUNNING: 网线已接入
MULTICAST: 支持组播
MTU: 最大传输单元(字节),即此接口一次所能传输的最大封包
inet: 显示IPv4地址行
inet6: 显示IPv6地址行
link/enther: 指设备硬件(MAC)地址
txqueuelen: 传输缓存区长度大小
RX packets: 接收的数据包
TX packets: 发送的数据包
errors: 总的收包的错误数量
dropped: 由于各种原因, 导致拷贝在内存过程中被丢弃
collisions: 网络信号冲突情况, 值不为0则可能存在网络故障
2.2 ip
//语法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT:
link:网络接口属性
addr:协议地址
route:路由
//查看网络接口所有地址
[root@localhost ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:77:3a:04 brd ff:ff:ff:ff:ff:ff
//显示报文统计信息
[root@localhost ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
348 4 0 0 0 0
TX: bytes packets errors dropped carrier collsns
348 4 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:77:3a:04 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
372705 4659 0 0 0 0
TX: bytes packets errors dropped carrier collsns
753937 3468 0 0 0 0
//启用或禁用网络接口ip link set DEV {up|down}
[root@localhost ~]# ip link set lo down
[root@localhost ~]# ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:77:3a:04 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set lo up
//ip addr add ADDRESS dev DEV:添加IP地址
[root@localhost ~]# ip addr add 192.168.1.1/24 dev eth0
[root@localhost ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:77:3a:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.80.128/24 brd 192.168.80.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.1.1/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe77:3a04/64 scope link
valid_lft forever preferred_lft forever
//ip addr del ADDRESS dev DEV:删除IP地址
[root@localhost ~]# ip addr del 192.168.1.1/24 dev eth0
[root@localhost ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:77:3a:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.80.128/24 brd 192.168.80.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe77:3a04/64 scope link
valid_lft forever preferred_lft forever
//ip addr show DEV:查看网络接口的地址
[root@localhost ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:77:3a:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.80.128/24 brd 192.168.80.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe77:3a04/64 scope link
valid_lft forever preferred_lft forever
//ip route:routing table management 路由管理
//添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
//删除路由:ip route del TARGET
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
//查看路由:ip route show
//刷新路由表:ip route flush
[dev IFACE]
[via PREFIX]
2.3 route
//查看当前路由表
[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 eth0
192.168.80.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
//以数字方式显示各主机或端口等相关信息
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.80.2 0.0.0.0 UG 100 0 0 eth0
192.168.80.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
//增加路由
//语法:route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
//增加网段路由
[root@localhost ~]# route add -net 172.16.12.0/24 gw 172.16.12.2 dev eth1
[root@localhost ~]# route add -net 0.0.0.0/0 gw 172.16.12.2 dev eth1
//增加主机路由
[root@localhost ~]# route add -host 172.16.12.128 gw 172.16.12.2
//删除路由
[root@localhost ~]# route del -net 172.16.12.0/24
[root@localhost ~]# route del -net 0.0.0.0/0 gw 172.16.12.2
2.4 hostname与hostnamectl
生产环境中必须配置主机名,同时主机名也需要遵循一定的规范, 比如:
公有云: 地区-项目-业务-服务-节点-地址
wh-shop-register-nginx-node1-192.168.56.13
wh-med-pay-mysql-master01-192.168.56.11
wh-med-pay-mysql-slave01-192.168.56.12
//hostname查看主机名
[root@localhost ~]# hostname
localhost.localdomain
//hostname临时修改主机名
[root@localhost ~]# hostname wangqing
[root@localhost ~]# cat /etc/hostname
localhost.localdomain
//注意:修改主机名后需要重新登录用户才会显示效果
//rhel7系统建议使用hostnamectl修改和查看主机名
//设定永久名称
[root@localhost ~]# hostnamectl set-hostname seancheng
[root@localhost ~]# cat /etc/hostname
seancheng
//查看主机信息
[root@localhost ~]# hostnamectl
Static hostname: seancheng
Icon name: computer-vm
Chassis: vm
Machine ID: fd0bcf5782d24ba5b903b175c35f328e
Boot ID: a060e3a2882f4d2c92884eee9db702bc
Virtualization: vmware
Operating System: Red Hat Enterprise Linux Server 7.4 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.4:GA:server
Kernel: Linux 3.10.0-693.el7.x86_64
Architecture: x86-64
注意:
在Linux中以命令方式修改网络配置只在当前状态有效,重启后将失效。故若想使修改的配置重启后依然有效,则必须编辑配置文件进行配置的修改。
3.网络相关配置文件
3.1 网络配置文件
//网络配置文件:/etc/sysconfig/network
NETWORKING={yes|no}:设定整个系统是否启用网络功能,若设为no,则不论网卡如何设置都不能使用网络功能。
HOSTNAME:设置主机名
3.2 网络接口配置文件
网络接口即网卡,其配置文件的路径是/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.80.128
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
DNS1=114.114.114.114
DNS2=8.8.8.8
//网卡配置说明
//参数 说明
BOOTPROTO=none //引导协议,可选值有{static|none|dhcp|bootp}。如果要使用静态地址,使用static或none都可以
NM_CONTROLLED //NM是NetworkManager的简写,NM是由RHEL研发的在RHEL6中取代network脚本来实现网络管理、配置的服务脚本
//可选值有{ yes | no }
//此项是设定此网卡是否接受NM控制。CentOS6建议设为“no”
TYPE //接口类型。常见的接口类型有:Ethernet,Bridge
UUID //设备的惟一标识
HWADDR //硬件地址,要与硬件中的地址保持一致,可省
IPADDR=172.16.12.130 //固定IP地址
PREFIX=24 //子网掩码
NETMASK=255.255.255.0 //子网掩码
GATEWAY=172.16.12.2 //默认网关
DNS1=172.16.12.2 //第一个DNS服务器指向
DNS2 //第二个DNS服务器指向
DNS3 //第三个DNS服务器指向
DEVICE=eth1 //关联的设备名称,要与文件名的后半部"INTERFACE_NAME"保持一致
NAME="eth1" //连接名称
ONBOOT=yes //在系统引导时是否自动激活此网络接口,可选值有{ yes | no }
DEFROUTE=yes //将接口设定为默认路由[yes|no]
USERCTL={yes|no} //是否允许普通用户控制此接口的启用与禁用
PEERDNS={yes|no} //是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的DNS地址,此项设为yes时获得的DNS地址将直接覆盖至/etc/resolv.conf文件中
3.3 路由配置文件
路由配置文件的路径是/etc/sysconfig/network-scripts/route-INTERFACE_NAME
//添加格式一:DEST via NEXTHOP
[root@localhost ~]# vi /etc/sysconfig/network-scripts/route-ens33
172.16.12.0/24 via 172.16.12.2
//添加格式二:
[root@localhost ~]# vi /etc/sysconfig/network-scripts/route-ens33
ADDRESS0=172.16.12.0
NETMASK0=255.255.255.0
GATEWAY0=172.16.12.2
3.4 DNS配置文件
DNS配置文件的路径是/etc/resolv.conf
[root@localhost ~]# vi /etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
nameserver DNS_IP_3
4. NetworkManager管理网络
RHEL/CentOS7系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。
NetworkManager提供的命令行和图形配置工具对网络进行设定, 设定保存的配置文件在/etc/sysconfig/network-scripts
目录下, 工具有 nmcli, nmtui, nm-connect-editor
device物理设备, 例如 ens33,enp2s0,virbr0,team0
connection连接设置, 具体网络配置方案
1.不同的网络连接配置可以应用到相同的物理设备,但物理设备同一时间只能应用其中某个网络连接
2.针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了
使用nmcli命令查看设备以及连接情况
[root@localhost ~]# nmcli device
设备 类型 状态 连接
eth0 ethernet 连接的 eth0
lo loopback 未托管 --
//查看指定设备的详细状态
[root@localhost ~]# nmcli device show eth0
GENERAL.设备: eth0
GENERAL.类型: ethernet
GENERAL.硬盘: 00:0C:29:77:3A:04
GENERAL.MTU: 1500
GENERAL.状态: 100 (连接的)
GENERAL.连接: eth0
GENERAL.连接路径: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.载波: 开
IP4.地址[1]: 192.168.80.128/24
IP4.网关: 192.168.80.2
IP4.DNS[1]: 114.114.114.114
IP4.DNS[2]: 8.8.8.8
IP6.地址[1]: fe80::20c:29ff:fe77:3a04/64
IP6.网关: --
//查看连接状态
[root@localhost ~]# nmcli connection
名称 UUID 类型 设备
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eth0
eth0 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04 802-3-ethernet --
//查看指定设备连接的详细情况
[root@localhost ~]# nmcli connection show eth0
connection.id: eth0
connection.uuid: 9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04
connection.stable-id: --
connection.interface-name: eth0
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (默认)
connection.timestamp: 0
connection.read-only: no
connection.permissions: --
.....
5. 使用原生network管理网络
CentOS/RHEL的网络配置文件默认目录为/etc/sysconfig/network-scripts
默认第一块物理网卡配置文件为ifcfg-eth0, 如果有第二块物理网卡, 配置文件则为ifcfg-eth1以此类推。 注意: 如果新增物理网卡没有配置文件,可选择复制系统默认的进行修改。
//设置NetworkManger开机不启动, 同时停止NetworkManger服务
[root@localhost ~]# systemctl disable NetworkManager
[root@localhost ~]# systemctl stop NetworkManager
//添加一块物理网卡, 然后新增网络连接配置文件
//复制配置eth0配置文件为eth1
[root@localhost ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1}
//编辑网卡配置文件
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
UUID=03be31f5-a3c1-4f8d-88b3-aea6e85c869f
DEVICE=eth1
NM_CONTROLLED=no
ONBOOT=yes
IPADDR=172.16.12.130
NETMASK=255.255.255.0
GATEWAY=172.16.12.2
DNS1=172.16.12.2
//重启network网络服务加载网络并设置开机启动
[root@localhost ~]# systemctl restart network
[root@localhost ~]# systemctl enable network
6.网络检测工具与故障排查
6.1 ping
ping
命令的目的在于测试另一台主机是否可达, 如果ping不到某台主机,就说明对方主机已经出现了问题, 但是不排除由于链路中的防火墙、ping被丢弃等原因造成ping不通的情况
//ping命令常用选项:
-c 指定ping的次数
-i 指定ping包的发送间隔
-w 如果ping没有回应, 则在指定超时时间后退出
[root@localhost ~]# ping -c 2 www.baidu.com
PING www.a.shifen.com (182.61.200.7) 56(84) bytes of data.
64 bytes from localhost (182.61.200.7): icmp_seq=1 ttl=128 time=29.3 ms
64 bytes from localhost (182.61.200.7): icmp_seq=2 ttl=128 time=28.7 ms
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 28.725/29.040/29.355/0.315 ms
[root@localhost ~]# ping -i 1 www.baidu.com
PING www.a.shifen.com (182.61.200.6) 56(84) bytes of data.
64 bytes from localhost (182.61.200.6): icmp_seq=1 ttl=128 time=23.9 ms
64 bytes from localhost (182.61.200.6): icmp_seq=2 ttl=128 time=24.0 ms
6.2 host与nslookup
host/nslookup
命令用于查询DNS记录
[root@localhost ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 182.61.200.7
www.a.shifen.com has address 182.61.200.6
[root@localhost ~]# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 182.61.200.6
Name: www.a.shifen.com
Address: 182.61.200.7
6.3 traceroute
traceroute
命令用于路由跟踪, 检测网络故障出现在ISP运营商或是对端服务无法响应
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (182.61.200.7), 30 hops max, 60 byte packets
1 gateway (192.168.80.2) 0.135 ms 0.136 ms 0.097 ms
2 * * *
3 * * *
4 * * *
6.4 netstat
netstat
用于查看网络状态
//显示路由表
[root@seancheng ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 ens33
172.16.12.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
//以数字方式显示路由表
[root@seancheng ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 172.16.12.2 0.0.0.0 UG 0 0 0 ens33
172.16.12.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
//显示建立的tcp连接
[root@seancheng ~]# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 seancheng:ssh 172.16.12.1:56187 ESTABLISHED
tcp 0 0 seancheng:ssh 172.16.12.1:53808 ESTABLISHED
//显示udp连接
[root@seancheng ~]# netstat -u
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
[root@seancheng ~]#
//显示监听状态的连接
[root@seancheng ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
//显示监听指定的套接字的进程的进程号及进程名
[root@seancheng ~]# netstat -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 seancheng:ssh 172.16.12.1:56187 ESTABLISHED 2094/sshd: root@pts
tcp 0 0 seancheng:ssh 172.16.12.1:53808 ESTABLISHED 1077/sshd: root@pts
//显示所有状态的连接
[root@seancheng ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp 0 0 seancheng:ssh 172.16.12.1:56187 ESTABLISHED
tcp 0 0 seancheng:ssh 172.16.12.1:53808 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
udp 0 0 0.0.0.0:23511 0.0.0.0:*
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp6 0 0 [::]:35299 [::]:*
//常用选项
-antlp
[root@seancheng ~]# netstat -antlp
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 889/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1007/master
tcp 0 0 172.16.12.128:22 172.16.12.1:56187 ESTABLISHED 2094/sshd: root@pts
tcp 0 0 172.16.12.128:22 172.16.12.1:53808 ESTABLISHED 1077/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 889/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1007/master
6.5 ss
ss是一种网络状态查看工具,取代netstat
//语法:ss [options] [ FILTER ]
//常用的options:
-t:tcp协议相关
-u:udp协议相关
-w:裸套接字相关
-x:unix套接字相关
-l:listen状态的连接
-a:所有
-n:数字格式
-p:相关的程序及pid
-e:扩展的信息
-m:内存用量
-o:显示计时器信息
//常见的FILTER:
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
如:ss -tan state ESTABLISHED
//常见的state:
//tcp finite state machine:有限状态机
LISTEN:监听
ESTABLISHED:已建立的连接
//EXPRESSION:
dport =
sport =
示例:'( dport = :ssh or sport = :ssh)',此处的ssh也即服务名可以使用其对应的端口号代替,等号两边必须有空格
//常用组合:
[root@seancheng ~]# ss -tan
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
ESTAB 0 0 172.16.12.128:22 172.16.12.1:56187
ESTAB 0 0 172.16.12.128:22 172.16.12.1:53808
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@seancheng ~]# ss -tanl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@seancheng ~]# ss -antlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:(("sshd",pid=889,fd=3))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1007,fd=13))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=889,fd=4))
LISTEN 0 100 ::1:25 :::* users:(("master",pid=1007,fd=14))
[root@seancheng ~]# ss -anu
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:23511 *:*
UNCONN 0 0 *:68 *:*
UNCONN 0 0 :::35299 :::*
//常见端口
http 80/tcp
https 443/tcp
ssh 22/tcp
ftp 20,21/tcp
mysql 3306/tcp
rsync 873/rsync
redis 6379/tcp
7.网络故障排查
- 网络故障分为硬件/软件故障
- 网卡损坏
- 链路故障
- 网卡驱动不兼容
- 网络排查思路
- ping本地回环口, 确定本机TCP/IP协议栈是否正常
- ping本机IP地址, 确定本地设备以及驱动是否正常
- ping同网段主机, 确定二层网络是否正常工作
- ping网关地址, 确定本地与网络是否正常
- ping公网地址, 确定本地路由是否正常
- ping公网域名, 确定DNS客户端是否正常
- 服务故障排查思路
- 使用telnet检测端口是否开放
- 检查服务端防火墙以及SElinux
- 检查相应的权限是否配置正常
- 检查日志是否有异常
- 检查完毕后持续测试
建议: 所有的排查思路都从OSI七层模型由下往上逐一进行排查(学会看日志)
探讨与研究
-
如何查看系统中每个ip的连接数
[root@localhost ~]# netstat -tun Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 36 192.168.80.128:22 192.168.80.1:2227 ESTABLISHED
-
请列出下列服务使用的端口,http,https,ftp,ssh,telnet,mysql,dns
服务 端口 http 80/tcp https 443/tcp ftp 20、21/tcp ssh 22/tcp Telnet 23/tcp MySQL 3306/tcp dns 53/udp rsync 873/rsync redis 6379/tcp -
如何在虚拟机上新增加一块网卡,并配置IP为172.16.0.10,指定网关为172.16.0.1
//添加一块物理网卡后,方可成功添加新的网络连接配置文件 [root@localhost ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1} [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 TYPE=Ethernet BOOTPROTO=static NAME=eth1 DEVICE=eth1 ONBOOT=yes IPADDR=172.16.0.10 NETMASK=255.255.255.0 GATEWAY=172.16.0.1 DNS1=114.114.114.114 DNS2=8.8.8.8 [root@localhost ~]# systemctl restart network //重启网卡服务 [root@localhost ~]# systemctl enable network //设置网卡为开机自启
-
详细描述dns解析过程,以访问www.baidu.com为例
1、当应用过程需要将一个主机域名映射为IP地址时,就调用域名解析函数,解析函数将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器;
2、本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回;
3、同时域名服务器还必须具有连向其他服务器的信息以支持不能解析时的转发;
4、若域名服务器不能回答该请求,则此域名服务器就暂成为DNS中的另一个客户,向根域名服务器发出请求解析,根域名服务器一定能找到下面的所有二级域名的域名服务器,这样以此类推,一直向下解析,直到查询到所请求的域名。 -
如何查看系统中运行了多少个进程
[root@localhost ~]# ss -a Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port nl UNCONN 0 0 rtnl:2051015450 * nl UNCONN 0 0 rtnl:kernel * nl UNCONN 0 0 rtnl:2051015450 * nl UNCONN 4352 0 tcpdiag:ss/2264 * nl UNCONN 768 0 tcpdiag:kernel * nl UNCONN 0 0 xfrm:kernel * ...... [root@localhost ~]# ss -a |wc -l 189
-
如何查看系统中启动了哪些端口
[root@localhost ~]# ss -an Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port nl UNCONN 0 0 0:2051015450 * nl UNCONN 0 0 0:0 * nl UNCONN 0 0 0:2051015450 * nl UNCONN 4352 0 4:2275 * nl UNCONN 768 0 4:0 * nl UNCONN 0 0 6:0 * nl UNCONN 0 0 7:0 * nl UNCONN 0 0 7:1 *
-
如何查看是否开启80端口,及查看sshd进程是否存在
[root@localhost ~]# netstat -tlnp | grep 80 [root@localhost ~]# [root@localhost ~]# ss -ap |grep sshd u_str ESTAB 0 0 * 19241 * 19242 users:(("sshd",pid=1116,fd=2),("sshd",pid=1116,fd=1)) u_dgr UNCONN 0 0 * 20778 * 1340 users:(("sshd",pid=1425,fd=4)) tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=1116,fd=3)) tcp ESTAB 0 164 192.168.80.128:ssh 192.168.80.1:di-msg users:(("sshd",pid=1425,fd=3)) tcp LISTEN 0 128 :::ssh :::* users:(("sshd",pid=1116,fd=4))
-
列出所有处于监听状态的tcp端口
[root@localhost ~]# netstat -latn 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 36 192.168.80.128:22 192.168.80.1:2227 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN
-
查看所有的端口信息, 包括 PID 和进程名称
[root@localhost ~]# ss -ap Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port nl UNCONN 0 0 rtnl:2051015450 * nl UNCONN 0 0 rtnl:kernel * nl UNCONN 0 0 rtnl:2051015450 * nl UNCONN 768 0 tcpdiag:kernel * nl UNCONN 4352 0 tcpdiag:ss/2254 * nl UNCONN 0 0 xfrm:kernel * nl UNCONN 0 0 selinux:kernel * nl UNCONN 0 0 selinux:systemd/1 * nl UNCONN 0 0 selinux:dbus-daemon/747 * nl UNCONN 0 0 selinux:dbus-daemon/747 * ......