Linux系统网络管理
一、基本网络配置:
将Linux主机接入网络,需要配置网络相关设置
一般包括以下内容:
主机名
IP/netmask
路由:默认网关
DNS服务器:
主DNS服务器
次DNS服务器
网络配置文件:
IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/networkscripts/ifcfg-IFACE:
DEVICE=ene33 # 针对网卡名称(必须有)
ONTBOOT=yes # yes表示开机自动启动网卡,默认yes
BOOTPROTO=dhcp # 自动获取,生产中一般改为手动配置static|none(必须有)
IPADDR=172.20.0.6 # 设置IP(必须有)
NETMASK=255.255.0.0 # 传统方式配置掩码(必须有)
PREFIX=16 # CIDR法设置掩码(必须有)
GATEWAY=172.20.0.1 # 设置网关
DNS1=114.114.114.114 # 设置DNS1
DNS2=8.8.8.8 # 设置DNS2
TYPE # 接口类型,常见有Ethernet,Bridge
UUID # 设备唯一表示
路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE
注意:需service network restart生效
两种风格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
网络配配置方式:
静态指定:
命令:
ifcfg家族:
ifconfig:配置IP,NETMASK
route:路由
netstat:状态及统计数据查看
iproute2家族:
ip OBJECT:
addr:地址和掩码;
link:接口
route:路由
ss:状态及统计数据查看
CentOS 7:nm(Network Manager)家族 立即生效,修改配置文件
nmcli:命令行工具
nmtui:text window 工具
注意:
(1) DNS服务器指定
配置文件:/etc/resolv.conf
(2) 本地主机名配置
hostname
配置文件:/etc/sysconfig/network
CentOS 7:hostnamectl
配置文件:
RedHat及相关发行版
/etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME
动态分配(dhcp):依赖于本地网络中有DHCP服务
DHCP:Dynamic Host Configure Procotol
二、主机、网卡名称管理
传统命名:
以太网:ethX, [0,oo),例如eth0, eth1, ...
PPP网络(点到点网络,拨号上网):pppX, [0,...], 例如,ppp0, ppp1, ...
可预测命名方案(CentOS 7):
支持多种不同的命名机制:
基于 Fireware, 拓扑结构命名
(1) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1, eno2, ...
(2) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1, ens2, ...
(3) 如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0, ...
(4) 如果用户显式定义,也可根据MAC地址命名,例如enx122161ab2e10, ...
上述均不可用,则仍使用传统方式命名;
命名格式的组成:
en:ethernet
wl:wlan
ww:wwan
名称类型:
o<index>:集成设备的设备索引号;
s<slot>:扩展槽的索引号;
x<MAC>:基于MAC地址的命名;
p<bus>s<slot>:基于总线及槽的拓扑结构进行命名;
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看网卡:
dmesg |grep –i eth
ethtool -i eth0
卸载网卡驱动:
modprobe -r e1000
rmmod e1000
装载网卡驱动:
modprobe e1000
修改主机名:
hostname [NEWNAME] 临时生效,重启恢复
永久生效:
CentOS6:
修改/etc/sysconfig/network
CentOS7:
修改/etc/hostname
或:hostnamectl set-hostname [NEWNAME]
hostname [NEWNAME] 使配置文件生效
修改CentOS7网卡命名为传统命名方式,实现自动化运维
(1) 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX=”rhgb quiet net.ifnames=0″
或:修改/boot/grub2/grub.cfg linux 16 行尾添加 net.ifnames=0
(2) 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3) 重启系统
修改本地解析器:
/etc/hosts
本地主机名数据库和IP地址的映像
对小型独立网络有用
通常,在使用DNS前检查
一般建议在127.0.0.1的行尾加上本机的hostname
注:如果hostname发生更改,一定要记得同时更改/etc/hosts里的原添加内容
搭建网站也建议将网站地址与网页名称对应写入到/etc/hosts文件中,避免解析出错
设置DNS:
/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
三、网卡别名
对虚拟环境有用,可将多个IP地址绑定到一个网卡上
eth0:1、eth0:2、eth0:3
ifconfig命令:
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
ip命令:
ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.1/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
为别名设备添加配置文件,永久生效
(1)service NetworkManager stop 关闭图形界面网络管理
(2)ifctg-ethX:xxx
(3)必须使用静态IP配置
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes
(4)最后重启网络服务
service network restart
四、网络接口配置bonding
Bonding是将多个网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。
直接给两块网卡设置同一IP地址是不可以的。
通过bonding,虚拟一块网卡对外提供链接,物理网卡被修改为相同的MAC地址
Bonding工作模式:
Mode 0 (balance-rr)
轮转(Round-robin)策略:从头到尾顺序的在每个slave接口上发送数据包。提供负载均衡和容错的能力
Mode 1 (active-backup)
活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave。
为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文,提供容错能力
查看bond0主备状态:
/proc/net/bonding/bond0
创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS= “miimon=100 mode=0”
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
也可使用nmcli实现bonding
添加bonding接口
nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup
添加从属接口
nmcli con add type bond-slave ifname ens7 master mybond0
nmcli con add type bond-slave ifname ens3 master mybond0
注:如无为从属接口提供连接名,则该名称是接口名称加类型构成,要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
启动绑定
nmcli con up mybond0
取消bonding
1.卸载驱动模块
lsmod 显示所有已加载的驱动模块
lsmod | grep bond
ifconfig bond0 down 禁用网卡
modproble -r bonding
2.删除和修改文件
rm -r ifcfg-bond0
vim ifcfg-eth{0,1}
service network restart 重启网络服务
五、实现网络组
代替bonding的一种技术
网络组:将多个网卡聚合在一起的方法,从而实现冗错和提高吞吐量
多种方式运行:
broadcast 广播模式
roundrobin 轮播模式
activebackup 主备模式
loadbalance 负载均衡模式
lacp (implements the 802.3ad Link Aggregation Control Protocol)
创建网络组Network Teaming(RHCE)
nmcli con add type team con-name team0 ifname team0 config
‘{“runner”: {“name”: “loadbalance”}}’
nmcli con mod team0 ipv4.addresses 192.168.1.100/24
nmcli con mod team0 ipv4.method manual
nmcli connection show
nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
nmcli con up team0
nmcli con up team0-eth1
nmcli con up team0-eth2
nmcli connection show
teamdctl team0 state
删除网络组:
第一种方法:删除network-scripts下配置文件
第二种方法:nmcli connection delete team0 team0-eth1 team0-eth2
六、ifcfg家族fconfig、route、netstat命令详解
- ifconfig: 网络接口及地址查看和管理
# 显示所有接口:
ifconfig -a
# 显示指定网卡信息:
ifconfig ens33
# 启动关闭指定网卡:
ifconfig ens33 up/down
# 为网卡配置和删除IPv6地址:
ifconfig ens33 add/del 33ffe:3240:800:1005::2/64
# 用ifconfig修改MAC地址:
ifconfig ens33 hw ether 00:AA:BB:CC:dd:EE
# 为指定网卡配置IP地址:
ifconfig ens33 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
# 设置最大传输单元:
ifconfig eth0 mtu 1500 #设置能通过的最大数据包大小为 1500 bytes
- route:显示并设置Linux内核中的网络路由表
# 显示当前路由:
route -n
# 添加网关:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
# 屏蔽一条路由:
route add -net 224.0.0.0 netmask 240.0.0.0 reject
# 删除路由记录:
route del -net 224.0.0.0 netmask 240.0.0.0
# 添加设置默认网关:
route add default gw 192.168.120.240
# 删除默认网关:
route del default gw 192.168.120.240
- netstat Linux中网络系统的状态信息
-t:TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine);
-u:UDP相关的连接
-w:raw socket相关的连接
-l:处于监听状态的连接
-a:所有状态
-n:以数字格式显示IP和Port;
-e:扩展格式
-p:显示相关的进程及PID;
常用组合:-tan, -uan, -tnl, -unl, -tunlp
七、iproute家族ip link、ip address 、ip route、命令详解
ip link
ip link show [IFNAME] :显示网卡mac信息,不加网卡名就是全部,加上就是显示单个网卡的mac信息。
ip link set up/down:设置网卡启用或关闭,在物理层禁止。
IP设置:ip addr
ip addr {add|del} IP dev IFACE
ip address add IP dev IFACE label ALIASIFACE 添加地址时指定网卡别名
ip address add IP dev IFACE scpe{global|link|host} 指明作用域
global:全局可用
link:仅链接可用
host:本机可用
ip address flush dev IFACe 清空IP地址
路由管理:ip route
ip r|route [show|list] 查看路由表
ip route add|del TARGET via GW dev IFACE 添加|删除路由
ip route flush dev IFACE 清空路由表
ip常用命令:
ip help 查看ip命令使用帮助
ip link 查看数据链路层信息
ip link set eth1 up|down 设置eth1网卡启用|禁用
ip address|a 查看网卡信息
ip route|r 查看路由信息
ip route add|del IP/24 via gateway 添加路由
ip address add 2.2.2.2/24 dev eth0 添加IP地址
ip address add 2.2.2.2/24 dev eth0 label eth0:2添加别名网卡IP地址
ip address flush dev eth0 清空eth0网卡上所有ip地址
八、ss命令、nmcli命令详解
ss命令:
用来代替netstat的新命令,netstat通过遍历proc来获取socket信息,
ss使用netlink与内核tcp_diag模块通信获取socket信息。
option:
-t tcp协议相关
-u udp协议相关
-w 裸套接字相关
-x unix sock相关
-l listen状态的链接
-a 所有链接
-n 以数字格式显示
-p 相关的程序及PID
-e 扩展的信息
-m 内存用量
-o 计时器信息
ss常见用法:
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详细信息
nmcli:地址配置工具
nmcli 常见用法:
nmcli connection show # 查看当前连接状态
nmcli connection reload # 重启服务
nmcli connection show -active # 显示活动的连接
nmcli connection show "lan eth0" # 显示指定一个网络连接配置
nmcli device status # 显示设备状态
nmcli device show eno16777736 # 显示指定接口属性
nmcli device show # 显示全部接口属性
nmcli con up static # 启用static连接配置
nmcli con up default # 启用default连接配置
nmcli con add help # 查看帮助