
Linux系统网络服务
1.Linux系统网络基础概述
网卡命名规则信息
传统的
rhel系统以eth0 eth1名来命名网卡, 在rhel7系统开始使用新的命名规则:基于固件、设备结构、设备类型
- 1.由两个字母开头标示固件
- 以太网网卡以 en 开头
- 无线网卡以 wl 开头
- 2.设备结构
- o 表示板载网卡(on-board)
- s 热插拔结构(hotplug slot)
- p PCI插槽位置
2.网络接口信息查看
1.查看网络接口配置信息
//查看当前处于活动状态的网络接口 [root@x86cloud ~]# ifconfig //仅查看eth0网卡状态信息 [root@x86cloud ~]# ifconfig eth0 //查看所有网卡状态信息, 包括禁用和启用 [root@x86cloud ~]# ifconfig -a eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.69.112 netmask 255.255.255.0 broadcast 192.168.69.255 inet6 fe80::bd23:46cf:a12e:c0a1 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:34:92:fc txqueuelen 1000 (Ethernet) RX packets 73137 bytes 17214613 (16.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 45428 bytes 13141869 (12.5 MiB) 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则可能存在网络故障 //其他查看ip指令 [root@x86cloud ~]# 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:34:92:fc brd ff:ff:ff:ff:ff:ff ③inet 192.168.69.112/24 brd④ 192.168.69.255 scope global ens32 valid_lft forever preferred_lft forever ⑤inet6 fe80::bd23:46cf:a12e:c0a1/64 scope link valid_lft forever preferred_lft forever ①: 活动接口为UP ②: Link行指定设备的MAC地址 ③: inet行显示IPv4地址和前缀 ④: 广播地址、作用域和设备名称在此行 ⑤: inet6行显示IPv6信息 //ip命令也可用于显示关于网络性能的统计信息, 比如: 发送和传送的数据包、错误、丢弃 [root@x86cloud ~]# ip -s link show eth0 3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000 link/ether 14:18:77:35:0d:f5 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 518292951 4716385 0 0 0 709280 TX: bytes packets errors dropped carrier collsns 23029861512 15391427 0 0 0 0
2.nmcli管理网络
NetworkManager提供的命令行和图形配置工具对网络进行设定, 设定保存的配置文件在/etc/sysconfig/network-scripts目录下, 工具有 nmcli, nmtui, nm-connect-editor
1.不同的网络连接配置可以应用到相同的物理设备,但物理设备同一时间只能应用其中某个网络连接
2.针对物理网络接口, 设定不同的网络连接, 在不同的使用环境中激活相应的网络连接,就可以实现网络配置信息的自动切换了
使用nmcli命令查看设备以及连接情况
//查看设备状态
[root@x86cloud ~]# nmcli device
DEVICE TYPE STATE CONNECTION
ens32 ethernet connected ens32
lo loopback unmanaged --
//指定查看设备的详细状态
[root@x86cloud ~]# nmcli dev show ens32
//查看连接状态
[root@x86cloud ~]# nmcli connection
NAME UUID TYPE DEVICE
ens32 a4319b27-80dc-4d63-a693-2927ea1018e7 802-3-ethernet ens32
virbr0 64dbcb5f-b63a-4c88-8d1c-f93ead70a1b8 bridge virbr0
//所有活动的连接
[root@x86cloud ~]# nmcli con show --active
//查看指定ID连接的详细情况
[root@x86cloud ~]# nmcli con show "ens32"
使用nmcli创建新的连接
//定一个名为dhcp的连接, 配置DHCP地址
//实质是添加/etc/sysconfig/network-scripts/ifcfg-ens33-dhcp配置文件
[root@linux-node1 ~]# nmcli connection add \
con-name ens33-dhcp ifname eth0 autoconnect yes \
type ethernet ipv4.method auto
[root@linux-node1 ~]# nmcli connection
NAME UUID TYPE DEVICE
eth0 000b9696-19d5-4ade-bca6-7ee0266ddcf0 802-3-ethernet eth0
ens33-dhcp 33bcddf0-9cc4-47fe-9acf-ede449757d8a 802-3-ethernet --
//新增一个静态地址的连接, 配置IP、掩码、网关等
静态地址添加流程
1.添加一个连接的配置
2.给连接指定一个名称
3.连接配置绑定物理网卡
4.网卡的类型,网卡开机启动
5.网卡通过什么途径获取地址(静态、dhcp)
6.配置对应的IP地址、掩码、网关、DNS
[root@linux-node1 ~]# nmcli connection add con-name eht1-static ifname eth1 \
type ethernet autoconnect yes \
ipv4.method manual \
ipv4.addresses 192.168.56.100/24 \
ipv4.gateway 192.168.56.2 \
ipv4.dns 192.168.56.2 \
+ipv4.dns 8.8.8.8
//激活指定的连接名为eht1-static的连接
[root@linux-node1 ~]# nmcli connection up eht1-static
[root@x86cloud ~]# nmcli connection show
NAME UUID TYPE DEVICE
eht1-static 6fdebe6e-5ef0-4a05-8235-57e317fdada0 802-3-ethernet eth0
使用nmcli修改已有的网络连接
//1.取消开机自动激活网络
[root@x86cloud ~]# nmcli connection modify eht1-static \
autoconnect no
//2.修改连接的dns
[root@x86cloud ~]# nmcli connection modify eht1-static \
ipv4.dns 8.8.8.8
//3.给连接再增加dns,有些设定值通过+/-可以增加或则移除设定
[root@x86cloud ~]# nmcli connection modify eht1-static \
+ipv4.dns 8.8.8.8
//4.替换连接的静态IP和默认网关
[root@x86cloud ~]# nmcli connection modify eht1-static \
ipv4.addresses 192.168.69.252/24 ipv4.gateway 192.168.69.22
//5.添加一个没有默认网关的IP
[root@x86cloud ~]# nmcli connection modify eht1-static \
+ipv4.addresses 192.168.70.12/24
//6.修改完毕,nmlci仅仅修改并保存了配置,要激活更改,需要重激活连接
[root@linux-node1 ~]# nmcli connection down eht1-static && \
nmcli connection up eht1-static
//删除自建的connection
[root@x86cloud ~]# nmcli connection delete eht1-static
// 图形工具配置 nm-connection-editor
nmcli管理网络/etc/sysconfig/network-scripts/配置文件
1.新增物理网卡
2.拷贝配置文件(可以和设备名称一致)
3.修改配置,UUID、连接名称、设备名称、IP地址
4.重新加载网络配置
5.启用连接,并检查
//修改eht1-static配置文件
[root@x86cloud ~]# vim /etc/sysconfig/network-scripts/ifcfg-eht1-static
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.69.232
PREFIX=24
GATEWAY=192.168.69.1
DNS1=211.161.122.200
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens32-staic
UUID=6fdebe6e-5ef0-4a05-8235-57e317fdada0
DEVICE=ens32
ONBOOT=yes
//手工编辑正在使用的配置文件,需要重载配置,然后重启
[root@x86cloud ~]# nmcli connection reload
[root@x86cloud ~]# nmcli connection down eht1-static && \
nmcli connection down eht1-static
3.Linix原生Network管理网络
CentOS/RHEL的网络配置文件默认目录为/etc/sysconfig/network-scripts
默认第一块物理网卡配置文件为ifcfg-eth0, 如果有第二块物理网卡, 配置文件则为ifcfg-eth1以此类推。 注意: 如果新增物理网卡没有配置文件,可选择复制系统默认的进行修改。1.删除
NetworkManger建立连接, 同时停止NetworkManger服务[root@x86cloud ~]# systemctl disable NetworkManager
[root@x86cloud ~]# systemctl stop NetworkManager
2.添加一块物理网卡, 然后新增网络连接配置文件//复制配置eth0配置文件为eth1 [root@x86cloud ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-eth1} //编辑网卡配置文件 [root@nginx ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes NAME=eth1 DEVICE=eth1 ONBOOT=yes IPADDR=192.168.56.12 NETMASK=255.255.255.0 GATEWAY=192.168.56.2 DNS1=192.168.56.2 //重启network网络服务加载网络 [root@x86cloud ~]# systemctl restart network.service //选项 描述 BOOTPROTO=none //获取地址方式[none|dhcp|static] IPADDR=192.168.56.12 //固定IP地址 PREFIX=24 //掩码 GATEWAY=192.168.56.2 //网关 DNS1=192.168.56.2 //域名解析 DEVICE=eth1 //设备名称 NAME="eth1" //连接名称 ONBOOT=yes //开机自启动 DEFROUTE=yes //将接口设定为默认路由[yes|no] USERCTL=yes //允许非root用户管理接口[yes|no]4.主机名设定与名称解析服务
生产环境中必须配置主机名,同时主机名也需要遵循一定的规范, 比如:
公有云: 地区-项目-业务-服务-节点-地址 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@x86cloud ~]# hostname "test" rhel7系统建议使用hostnamectl修改和查看主机名 //设定永久名称 [root@x86cloud ~]# hostnamectl set-hostname nginx.node1.x86cloud.com //永久修改主机名会修改/etc/hostname文件 [root@x86cloud ~]# cat /etc/hostname nginx.node1.x86cloud.com //检查状态信息 [root@x86cloud ~]# hostnamectl Static hostname: nginx.node1.x86cloud.com Icon name: computer-vm Chassis: vm Machine ID: af0cdce735c041eab3a8df17dd08c112 Boot ID: 72d7e90f0edb4880978eb18e73d4764c 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-645.DNS客户端配置
/etc/hosts文件, 加快域名解析, 方便小型局域网用户使用内部设备假设公司有A B两台主机, B主机添加的IP为192.168.69.12,为了方便访问B主机, 可以在A主机的
/etc/hosts文件中添加一条记录192.168.69.12 hostB完成后在A主机上使用
ping命令测试到B主机的连通性, 如果没有添加记录, 将会显示unknown host hostB的错误使用
hosts文件仅能为有限的主机记录, 无法将所有已知的主机名记录到hosts文件中, 因此当今几乎所有的主机都在使用DNS来解析地址,DNS是全互联网上主机名及其IP地址对应关系的数据库, 配置文件/etc/resolv.conf[root@x86cloud ~]# cat /etc/resolv.conf # Generated by NetworkManager search node1.x86cloud.com nameserver 211.161.122.2006.Route命令设置路由网关
Linux主机之间是使用IP进行通信, 假设A主机和B主机同在一个网段内且网卡都处于激活状态, 则A具备和B直接通信的能力, 但如果A主机和B主机处于两个不同的网段, 则A必须通过路由器才能和B通信, 路由器属于IT设备的基础设施, 每一个网段都应该至少有一个网关
//增加网段路由 [root@x86cloud ~]# route add -net 192.168.90.0/24 gw 192.168.56.254 [root@x86cloud ~]# route add -net 0.0.0.0/0 gw 192.168.56.254 //删除网段路由 [root@x86cloud ~]# route del -net 192.168.90.0/24 [root@x86cloud ~]# route del -net 0.0.0.0/0 gw 192.168.56.254 //增加主机路由 [root@x86cloud ~]# route add -host 192.168.70.1 gw 192.168.56.254 //删除主机路由 [root@x86cloud ~]# route del -host 192.168.70.1/32 //查看当前路由表 route -n如果重启, 配置信息就不存在, 必须将这种配置信息写到相关的配置文件中才能永久保存,比如网卡配置文件的
GATEWAY7.网络检测工具与故障排查
ping命令的目的在于测试另一台主机是否可达, 如果png不到某台主机,就说明对方主机已经出现了问题, 但是不排除由于链路中的防火墙、ping被丢弃等原因造成ping不通的情况-c 指定ping的次数 -i 指定ping包的发送间隔 -w 如果ping没有回应, 则在指定超时时间后退出
hostn/slookup命令是用来查询DNS记录的,如果使用域名作为host的参数, 命令返回该域名的IP[root@x86cloud~]# host x86cloud.com.cn
traceroute命令是用来路由跟踪, 检测网络故障出现在ISP运营商或是对端服务无法响应[root@x86cloud~]# traceroute x86cloud.com.cn traceroute to x86cloud.com (118.190.174.159), 64 hops max, 52 byte packets 1 192.168.160.2 (192.168.160.2) 1.498 ms 1.322 ms 1.272 ms 2 172.16.1.1 (172.16.1.1) 1.449 ms 1.259 ms 1.150 ms 3 211.161.160.1 (211.161.160.1) 2.420 ms 3.109 ms 2.672 ms 4 * * * 5 * * *
ss/netstat命令查看网络连接状态-t tcp协议的连接 -a 所有状态的连接 -n 数字化输出 -u upd协议的连接 -l 处于listen状态的连接 -p 输出相应进程的名字 1. Show TCP sockets (LISTEN) [root@x86cloud~]# ss -tnl [root@x86cloud~]# ss -tnl |grep :80 [root@x86cloud~]# ss -tnl |grep :21 [root@x86cloud~]# ss -atn [root@x86cloud~]# ss -atn |grep :22 //常见端口 http 80/tcp https 443/tcp ssh 22/tcp ftp 20,21/tcp mysql 3306/tcp rsync 873/rsync redis 6379/tcp网络故障排查
- 网络故障分为硬件\软件故障
- 网卡损坏
- 链路故障
- 网卡驱动不兼容
- 网络排查思路
- 1.ping本地回环口, 确定本机TCP/IP协议栈是否正常
- 2.ping本机IP地址, 确定本地设备以及驱动是否正常
- 3.ping同网段主机, 确定二层网络是否正常工作
- 4.ping网关地址, 确定本地与网络是否正常
- 5.ping公网地址, 确定本地路由是否正常
- 6.ping公网域名, 确定DNS客户端是否正常
- 服务故障排查思路
- 1.使用telnet检测端口是否开放
- 2.检查服务端防火墙以及SElinux
- 3.检查相应的权限是否配置正常
- 4.检查日志是否有异常
- 5.检查完毕后持续测试
建议: 所有的排查思路都从OSI七层模型由下往上逐一进行排查(学会看日志)
8.Linux7修改网卡为eth0
1.已安装Linux7系列操作系统, 修改网卡命名规则为eth0 eth1
//修改网卡配置文件 [root@linux-node2~]# cd /etc/sysconfig/network-scripts/ [root@linux-node2network-scripts]# mv ifcfg-eno16777728 ifcfg-eth0 [root@linux-node2 network-scripts]# vim ifcfg-eth0 NAME=eth0 DEVICE=eth0 //GRUB添加kernel参数 [root@x86cloud~]# vim /etc/sysconfig/grub GRUB_CMDLINE_LINUX="...net.ifnames=0 biosdevname=0 quiet" [root@x86cloud~]# grub2-mkconfig -o /boot/grub2/grub.cfg //重启系统生效 [root@x86cloud~]# reboot //默认centos7不支持ifconfig命令安装net-tools包 [root@x86cloud~]# yum install net-tools [root@x86cloud~]# ifconfig eth0 #在次查看网卡信息 eth0:flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.56.12 netmask 255.255.255.0 broadcast 192.168.56.255 inet6 fe80::20c:29ff:fe5c:7bb1 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:5c:7b:b1 txqueuelen 1000 (Ethernet) RX packets 152 bytes 14503 (14.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 98 bytes 14402 (14.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 02.在安装系统选择Install Centos7按下Tab设定kernel内核参数
增加内核参数: net.ifnames=0 biosdevname=0
检查是否修改成功