1、CentOS 6网络管理
基本网络配置
-
将Linux主机接入到网络,需要配置网络相关设置。
-
一般包括如下内容:
主机名
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器 -
主机名 hostname
注:linux主机名不具备网络功能,windows主机名具备网络功能
/etc/hosts 主机名存放位置
/etc/sysconfig/network centos6系统中主机名配置文件 -
centos6系统配置主机名:
1、临时更改内存中主机名
hostname “主机名”
[root@centos6 ~]#hostname centos7.magedu.com
[root@centos6 ~]#hostname
centos7.magedu.com
2、永久保存主机名:
方法1:编辑/etc/sysconfig/network
[root@centos6 ~]#vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6.magedu.com
更改后需要重启才能生效
方法2:如果不重启想要生效
(1)hostname 主机名 更改内存中主机名
虽然该命令临时生效重启系统会失效,但是已经把配置文件做过更改,因此重启依然有效
(2)提示符中的主机名仍然没有变动,注销或使用命令exec bash即可更改
(3)注意:一定要更改/etc/hosts文件中的主机名,把新的主机名加入首行尾部即可
[root@centos6 ~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 centos6.magedu.com
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
centos7系统更改主机名
/etc/hostname 该文件是centos7系统主机名配置文件,对应centos6中的/etc/sysconfig/network文件
(1)hostnamectl set-hostname 新主机名
(2)提示符中主机名没有更改,此时需要注销重登或使用exec bash
(3)更改/etc/hosts文件中的主机名
知识扩展:
/etc/hosts文件具有域名解析效果
把域名与ip地址的对应关系写入/etc/hosts文件即可,而且一个ip可以对应多个域名
[root@centos6 ~]#vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 centos6.magedu.com
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.32.128 www.icbc.com.cn www.ccb.com
[root@centos6 ~]#ping www.icbc.com.cn
PING www.icbc.com.cn (192.168.32.128) 56(84) bytes of data.
64 bytes from www.icbc.com.cn (192.168.32.128): icmp_seq=1 ttl=64 time=0.273 ms
64 bytes from www.icbc.com.cn (192.168.32.128): icmp_seq=2 ttl=64 time=0.062 ms
windows系统/etc/hosts文件路径c:\Windows\System32\drivers
CentOS 6网卡名称
- 接口命名方式:CentOS 6
以太网:eth[0,1,2,...]
ppp:ppp[0,1,2,...] - 网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules - 查看网卡:
dmesg |grep –i eth
ethtool -i eth0 - 卸载网卡驱动:
modprobe -r e1000
rmmod e1000 - 装载网卡驱动:
modprobe e1000
注意:更改网卡名称场景:
(1)当服务器设备网卡位置发生变化时,网卡名称会发生变化,网卡名称不是从0开始,此时如果要把网卡名称更改回来,根据以上步骤操作即可更改回来。
(2)虚拟机克隆后,mac地址虽然被vmware虚拟机更改为新的mac地址,但网卡名不是从0开始,而且原始虚拟机的mac地址依然存在于配置文件中,此时需要把配置文件中老mac地址删除,然后把网卡名更改即可。
错误信息如下所示:
[root@centos7 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:0c:29:6a:30:8b brd ff:ff:ff:ff:ff:ff
6: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:0c:29:6a:30:95 brd ff:ff:ff:ff:ff:ff
在更改网卡配置文件/etc/udv/rules.d/70-persistent-net.rules时,要注意mac地址与网卡名称NAME的对应关系。该文件中ATTR{address}=="00:0c:29:6a:30:8b"
即为mac地址,NAME=eth0
即为网卡名称。
[root@centos6 ~]#cat /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:6a:30:8b", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:6a:30:95", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
网络配置方式
- 静态指定:
ifconfig, route, netstat
ip: object {link, addr, route}, ss, tc
system-config-network-tui,setup
配置文件 - 动态分配:
DHCP: Dynamic Host Configuration Protocol
配置网络接口
- ifconfig命令
注:IFACE是指网卡
ifconfig [interface] 查看启用的网卡信息
ifconfig -a 查看所有网卡信息(包括禁用的网卡)
ifconfig IFACE [up|down] 启用|禁用网卡
ifconfig interface [aftype] options | address ... 临时给网卡配置ip地址
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
示例:
[root@centos6 ~]#ifconfig eth1 192.168.32.100/24
[root@centos6 ~]#ifconfig eth1 192.168.32.100 netmask 255.255.255.0
注意:立即生效
启用混杂模式:[-]promisc
route命令
-
路由管理命令
-
以数字方式查看路由:route -n
-
添加路由:route add
语法:route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
-net:是指网络路由,匹配某个网段
-host:是指主机路由,精确匹配某个ip地址
target:目标地址或网段
gw:gateway,网关
示例:
目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
或route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
-
添加默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
或route add default gw 172.16.0.1
-
删除路由:route del
语法:route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
示例:
目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3
目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
知识扩展:
使用linux系统模拟路由器需要开启路由功能:
原因:由于pc网卡只接受属于自己的数据包,不属于自己的数据包会被丢弃掉,因此要开启路由功能,才会把不属于自己的数据包转发出去
暂时开启路由功能(系统重启后值会变回0)
把/proc/sys/net/ipv4/ip_forward文件的值改为1
[root@centos6 ~]#cat /proc/sys/net/ipv4/ip_forward
0
[root@centos6 ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
[root@centos6 ~]#cat /proc/sys/net/ipv4/ip_forward
1
永久启用路由功能
centos6系统
/etc/sysctl.conf文件中把net.ipv4.ip_forward=1
[root@centos6 ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
centos7系统
在/usr/lib/sysctl.conf文件中手动添加net.ipv4.ip_forward=1即可
配置动态路由
- 通过守护进程获取动态路由
安装quagga包
支持多种路由协议:RIP、OSPF和BGP
命令vtysh配置
使用linux系统模拟路由器:
(1)使用yum安装quagga软件包
(2)cd /etc/quagga 进入quagga文件夹
(3)cp ospfd.conf.sample ospfd.sapmle 根据模板复制配置文件
(4)service ospfd start 开启路由协议
(5)vtysh 开启命令行模式
然后即可模拟路由器(思科)进行配置
netstat命令
- 显示网络连接:
- 语法:netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
- 常用选项:
-t: tcp协议相关
-u: udp协议相关
-w: raw socket(裸套接字)相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口
-e:扩展格式,显示更多信息;如:节点编号、用户身份
-p: 显示相关进程及PID - 常用组合:
-tan, -uan, -tnl, -unl - 显示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式 - 显示接口统计数据:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
netstat -i 显示接口信息
netstat –I=IFACE 显示指定的网卡信息
ifconfig -s eth0 显示指定的网卡信息
知识扩展:
watch 扫描程序执行结果
watch -n0.5 'netstat -I=ens33' 监控指定网卡流量信息(每隔0.5s扫描一次该程序)
ip命令
- 配置Linux网络属性:ip命令
centos7系统中可以使用tab键显示子命令,而centos6系统没有此功能。
如果想要增加该功能,需要安装bash-completion软件包,此软件包在epel yum源中。
安装步骤:
(1)创建epel yum仓库(需要连接互联网)
(2)安装bash-completion软件包
(3)注销当前用户并重新登录即可 - ip:显示和管理路由、设备、路由策略和隧道
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
link:只显示数据链路层地址,即mac地址
addr:对ip地址进行增删改
route:对路由进行更改
set dev IFACE
可设置属性:
up and down:激活或禁用指定接口
ifup/ifdown
show [dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
示例:
[root@centos6 ~]#ip link set dev eth1 down
[root@centos6 ~]#ip link show eth1 显示eth1链接状态
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:0c:29:6a:30:95 brd ff:ff:ff:ff:ff:ff
[root@centos6 ~]#ip link show up 只显示处于up状态的网卡
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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 qlen 1000
link/ether 00:0c:29:6a:30:8b brd ff:ff:ff:ff:ff:ff
注意:ifup/ifdown命令依赖于网卡配置文件,linux系统中新增的网卡没有网卡配置文件,因此使用该命令,需要添加网卡的配置文件
-
ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 仅链接可用
host: 本机可用
[broadcast ADDRESS]:指明广播地址 -
global,link,host三种模式含义:
global:一个主机的两块网卡配置两个ip地址分别是:1.1.1.1和2.2.2.2,当其他主机ping该网卡其中某一个地址2.2.2.2时,不论连接的是哪一块网卡,那么都会ping通该主机
link:一个主机的两块网卡配置两ip地址分别是:1.1.1.1和2.2.2.2,当其他主机ping该网卡其中某一个地址2.2.2.2时,如果该主机连接的是1.1.1.1,那么将不会ping同该主机,只有与配置2.2.2.2地址的网卡相连时才能ping通
host:本机ping1.1.1.1和2.2.2.2,可以ping通,其他主机则无法ping通
网卡默认为global模式
global模式,网卡配置的ip地址都存放在内核中,无论与访问哪个网卡,只要到达网卡,网卡都能做出回应
link模式,与其中一个网卡相连,只能访问相连的网卡,不能访问其他网卡
host模式,仅本机有效,只能在本机内ping该模式的地址,其他主机则无法ping通此网卡 -
ip address show:查看ip地址信息
[dev DEVICE]
[label PATTERN] 网卡别名
[primary and secondary] 网卡主ip和次ip -
ip address flush:删除全部网卡别名地址,使用格式同show
示例:
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
-
ip route:路由管理
添加路由:ip route add
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:目标地址
TARGET:
主机路由:IP(目标ip地址)
网络路由:NETWORK/MASK (目标网段)
示例:
ip route add 192.168.0.0/24 via 172.16.0.1 添加网络路由
ip route add 192.168.1.13 via 172.16.0.1 添加主机路由
添加网关:ip route add default via GW dev IFACE
ip route add default via 172.16.0.1
删除路由:ip route delete
ip route del TARGET
ip route del 192.168.0.0/24
显示路由:ip route show|list
示例:
[root@centos6 ~]#ip route show
192.168.32.0/24 dev eth0 proto kernel scope link src 192.168.32.128
169.254.0.0/16 dev eth0 scope link metric 1002
清空路由表:ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0
ss命令
- 语法:ss [OPTION]... [FILTER]
- netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。
套接字socket文件:同一个主机两个应用程序发送数据,以套接字文件作为中转站,交换数据 - 选项[OPTION]:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息 - FILTER : [ state TCP-STATE ] [ EXPRESSION ]
- TCP的常见状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED:已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED - EXPRESSION:
dport =
sport =
示例:'( dport = :ssh or sport = :ssh )'
[root@centos6 ~]#ss '( dport = :ssh or sport = :ssh )'
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.32.128:ssh 192.168.32.1:60808
- 常用组合:
-tan, -tanl, -tanlp, -uan
常见用法
- ss -l 显示本地打开的所有端口
- ss -pl 显示每个进程具体打开的socket
- ss -t -a 显示所有tcp socket
- ss -u -a 显示所有的UDP Socekt
- ss -o state established '( dport = :ssh or sport = :ssh )' 显示所有已建立的ssh连接
- ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
- ss -s 列出当前socket详细信息
网络配置文件
- IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
- 路由相关的配置文件:
- /etc/sysconfig/network-scripts/route-IFACE
路由配置信息想要永久保存,需要写入route-ethN文件进行保存,该文件需要手动创建
注意:需service network restart生效
两种风格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
示例:
ADDRESS1=10.0.0.0/8
NETMASK1=255.0.0.0
GATWAY1=172.16.0.1
- /etc/sysconfig/network-scripts/ifcfg-IFACE:
要想永久保存新增网卡添加的ip地址,需要写入该配置文件
说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
DEVICE:此配置文件应用到的设备
HWADDR:对应的设备的真实MAC地址
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no” - ONBOOT:在系统引导时是否激活此设备,系统默认为ONBOOT=yes
- TYPE:接口类型;常见有的Ethernet, Bridge
- UUID:设备的惟一标识
- IPADDR:指明IP地址
- NETMASK:子网掩码
- GATEWAY: 默认网关
- DNS1:第一个DNS服务器指向
- DNS2:第二个DNS服务器指向
- USERCTL:普通用户是否可控制此设备
- PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
示例:
PEERDNS详解:
当PEERDNS=yes,且BOOTPROTO=dhcp,从dhcp服务器获取一个dns地址,直接覆盖/etc/resolv.conf文件
当PEERDNS=no,且BOOTPROTO=dhcp,从dhcp获取的dns地址,不覆盖/etc/resolv.conf文件,而是由人工指定和维护
相当于windows系统中网卡设置为自动获取,但是dns可以设置为自动获取和手工指定
当dns设置为自动获取即为PEERDNS=yes;当dns设置为手工指定即为PEERDNS=no.
- 设备配置被保存在文本文件中
/etc/sysconfig/network-scripts/ifcfg-\
帮助文档列出完整选项列表:/usr/share/doc/initcripts-*/sysconfig.txt
动态配置 | 静态配置 |
---|---|
DEVICE=exthX | DEVICE=ethX |
HWADDR=0:02:8A:A6:30:45 | HWADDR=0:02:8A:A6:30:45 |
BOOTPROTO=dhcp | IPADDR=192.168.0.123 |
ONBOOT=yes | NETMASK=255.255.255.0 |
Type=Ethernet | GATEWAY=192.168.0.254 |
ONBOOT=yes | |
Type=Ethernet |
知识扩展:
更改主机mac地址(逻辑上更改,并非更改真实mac地址)
使用场景:绑定mac地址使不能上网,可以通过更改mac地址上网
在网络配置文件ifcfg-ethN中添加MACADDR=xx.xx.xx.xx.xx(自定义mac地址),然后重启网络服务
[root@centos7 network-scripts]#ip addr show dev eth0 更改前eth0网卡信息,mac地址为00:0c:29:6a:30:8b
7: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:6a:30:8b brd ff:ff:ff:ff:ff:ff
inet 192.168.32.128/24 brd 192.168.32.255 scope global eth0
inet6 fe80::20c:29ff:fe6a:308b/64 scope link
valid_lft forever preferred_lft forever
[root@centos7 network-scripts]#cat ifcfg-eth0 在配置文件中设置mac地址:MACADDR=00:0c:29:6a:30:88
DEVICE=eth0
IPADDR=192.168.32.128
PREFIX=24
MACADDR=00:0c:29:6a:30:88
[root@centos7 network-scripts]#ip addr show dev eth0 更改后eth0网卡信息,mac地址为00:0c:29:6a:30:88
7: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:6a:30:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.32.128/24 brd 192.168.32.255 scope global eth0
inet6 fe80::20c:29ff:fe6a:3088/64 scope link
valid_lft forever preferred_lft forever
主机名和本地解析器
- 配置当前主机的主机名:
hostname [HOSTNAME]
/etc/sysconfig/network
HOSTNAME= - 解析器执行正向和逆向查询
- /etc/hosts
本地主机名数据库和IP地址的映像
对小型独立网络有用
通常,在使用DNS前检查
getent hosts 查看/etc/hosts 内容
dns域名解析
- /etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search magedu.com
示例:
[root@centos6 ~]#cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search magedu.com
nameserver 223.5.5.5
nameserver 223.6.6.6
- /etc/nsswitch.conf
与/etc/hosts相比优先于DNS - 正向解析:FQDN-->IP
dig -t A FQDN
host -t A FQDN - 反向解析:IP-->FQDN
dig -x IP
host -t PTR IP
注:dns域名解析的正向和反向解析会在后续dns服务中有详细的讲解,这里不多做叙述。
知识扩展:
dns和/etc/hosts都具有域名解析功能,二者的优先级为:
hosts文件优先级高于dns文件
/etc/nsswitch.conf 更改二者的优先级
示例:
[root@centos6 ~]#vim /etc/nsswitch.conf
#hosts: db files nisplus nis dns
hosts: files dns
找到hosts行,该行中file即为/etc/hosts文件
可以通过更改files和dns的先后顺序更改二者的优先级
常用DNS服务器:
联通:114.114.114.114
谷歌:8.8.8.8
网卡别名
- 对虚拟主机有用
- 将多个IP地址绑定到一个NIC上
eth0:1 、eth0:2、eth0:3 - ifconfig命令:
示例:
ifconfig eth0:0 192.168.1.100/24 up 启用网卡别名eth0:0
ifconfig eth0:0 down 禁用网卡别名
- ip命令:
示例:
ip addr add 172.16.1.2/16 dev eth0 为网卡eth0配置ip地址
ip addr add 172.16.1.1/16 dev eth0 label eth0:0 给网卡eth0设置别名eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0 给网卡别名配置第二个ip地址
ip addr del 172.16.1.1/16 dev eth0 label eth0:0 删除网卡别名的ip地址
ip addr flush dev eth0 label eth0:0 删除网卡eth0的全部别名
设备别名
- 为每个设备别名生成独立的接口配置文件
关闭NetworkManager服务
ifcfg-ethX:xxx
必须使用静态联网
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes - 注意:service network restart 生效
- 参考:/usr/share/doc/initscripts-*/sysconfig.txt
注意:网卡别名配置文件ifcfg-ethX:xxx必须使用静态地址,而网卡主配置文件ifcfg-ethX既能使用自动获取的ip地址,又能使用静态地址,但如果该网卡存在别名,则必须使用自动获取的ip地址
网络接口配置-bonding
- Bonding
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址
Bonding工作模式
- Mode 0 (balance-rr)
轮询(Round-robin)策略:两个网卡同时工作,两个网卡交替传输数据。本模式提供负载均衡和容错的能力 - Mode 1 (active-backup)
活动-备份(主备)策略:只有一个网卡被激活,当活动的网卡失败时才会激活其他网卡。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见 - Mode 3 (broadcast)
广播策略:在所有的网卡上同一时间传送同样的数据,提供容错能力 - active-backup、balance-tlb 和 balance-alb模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要LACP和 EtherChannel
注意:bond网卡绑定默认使用bond0模式
Bonding配置
- 创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=X.X.X.X
PREFIX=XX
BOOTPROTO=none
BONDING_OPTS= “miimon=100 mode=0” - 创建被绑定的网卡设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no #是否允许非root用户控制该设备
注意:配置文件创建完成后,需要重启网络服务才能生效 - 查看bond0状态:/proc/net/bonding/bond0
- miimon 是用来进行链路监测的。如果miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路
- 删除bond0
ifconfig bond0 down 禁用bond0网卡
rmmod bonding 卸载绑定网卡的驱动程序
rm -rf ifconfig-bond0 删除bond0网络配置文件 - 详细帮助:
/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt
2、CentOS 7网络管理
CentOS 7网络属性配置
- CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称可能会发生变化
- CentOS 7使用基于硬件,设备拓扑和设置类型命名:
- 网卡命名机制
systemd对网络设备的命名方式
(a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
(b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
(d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56
(e) 上述均不可用时,则使用传统命名机制
网卡名称
- 基于BIOS支持启用biosdevname软件
内置网卡:em1,em2
pci卡:pYpX Y:slot(插槽) ,X:port(接口) - 名称组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
名称类型:
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<总线bus>s<插槽slot>: enp2s1
网卡名称采用传统命名方式
- 使用传统命名方式:
原因:在自动化运维过程中,由于centos6和centos7网卡的命名规则不一致,这势必会增加自动化运维的难度,因此可将网卡命名标准化,均采用传统命名方式以降低运维难度。步骤如下:
(1) 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"(推荐此方法进行修改)
或:修改/etc/grub2.cfg文件
(2) 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg(或/boot/grub2/grub.cfg)
该命令参考/etc/default/grub文件,生成/boot/grub2/grub.conf文件,其中/etc/grub2.cfg是/boot/grub2/grub.cfg的软链接
(3) 重启系统 - 取消传统命名方式
(1)修改/boot/grub2/grub.cfg文件,在第一个linux16行的行尾去掉net.ifnames=0
(2)重启设备即可
CentOS 7网络配置工具
- CentOS 7主机名
centost7主机名配置文件:/etc/hostname,默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain;该文件相当于centos6系统中/etc/sysconfig/network文件
显示主机名信息
hostname
hostnamectl status
示例:
[root@centos7-1 ~]#hostname
centos7-1.magedu.com
[root@centos7-1 ~]#hostnamectl status
Static hostname: centos7-1.magedu.com
Transient hostname: status
Icon name: computer-vm
Chassis: vm
Machine ID: 7eab25876df747da952cee5f5a6dbc5f
Boot ID: fb89dce732ee45ab9443921157f6ed7a
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.el7.x86_64
Architecture: x86-64
设置主机名
hostnamectl set-hostname centos7.magedu.com
删除文件/etc/hostname,恢复主机名localhost.localdomain
- CentOS 7网络配置工具
图形工具:nm-connection-editor
字符配置tui工具:nmtui 相当于centos6系统中的setup工具
命令行工具:nmcli
nmcli命令
- 地址配置工具:nmcli
- nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device:显示和管理网络设备
nmcli device help
connection - start, stop, and manage network connections
nmcli connection help - 为物理网卡配置多个配置文件,可以在不同场景使用不同的配置文件
示例:
[root@centos7-1 ~]#nmcli connection add con-name eth0-home ifname eth0 type ethernet ipv4.address 192.168.32.100/24 增加eth0-home配置文件
[root@centos7-1 ~]#nmcli connection
NAME UUID TYPE DEVICE
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
eth0-home d180f0ba-352d-415a-a790-9c5dac21fecb ethernet --
[root@centos7-1 ~]#nmcli connection up eth0-home 启用eth0-home配置文件
[root@centos7-1 ~]#nmcli connection
NAME UUID TYPE DEVICE
eth0-home d180f0ba-352d-415a-a790-9c5dac21fecb ethernet eth0
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet --
- 修改IP地址等属性:
nmcli connection modify IFACE [+|-]setting.property value
setting.property:
ipv4.addresses ipv4.gateway
ipv4.dns1 ipv4.method manual | auto
示例:
[root@centos7-1 ~]#nmcli connection modify eth0-home +ipv4.addresses 1.1.1.1/24 给eth0-home网卡添加ip地址
[root@centos7-1 ~]#nmcli connection modify eth0-home +ipv4.addresses 2.2.2.2/24
[root@centos7-1 ~]#nmcli connection show eth0-home
ipv4.addresses: 192.168.32.100/32, 1.1.1.1/24, 2.2.2.2/24
[root@centos7-1 ~]#nmcli connection modify eth0-home -ipv4.addresses 2.2.2.2/24 给eth0-home网卡删除ip地址
[root@centos7-1 ~]#nmcli connection show eth0-home
ipv4.addresses: 192.168.32.100/32, 1.1.1.1/24
- 修改配置文件执行生效:
service restart network
nmcli con reload - nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0
使用nmcli配置网络
- NeworkManager是管理和监控网络设置的守护进程
- 设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,但同时只有一个连接配置生效
- 显示所有包括不活动连接
nmcli con show - 显示所有活动连接
nmcli con show --active - 显示网络连接配置
nmcli con show "System eth0“ - 显示设备状态
nmcli dev status - 显示网络接口属性
nmcli dev show eth0 - 创建新连接default,IP自动通过dhcp获取
nmcli con add con-name default type Ethernet ifname eth0 - 删除连接
nmcli con del default - 创建新连接static ,指定静态IP,不自动连接
nmcli con add con-name static ifname eth0 autoconnect no type Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254 - 启用static连接配置
nmcli con up static - 启用default连接配置
nmcli con up default - 查看帮助
nmcli con add help - 修改连接设置
nmcli con mod “static” connection.autoconnect no
nmcli con mod “static” ipv4.dns 172.25.X.254
nmcli con mod “static” +ipv4.dns 8.8.8.8
nmcli con mod “static” -ipv4.dns 8.8.8.8
nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”
nmcli con mod “static” +ipv4.addresses 10.10.10.10/16 - DNS设置,存放在/etc/resolv.conf文件中
PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下面命令:
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes
nmcli命令
命令Command | 用法Use |
---|---|
nmcli dev status | 列出所有设备 |
nmcli con show | 列出所有连接 |
nmcli con up "ethN" | 启用网卡 |
nmcli con down "ethN" | 临时禁用网卡;如果ONBOOT=yes,系统重启会重新开启 |
nmcli con off | 禁用所有网卡 |
nmcli con add... | 增加新的网卡 |
nmcli con mod "ethN" | 修改网卡的配置信息 |
nmcli con del "ethN" | 删除网卡 |
- nmcli con mod命令与ifcfg-*文件对应关系
nmcli con mod | ifcfg-*文件 |
---|---|
ipv4.method manual | BOOTPROTO=none |
ipv4.method auto | BOOTPROTO=dhcp |
ipv4.addresses “192.0.2.1/24 192.0.2.254” | IPADDR0=192.0.2.1 |
PREFIX0=24 | |
GATEWAY0=192.0.2.254 | |
ipv4.dns 8.8.8.8 | DNS0=8.8.8.8 |
ipv4.dns-search example.com | DOMAIN=example.com |
ipv4.ignore-auto-dns true | PEERDNS=no |
connection.autoconnect yes | ONBOOT=yes |
connection.id eth0 | NAME=eth0 |
connection.interface-name eth0 | DEVICE=eth0 |
802-3-ethernet.mac-address... | HWADDR... |
- 修改连接配置后,需要重新加载配置
nmcli con reload
nmcli con down “system eth0” 可被自动激活
nmcli con up “system eth0”
nmcli dev dis eth0 禁用网卡,访止被自动激活 - 图形工具
nm-connection-editor - 字符工具
nmtui
nmtui-connect
nmtui-edit
nmtui-hostname
nmcli实现bonding
- 添加bonding接口
nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup - 添加从属接口
nmcli con add type bond-slave ifname ens37 master mybond0
nmcli con add type bond-slave ifname ens33 master mybond0
注:如无为从属接口提供连接名,则该名称是接口名称加类型构成 - 要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1 - 启动绑定
nmcli con up mybond0
网络组Network Teaming
- 网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
- 网络组不同于旧版中bonding技术,提供更好的性能和扩展性
- 网络组由内核驱动和teamd守护进程实现.
- 多种方式runner
broadcast 广播模式
roundrobin 轮询模式
activebackup 主备模式
loadbalance 负载均衡模式
lacp (implements the 802.3ad Link Aggregation Control Protocol)
网络组规则
- 启动网络组接口不会自动启动网络组中的port接口
- 启动网络组接口中的port接口总会自动启动网络组接口
- 禁用网络组接口会自动禁用网络组中的port接口
- 没有port接口的网络组接口可以启动静态IP连接
- 启用DHCP连接时,没有port接口的网络组会等待port接口的加入
创建网络接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME 连接名,INAME 接口名
JSON 指定runner方式
格式:'{"runner": {"name": "METHOD"}}'
METHOD 可以是broadcast, roundrobin,
activebackup, loadbalance, lacp
创建port接口
- nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
CNAME 连接名
INAME 网络接口名
TEAM 网络组接口名
连接名若不指定,默认为team-slave-IFACE - nmcli dev dis INAME
- nmcli con up CNAME
INAME 设备名 CNAME 网络组接口名或port接口
示例:
nmcli con add type team con-name team0 ifname team0 config ‘{"runner": {"name": "loadbalance"}}' 创建网络组team0为负载均衡模式
nmcli con mod team0 ipv4.addresses 192.168.1.100/24 为网络组接口配置地址
nmcli con mod team0 ipv4.method manual 设置为静态地址
nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0 创建网络组port接口
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
nmcli con up team0 启用网络组接口team0
nmcli con up team0-eth1 启用网络组port接口
nmcli con up team0-eth2
teamdctl team0 state; nmcli dev dis eth1 查看网络组team0状态
管理网络组配置文件
- 网络组team0配置文件
示例:
[root@centos7-1 network-scripts]#cat ifcfg-team0
/etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{"runner": {"name": "broadcast"}}"
BOOTPROTO=none
IPADDR0=172.25.5.100
PREFIX0=24
NAME=team0
ONBOOT=yes
- 网络组port接口team0-eth1配置文件
示例:
[root@centos7-1 network-scripts]#cat ifcfg-team0-eth1
/etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes
删除网络组
(1)禁用网络组team0
nmcli connection down team0
(2)查看网络组team0状态
teamdctl team0 state
nmcli connection show
(3)删除网络组port接口team0-port0,team0-port1
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
(4)查看网络状态
nmcli connection show
测试网络工具
- 在命令行下测试网络的连通性
显示主机名
hostname
测试网络连通性
ping
mtr
显示正确的路由表
ip route - 确定名称服务器使用:
nslookup
host
dig - 跟踪路由
traceroute
tracepath
网络客户端工具
- ftp,lftp:子命令:get、mget、ls、help
lftp [-p port] [-u user[,password]] SERVER
ftp命令:
[root@centos7-1 ~]#ftp 172.20.0.1
Connected to 172.20.0.1 (172.20.0.1).
(vsFTPd 2.2.2)
Name (172.20.0.1:root): ftp 提示输入用户名,该用户名为匿名用户,为ftp或anonymous
Please specify the password.
Password: 提示输入密码,密码输入任意字符或者不输入都可以
Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ? 查看命令帮助
ftp> cd pub 切换目录
ftp> ls 查看ftp服务器文件内容
ftp> get getty 从ftp服务器下载文件
local: getty remote: getty
Entering Passive Mode (172,20,0,1,128,162).
Opening BINARY mode data connection for getty (338796 bytes).
Transfer complete.
338796 bytes received in 0.0273 secs (12423.31 Kbytes/sec)
ftp> lcd 查看本机所在当前目录
Local directory now /root
ftp> !ls 查看本机所在目录中的文件列表
anaconda-ks.cfg Desktop Downloads initial-setup-ks.cfg Music Public Videos
bin Documents getty motd Pictures Templates
ftp> mget file1 file2 从ftp服务器下载多个文件
ftp> exit 退出ftp服务器
Timeout.
[root@centos7-1 ~]#
ftp登录ftp服务器缺点:不支持tab键补全文件名,而且文件没有颜色区分,不方便使用
lftp命令:
[root@centos7-1 ~]#lftp 172.20.0.1 不需要输入用户名和密码
lftp 172.20.0.1:~> ls
drwxr-xr-x 21 0 0 4096 Apr 09 10:44 pub
lftp 172.20.0.1:/>
lftp命令登录ftp服务器支持tab键补全文件名,文件有颜色区分
其他子命令用法类似于ftp命令用法
- lftpget URL
lftp为非交互式命令,编写脚本可使用该命令
lftpget后跟文件完整路径,如:ftp://172.20.0.1/pub/file1
示例:
[root@centos7-1 ~]#lftpget ftp://172.20.0.1/pub/getty
[root@centos7-1 ~]#ls getty
getty
- wget [option]... [URL]...
可用于下载网络服务器上的文件,支持http,ftp协议,后跟文件完整路径,如:wget http://172.20.0.1/pub/file1
-q: 静默模式
-c: 断点续传
-P:保存在指定目录
-O: 保存为指定的文件名
--limit-rate=: 指定传输速率,单位K,M等 - links URL 字符界面浏览器
--dump 只显示浏览器文字内容
--source 查看网页源代码
文章评论