接口命名规则
CentOS 6的接口命名规则:以太网:eth[0,1,2...],ppp:ppp[0,1,2...]
CentOS 7的接口命名规则:名称组成格式
en: Ethernet 有线局域网
wl: wlan无线局域网
ww: wwan无线广域网
名称类型:
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
网络接口识别并命名相关的 udev 配置文件:/etc/udev/rules.d/70-persistent-net.rules
[root@CentOS6 ~]# cat /etc/udev/rules.d/70-persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program, run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single # line, and change only the value of the NAME= key. # PCI device 0x8086:0x100f (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ef:4f:cd", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x8086:0x100f (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:ef:4f:d7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
在配置文件中可以单独修改接口的名称。而修改命名规则则需要修改 /etc/default/grub
[root@centos7 ~]# vim /etc/default/grub GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=o" #在行尾添加net。ifnames=0 GRUB_DISABLE_RECOVERY="true"
使用 grub2 生成配置文件后重启
mkconfig 命令
[root@centos7 ~]# grub2-mkconfig -o /etc/grub2.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-dc334a1a531246d5b1baeb2a9085ca97 Found initrd image: /boot/initramfs-0-rescue-dc334a1a531246d5b1baeb2a9085ca97.img done
/etc/grub2.cfg 是 /boot/grub2/grub.cfg 的软连接,所以直接修改源文件也可以。
[root@centos7 ~]# ll /etc/grub2.cfg lrwxrwxrwx. 1 root root 22 Apr 2 04:34 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
网卡配置命令
现阶段有两套网络管理命令,Linux的ip命令和ifconfig类似,但前能更强大,者功并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。iproute2套件里提供了许多增强功能的命令
ethtool 命令用于查看或修改以太网卡的配置信息。
语法:ethtool [选项] 网卡
[root@CentOS7 rules.d]# ethtool ens34 Settings for ens34: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on MDI-X: off (auto) Supports Wake-on: d Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes
选项:
-a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
-i 显示网卡驱动的信息,如驱动的名称、版本等。
-k 显示网卡校验功能的状态:on 或 off。
-p 用于区别不同ethX对应网卡的物理位置,常用的方法是使网卡port上的led不断的闪;N指示了网卡闪的持续时间,以秒为单位。
-s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。
dmesg 命令用于显示开机信息。
开机信息还保存在/var/log目录中,名称为dmesg的文件里。
[root@CentOS7 ~]# dmesg | grep "ens" #使用正则表达式查看网卡信息 [ 0.038354] ACPI: Added _OSI(3.0 _SCP Extensions) [ 1.635454] sd 2:0:0:0: [sda] Mode Sense: 61 00 00 00 [ 2.543202] SELinux: 8 users, 14 roles, 5004 types, 307 bools, 1 sens, 1024 cats [ 6.934355] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready [ 6.937652] e1000: ens33 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None [ 6.945595] IPv6: ADDRCONF(NETDEV_UP): ens34: link is not ready [ 6.948644] e1000: ens34 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None [ 6.953186] IPv6: ADDRCONF(NETDEV_UP): ens34: link is not ready [ 6.953299] IPv6: ADDRCONF(NETDEV_CHANGE): ens34: link becomes ready [ 22.325371] ISO 9660 Extensions: Microsoft Joliet Level 3 [ 22.435202] ISO 9660 Extensions: RRIP_1991A
modprobe 命令用于载入可选用的模块。
语法:modprobe [选项] [模块]
选项:
-a 载入全部的模块。
-c 显示所有模块的设置信息。
-l 显示可用的模块。
-r 自动卸载模块。
-t 指定模块类型。
ifconfig 命令显示和配置网络设备。此命令已经逐渐被淘汰,不推荐使用
This program is obsolete! For replacement check ip addr and ip link. For statistics use ip -s link.
语法:ifconfig [设备] [选项]
[root@CentOS7 ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.30.2 netmask 255.255.255.0 broadcast 192.168.30.255 inet6 fe80::b7f8:9779:d7f5:80e2 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d5:dd:f9 txqueuelen 1000 (Ethernet) RX packets 203 bytes 21344 (20.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 186 bytes 27219 (26.5 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 24 bytes 2808 (2.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 24 bytes 2808 (2.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@CentOS7 ~]# ifconfig ens34 up #启用ens34接口,命令立即生效 [root@CentOS7 ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.30.2 netmask 255.255.255.0 broadcast 192.168.30.255 inet6 fe80::b7f8:9779:d7f5:80e2 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d5:dd:f9 txqueuelen 1000 (Ethernet) RX packets 228 bytes 23460 (22.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 201 bytes 29929 (29.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.20.103.22 netmask 255.255.0.0 broadcast 172.20.255.255 inet6 fe80::ed20:50fe:78bd:1dc prefixlen 64 scopeid 0x20<link> ether 00:0c:29:d5:dd:03 txqueuelen 1000 (Ethernet) RX packets 7885 bytes 1533985 (1.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 257 bytes 27137 (26.5 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 36 bytes 4212 (4.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 36 bytes 4212 (4.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
选项:
up 启动指定网络设备/网卡。
down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,需要从路由表中将该接口的路由信息全部删除
-a 显示全部接口信息
-s 显示摘要信息(类似于 netstat -i)
address 为网卡设置IPv4地址
netmask<子网掩码> 设置网卡的子网掩码
add 给指定网卡配置IPv6地址
del 删除指定网卡的IPv6地址
-promisc 设置是否支持网卡的混杂模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
route 命令用于查看和配置内核中的路由表。此命令也长时间无人维护,不建议使用。
语法:route [行为] [目标类型] [参数]
[root@CentOS7 ~]# route add -host 172.20.102.155 gw 172.20.0.1 dev ens34 #在路由表中添加目标172.20.102.155的路由,网关为172.20.0.1,使用ens34接口 [root@CentOS7 ~]# ping 172.20.102.155 PING 172.20.102.155 (172.20.102.155) 56(84) bytes of data. 64 bytes from 172.20.102.155: icmp_seq=1 ttl=63 time=2.29 ms 64 bytes from 172.20.102.155: icmp_seq=2 ttl=63 time=0.959 ms 64 bytes from 172.20.102.155: icmp_seq=3 ttl=63 time=0.818 ms ^C --- 172.20.102.155 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.818/1.358/2.297/0.666 ms [root@CentOS7 ~]# route add -host 192.168.30.3 gw 192.168.30.3 dev ens33 [root@CentOS7 ~]# ping 192.168.30.3 PING 192.168.30.3 (192.168.30.3) 56(84) bytes of data. 64 bytes from 192.168.30.3: icmp_seq=1 ttl=64 time=1.21 ms 64 bytes from 192.168.30.3: icmp_seq=2 ttl=64 time=0.314 ms 64 bytes from 192.168.30.3: icmp_seq=3 ttl=64 time=0.269 ms ^C --- 192.168.30.3 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.269/0.600/1.217/0.436 ms
[root@CentOS7 ~]# route -n #查看路由表 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.20.0.1 0.0.0.0 UG 100 0 0 ens34 172.20.0.0 0.0.0.0 255.255.0.0 U 100 0 0 ens34 172.20.102.155 172.20.0.1 255.255.255.255 UGH 0 0 0 ens34 192.168.30.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.30.3 192.168.30.1 255.255.255.255 UGH 0 0 0 ens33 192.168.30.3 192.168.30.3 255.255.255.255 UGH 0 0 0 ens33 [root@CentOS7 ~]# route del -host 192.168.30.3 gw 192.168.30.1 #删除路由表中主机路由为192.168.30.3,网关为192.168.30.1的路由 [root@CentOS7 ~]# route del -host-n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.20.0.1 0.0.0.0 UG 100 0 0 ens34 172.20.0.0 0.0.0.0 255.255.0.0 U 100 0 0 ens34 172.20.102.155 172.20.0.1 255.255.255.255 UGH 0 0 0 ens34 192.168.30.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.30.3 192.168.30.3 255.255.255.255 UGH 0 0 0 ens33
netstat 命令用于显示网络状态信息。
语法:netstat [选项]
[root@CentOS7 ~]# netstat -tan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 52 192.168.30.2:22 192.168.30.1:1599 ESTABLISHED tcp 0 0 192.168.30.2:22 192.168.30.1:1602 ESTABLISHED tcp6 0 0 :::111 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN
常用选项组合:-tan(显示所有TCP连接和端口号),-uan(显示所有UDP连接和端口号)
-tnl(仅显示正在监听的TCP端口),-unl(仅显示正在监听的UDP端口)
选项:
-t: tcp协议相关
-u: udp协议相关
-r: 显示内核路由表
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口
-e:扩展格式
-p: 显示相关进程及PID
-i: 显示接口摘要信息
ip 命令用于显示和配置网络路由、网络设备、策略路由和隧道。并不会永久生效,需要修改配置文件才能保存住修改。推荐使用!
在 CentOS 7中,ip 命令有自动补全功能,而在 CentOS 6 中需要安装 bash-completion 后实现自动补全。
语法:ip [选项] 目标 [行为]
[root@CentOS7 ~]# ip route show default via 172.20.0.1 dev ens34 proto static metric 100 172.20.0.0/16 dev ens34 proto kernel scope link src 172.20.103.22 metric 100 172.20.102.155 via 172.20.0.1 dev ens34 192.168.30.0/24 dev ens33 proto kernel scope link src 192.168.30.2 metric 100 192.168.30.3 via 192.168.30.3 dev ens33 [root@CentOS7 ~]# ip route del 192.168.30.3 via 192.168.30.3 dev ens33 #只要将需要删除的路由复制下来就可以 [root@CentOS7 ~]# ip route default via 172.20.0.1 dev ens34 proto static metric 100 172.20.0.0/16 dev ens34 proto kernel scope link src 172.20.103.22 metric 100 172.20.102.155 via 172.20.0.1 dev ens34 192.168.30.0/24 dev ens33 proto kernel scope link src 192.168.30.2 metric 100
[root@CentOS7 ~]# ip addr add 192.168.30.4/24 dev ens33 label ens33:1 [root@CentOS7 ~]# ip a show dev ens33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:d5:dd:f9 brd ff:ff:ff:ff:ff:ff inet 192.168.30.2/24 brd 192.168.30.255 scope global dynamic ens33 valid_lft 585918sec preferred_lft 585918sec inet 192.168.30.4/24 scope global secondary ens33:1 valid_lft forever preferred_lft forever inet6 fe80::b7f8:9779:d7f5:80e2/64 scope link valid_lft forever preferred_lft forever
[root@CentOS7 ~]# ip link set dev ens34 down [root@CentOS7 ~]# ip link 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:d5:dd:f9 brd ff:ff:ff:ff:ff:ff 3: ens34: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000 link/ether 00:0c:29:d5:dd:03 brd ff:ff:ff:ff:ff:ff
选项:
-s:输出更详细的信息;
-f:强制使用指定的协议族;
-4:指定使用的网络层协议是IPv4协议;
-6:指定使用的网络层协议是IPv6协议;
-0:输出信息每条记录输出一行,即使内容较多也不换行显示;
-r:显示主机时,不使用IP地址,而使用主机的域名。
目标:
address:设备上的IPv4/IPv6地址
label:设备别名
link:网络设备
global:全局可用
maddress:多播地址
route:路由表项
rule:路由规则
行为:指定在目标上执行的动作 add/delete/show/list/flush/set
ss 命令用于显示处于活动状态的套接字信息。
netstat 通过遍历 proc 来获取socket信息,ss 使用 netlink 与内核 tcp_diag 模块通信获取 socket 信息。
语法:ss [选项] [状态]
[root@CentOS7 ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:111 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* LISTEN 0 128 :::111 :::* LISTEN 0 128 :::22 :::* LISTEN 0 128 ::1:631 :::* LISTEN 0 100 ::1:25 :::*
[root@CentOS7 ~]# ss -o state established '( dport = :ssh or sport = :ssh )' Netid Recv-Q Send-Q Local Address:Port Peer Address:Port tcp 0 0 192.168.30.2:ssh 192.168.30.1:simbaservices timer:(keepalive,6min6sec,0) tcp 0 52 192.168.30.2:ssh 192.168.30.1:inspect timer:(on,235ms,0)
常见选项组合:-tan(所有TCP连接) -tanl(所有正在监听的TCP连接) -tanlp(所有TCP连接和PID)
-uan(所有UDP连接)
选项: 状态:
-t: tcp协议相关 LISTEN
-u: udp协议相关 ESTABLISHED
-w: 裸套接字相关 FIN_WAIT_1
-x:unixsock相关 FIN_WAIT_2
-l: listen状态的连接 SYN_SENT
-a: 所有 SYN_RECV
-n: 数字格式 CLOSED
-p: 相关的程序及PID dport=目的端口
-e: 扩展的信息 sport =源端口
-m:内存用量
-o:计时器信息
网络配置文件
网络相关的配置文件保存在 /etc/sysconfig/network-scripts/ifcfg-IFACE
[root@CentOS7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=dhcp DEFROUTE=yes 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=6b96bdd5-f9eb-4728-9bab-95fc6b9a9895 DEVICE=ens33 ONBOOT=yes
DEVICE:此配置文件应用到的设备
HWADDR:对应的设备的MAC地址
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no”
ONBOOT:在系统引导时是否激活此设备
TYPE:接口类型;常见有的Ethernet, Bridge
UUID:设备的惟一标识
IPADDR:指明IP地址
NETMASK:子网掩码
GATEWAY: 默认网关
DNS1:第一个DNS服务器指向
DNS2:第二个DNS服务器指向
USERCTL:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
激活主机的路由转发功能 /proc/sys/net/ipv4/ip_forward 中置1。
主机名配置文件
CentOS 6:/etc/sysconfig/network 中 HOSTNAME=主机名
[root@CentOS6 ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=CentOS6.miriam
CentOS 7:/etc/hostname(/etc/sysconfig/network 文件存在但是为空,存疑)
[root@CentOS7666 ~]# cat /etc/hostname /etc/sysconfig/network CentOS7.miriam #hostname文件中可以修改主机名 # Created by anaconda #network文件中仅有一行被注释,且修改也不生效
使用 hostnamectlset-hostname 命令修改主机名
[root@CentOS7 ~]# hostnamectl set-hostname aaa [root@CentOS7 ~]# cat /etc/hostname aaa [root@CentOS7 ~]# hostname aaa
当删除 /etc/hostname 文件后,主机名将恢复默认 localhost.localdomain
主机名查询静态表 /etc/hosts[root@CentOS7666 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 CentOS7.miriam CentOS7 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
当访问"localhost localhost.localdomain..."等地址时,将会通过"127.0.0.1"访问,而不通过DNS解析。
默认情况下当 hosts 文件中有目标主机的对应地址,则优先通过 hosts 的配置访问。
[root@CentOS7666 ~]# cat /etc/nsswitch.conf ... #hosts: db files nisplus nis dns hosts: files dns myhostname #修改三个单词的顺序来修改主机名的解析优先级 ...
DNS配置文件 /etc/resolv.conf
[root@CentOS7 ~]# cat /etc/resolv.conf # Generated by NetworkManager search magedu.com localdomain miriam #定义域名的搜索列表 nameserver 223.5.5.5 #定义DNS服务器为阿里DNS服务器 nameserver 223.6.6.6 nameserver 192.168.30.1
最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。
nameserver表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver,一般不要指定超过3个服务器。
domain声明主机的域名 很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。
search它的多个参数指明域名查询顺序 当要查询没有域名的主机,主机将在由search声明的域中分别查找。domain和search不能共存;如果同时存在,后面出现的将会被使用。
sortlist允许将得到域名结果进行特定的排序 它的参数为网络/掩码对,允许任意的排列顺序。
“search magedu.com”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加 magedu.com 的后 缀;"nameserver"表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。 其中domainname和search可同时存在,也可只有一个
网络路由配置文件 /etc/sysconfig/network-scripts/route-IFACE
默认是没有 network-scripts 文件夹中是没有路由配置文件的,并且通过 route 或 ip 命令创建的路由信息重启后无法保存。但是可以通过创建 route-IFACE 文件保存路由信息。
#单行定义 TARGET via GW #三行定义 ADDRESS#=TARGET NETMASK#=mask GATEWAY#=GW