Linux基础学习之从入门到精通Day12
网络管理基础
使用NetworkManager管理网络
网络管理器(NetworkManager)是一个动态网络的控制器与配置系统,它用于当网络设备可用时保持设备和连接开启并激活
默认情况下,CentOS/RHEL 7 已安装网络管理器,并处于启用状态。
device 设备,物理设备 例如enp2s0,virbr0,team0
connection 连接,逻辑设置 指的是一套具体配置方案
多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。
这样的好处是针对一个网络接口,可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应的connection
NetworkManager提供的工具
nmcli, nmtui, nm-connect-editor
1. 方法一: 修改ip/netmask/dns/gateway[了解]
[root@~]# nmcli connection add con-name enp2s0-auto autoconnect yes ifname enp2s0 type ethernet
[root@~]# nmcli connection add con-name enp2s0-gun autoconnect yes ifname enp2s0 type ethernet ip4 10.10.10.10/24 gw4 10.10.10.254
[root@~]# nmcli connection show enp2s0-auto |grep ipv4.me
ipv4.method: auto
[root@~]# nmcli connection show enp2s0-gun |grep ipv4.me
ipv4.method: manual
[root@~]# ls /etc/sysconfig/network-scripts/
ifcfg-enp2s0 ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
ifcfg-enp2s0-auto ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort
ifcfg-enp2s0-gun ifdown-isdn ifup ifup-plip ifup-tunnel
[root@~]# nmcli connection up enp2s0-auto
[root@~]# nmcli connection delete enp2s0-auto
[root@~]# nmcli connection modify enp2s0-gun ipv4.method a
[root@~]# nmcli connection modify enp2s0-gun ipv4.method m
[root@~]# nmcli connection modify enp2s0-gun +ipv4.addresses 20.20.20.20/24
[root@~]# nmcli connection modify enp2s0-gun +ipv4.dns 114.114.114.114
[root@~]# nmcli connection show enp2s0-gun |grep ipv4.add
ipv4.addresses: 10.10.10.10/24, 20.20.20.20/24
2. 方法二:修改ip/netmask/dns/gateway
[root@~]# vim /etc/sysconfig/network-scripts/ifcfg-enp2s0
NAME="enp2s0"
DEVICE="enp2s0"
ONBOOT=yes
NETBOOT=yes
BOOTPROTO=none
IPADDR=172.16.120.246
PREFIX=24
IPADDR1=192.168.200.246
PREFIX1=24
GATEWAY=172.16.120.254
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@~]# nmcli con reload
[root@~]# nmcli con down enp2s0; nmcli con up enp2s0
注:删除自建的连接connection
不使用NetworkManager管理网络 aliyun
[root@aliyun ~]# nmcli connection delete enp2s0-auto
[root@aliyun ~]# systemctl disable NetworkManager
[root@aliyun ~]# systemctl stop NetworkManager
[root@aliyun ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
Active: inactive (dead)
[root@aliyun ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
NAME=eth0
DEVICE=eth0
ONBOOT=yes
NETBOOT=yes
BOOTPROTO=none
IPADDR=192.168.122.169
PREFIX=24
TYPE=Ethernet
[root@aliyun ~]# systemctl restart network.service
以下配置跟NetworkManager无关:
1. 修改主机名/etc/hostname
# hostnamectl set-hostname tianyun.example.com
# cat /etc/hostname
# reboot
- 配置名字解析Configuring name resolution
a. hosts
[root@~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
119.75.218.70 www.baidu.com
[root@~]# getent hosts www.baidu.com
119.75.218.70 www.baidu.com
b. resolv.conf DNS
[root@~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
[root@~]# yum -y install bind-utils
[root@~]# host www.sina.com
www.sina.com is an alias for us.sina.com.cn.
us.sina.com.cn is an alias for wwwus.sina.com.
wwwus.sina.com has address 66.102.251.33
基本的网络测试工具
[root@~]# ip a
[root@~]# ip a s eth0
[root@~]# ip route
[root@~]# ip neigh
[root@~]# hostname
[root@~]# ping www.baidu.com
[root@~]# ping -c2 www.baidu.com
[root@~]# ip -s link show eth0
[root@~]# traceroute www.sina.com
[root@~]# tracepath www.sina.com
1?: [LOCALHOST] pmtu 1500
1: no reply
2: 11.245.87.126 0.787ms
3: 106.11.130.218 0.387ms
4: 42.120.244.125 0.425ms
5: 150.138.132.157 1.469ms
6: 150.138.128.241 3.546ms asymm 7
7: 202.97.40.241 24.677ms
8: 202.97.24.154 14.197ms
9: 202.97.33.154 18.340ms asymm 10
10: 202.97.90.242 182.632ms
11: 203.14.186.138 193.383ms asymm 13
12: 218.30.41.234 209.543ms asymm 13
13: 66.102.251.33 163.224ms reached
Resume: pmtu 1500 hops 13 back 14
查看设备物理连接的状态
[root@~]# ip a
2: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN qlen 1000
如果在连接禁用 ONBOOT=no 以上的信息不真实
[root@~]# ethtool enp1s0
Link detected: no
临时配置网络信息
ip/netmask
# ip addr add dev eth1 3.3.3.3/24
# ip addr del dev eth1 3.3.3.3/24
gateway
# ip route del default
# ip route add default via 192.168.122.3
# ip route add 10.10.10.0/24 via 192.168.122.5
hostname
# hostname tianyun.cc.com
配置文件:
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 设备名称
【NAME="System eth0" 设备名称】 可以不存在
BOOTPROTO=none 启动协议 获取ip地址的方式 static、none ==>静态获取 dhcp 动态
NM_CONTROLLED=no 默认是yes 关闭network-manager
ONBOOT=yes 开机启动
TYPE=Ethernet 以太网类型
HWADDR=00:0c:29:8e:a5:d3 mac地址
IPADDR=172.16.80.252 ip地址
NETMASK=255.255.0.0 掩码
PREFIX =24
NETWORK=172.16.0.0
GATEWAY=172.16.80.1 网关
dns domain name server 域名解析
帮助文档:
#vim /usr/share/doc/initscripts-9.03.38/sysconfig.txt
网关:网络的关卡(出口),一般设置到路由器上
IP转发:
临时
# echo 1 > /proc/sys/net/ipv4/ip_forward
永久
vim /etc/sysctl.conf 修改内核参数
net.ipv4.ip_forward = 1
sysctl -p //立即生效
dns : 域名服务器,其中一种是解析域名到Ip地址
dns配置文件(客户端)
#vim /etc/resolv.conf
nameserver 172.16.70.250
查看mac
#arping 172.16.70.250
扫描ip
#nmap -v -sP 172.16.70.0/24
扫描端口
#nmap -v -A 172.16.70.0/24
重启网络服务:
#systemctl restart network //rhel7
#/etc/init.d/network restart //rhel5/6
#service network restart //rhel5/6
- Show TCP sockets (LISTEN)
[root@aliyun ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:8080 *:*
LISTEN 0 10 114.215.71.214:53 *:*
LISTEN 0 10 10.29.89.165:53 *:*
LISTEN 0 10 127.0.0.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:953 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 *:443 *:*
LISTEN 0 32 :::21 :::*
LISTEN 0 10 :::53 :::*
- Show UDP sockets (所有状态)
[alice@tianyun ~]$ ss -anu
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 114.215.71.214:53 *:*
UNCONN 0 0 10.29.89.165:53 *:*
UNCONN 0 0 127.0.0.1:53 *:*
UNCONN 0 0 114.215.71.214:123 *:*
UNCONN 0 0 10.29.89.165:123 *:*
UNCONN 0 0 127.0.0.1:123 *:*
UNCONN 0 0 *:123 *:*
UNCONN 0 0 :::53 :::*
UNCONN 0 0 :::123 :::*
CentOS7修改网卡为eth0
已经安装CentOS7
- 修改网卡配置文件
# mv ifcfg-eno16777728 ifcfg-eth0
# vim ifcfg-eth0
DEVICE=eth0
NAME=eth0
| 命令选项 | struct ethtool_ops成员函数 | Ethtool命令显示参数的来源(以网卡驱动BNX2为例) |
| 无 -s | get_settingsget_wol get_msglevel get_link set_settings set_wol set_msglevel | 从网卡寄存器中获得网卡速度等信息,可配置。 |
| -a -A | get_pauseparam set_pauseparam | 从网卡寄存器中获得Autonegotiate/RX/TX模块的状态:on oroff,可配置。 |
| -c -C | get_coalesceset_coalesce | 从网卡寄存器中获得coalescing参数:TX/RX一个数据包后,推迟发生TX/RX中断的时间(us)/数据包个数。—减小该值可以提高网卡的响应时间。 当rx-usecs&rx-frames同时被设为0时,RX中断停止。 当tx-usecs&tx-frames同时被设为0时,TX中断停止。 |
| -g -G | get_ringparam set_ringparam | 除当前TX/RX ring的值(从网卡寄存器中读取得到,可配置)外,其它为网卡bnx2自己固定的信息。 |
| -k -K | get_rx_csumget_tx_csum get_sg get_tso set_rx_csum set_tx_csum set_sg set_tso | 显示信息从保存该状态的变量中读取得到,没有对应的寄存器。因此,TX/RX校验等模块一直处于on状态,实际上是无法修改的。 |
| -i | get_drvinfo[self_test_count, get_stats_coun,t get_regs_len, get_eeprom_len] | 网卡bnx2自己固定的信息,如:
——————————————————–
driver: bnx2 version: 1.4.30 firmware-version: 1.8.0.5 bus-info: 0000:09:00.0
——————————————————– |
| -d | get_drvinfoget_regs | 不支持,即bnx2中没有实现函数get_regs。 |
| -e -E | get_eepromset_eeprom | 不支持,即bnx2中没有实现函数get_eeprom。 |
| -r | nway_reset | 配置网卡MII_BMCR寄存器,重启Auto negotiation模块。 |
| -p | phys_id | 配置网卡BNX2_EMAC_LED寄存器,实现LED闪功能。 |
| -t | self_test | 通过配置网卡寄存器,逐一测试网卡的硬件模块:registers,memory,loopback,Link stat,interrupt。 |
| -S | get_ethtool_stats | 显示信息来源于网卡驱动中的结构体变量stats_blk。(网卡通过DMA方式,将寄存器BNX2_HC_STATISTICS _ADDR_L和BNX2_HC_STATISTICS_ADDR_H中的数据实时地读取到结构体变量struct statistics_block *stats_blk中。) —显示的数据都是从网卡寄存器中统计得到的,各项的含义需查询网卡(芯片)手册。 |
实例
查看机器上网卡的速度:百兆还是千兆,请输入:
ethool eth0操作完毕后,输出信息中Speed:这一项就指示了网卡的速度。停止网卡的发送模块TX,请输入:
ethtool -A tx off eth0操作完毕后,可输入ethtool -a eth0,查看tx模块是否已被停止。查看网卡eth0采用了何种驱动,请输入:
ethtool -i eth0操作完毕后,显示 driver: bnx2;version: 1.4.30 等信息。关闭网卡对收到的数据包的校验功能,请输入:
ethtool -K eth0 rx off操作完毕后,可输入ethtool –k eth0,查看校验功能是否已被停止。如果机器上安装了两块网卡,那么eth0对应着哪块网卡呢?输入:
ethtool -p eth0 10操作完毕后,看哪块网卡的led灯在闪,eth0就对应着哪块网卡。查看网卡,在接收/发送数据时,有没有出错?请输入:
ethtool –S eth0将千兆网卡的速度降为百兆,请输入:
ethtool -s eth0 speed 100
还可以查看机器是否插网线