网卡相关
网络接口识别并命名相关的udev 配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看网卡:
dmesg |grep –i eth
dmesg - print or control the kernel ring buffer
dmesg [-c] [-r] [-n level] [-s bufsize]
ethtool -i eth0
ethtool - query or control network driver and hardware settings
-i --driver Queries the specified network device for associated(相联系的) driver (驱动器)information.
卸载网卡驱动:
modprobe -r e1000
modprobe - program to add and remove modules from the Linux Kernel
modprobe [-v] [-V] [-C config-file] [-d <dirname> ] [-n] [-i] [-q] [-b] [-o <modname>]
[ --dump-modversions ] <modname> [parameters...]
modprobe -r [-n] [-i] [-v] <modulename> ...
modprobe -l -t <dirname> [ -a <modulename> ...]
-r --remove This option causes modprobe to remove rather than insert a module.
rmmod e1000
rmmod - simple program to remove a module from the Linux Kernel
rmmod [ -f ] [ -w ] [ -s ] [ -v ] [ modulename ]
装载网卡驱动:
modprobe e1000
装载网卡驱动后,要重启网络:service network restart
查询对应设备芯片的数据信息:
lspci |grep -i eth
lspci - list all PCI(外部控制器接口) devices
lspci [options]
lspci [<switches>]
网卡名称
CentOS 6之前,网络接口使用连续号码命名:eth0 、eth1等,当增加或删除网卡时,名称可能会发生变化
CentOS 7使用基于硬件,设备拓扑和设置类型命名。
使用centos7中采用传统网卡命名方式
(1)编辑/etc/default/grub 配置文件
GRUB_CMDLINE_LINUX ="rhgb quiet net.ifnames=0"
或:修改/boot/grub2/grub.cfg(尽量不要用)
(2)为grub2 生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3)重启系统
网卡别名
网卡主名上,可以设置静态,同时也可以设置动态对虚拟主机有用
将多个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。centos6上关闭NetworkManager 服务
2。复制ifcfg-ethX 给 ifcfg-ethX:xxx
必须使用静态联网
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes
注意:重启网络服务生效
参考/usr/share/doc/initscripts-*/sysconfig.txt
配置命令
ifconfig
ifconfig命令,配置接口设备和ip地址
ifconfig - configure a network interface(临时配置网络接口,网络重启后就就会失效)
ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]
[add <address>[/<prefixlen>]]
[del <address>[/<prefixlen>]]
[[-]broadcast [<address>]] [[-]pointopoint [<address>]]
[netmask <address>] [dstaddr <address>] [tunnel <address>]
[outfill <NN>] [keepalive <NN>]
[hw <HW> <address>] [mtu <NN>]
[[-]trailers] [[-]arp] [[-]allmulti]
[multicast] [[-]promisc]
[mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]
[txqueuelen <NN>]
[[-]dynamic]
[up|down] ...
-a 显示所有接口
-s 显示简短列表=netstat -i
-v ifconfig -v=ifconfig,显示详细信息,也包括错误情况
interface 接口名,如eth0,ens33等网卡名
up 激活接口
down 关闭接口
[-]arp 在接口上启动或关闭arp协议
[-]promisc 启动或关闭接口的混杂模式
[-]allmulti 启动或关闭多路广播模式
mtu N 设置一个接口的Maximum Transfer Unit (MTU)
dstaddr addr 为点到点链接的远程ip地址,以pointopoint关键词取代
netmask addr 设置接口子网掩码
add addr 给接口添加ip地址
del addr 从接口上删除ip地址
tunnel addr 给目标地址创建个隧道
irp addr 通过这个设备设置中断行
io_addr addr 在IO空间为设备设置开始地址
mem_start addr 为被设备使用的共享内存设置开始地址
media type 设置设备使用的物理端口和介质类型
[-]broadcast [addr] 若地址参数已给,为接口界面设置协议广播地址
[-]pointopoint [addr] 激活接口的点到点模式
hw class address 为接口设置硬件地址
multicast 在接口界面上设置多路广播标志
address ip地址
txqueuelen length 设置设备的传输队列的长度
示例:
ifconfig -a :显示所有接口
ifconfig Interface [up|down]:启用或禁用
ifconfig Interface IP/netmask [up] ;如:172.16.0.1/24
ifconfig Interface IP netmask NETMASK [up] ;如:255.255.0.0
注意:
设定的地址会立即生效,但不会永久生效。
route
route命令,配置路由和网关
route - show / manipulate the IP routing table,路由管理命令
route [-nNvee] [-FC] [<AF>] List kernel routing tables
route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.
route {-h|--help} [<AF>] Detailed usage syntax for specified AF.
route {-V|--version} Display version/author and exit.
-v, --verbose 显示详情
-n, --numeric don't resolve names,以数字格式显示
-e, --extend 显示更多信息
-F, --fib 显示转发信息 (default)
-C, --cache 取代fib显示路由缓存
查看:route -n
添加:route add
route add [-net|-host] Target [netmask|/Nm] gw Gateway [dev Interface]
-net :后面跟一个网络地址,表示网络路由
-host:后面跟一个主机地址,表示主机路由
目标: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 [netmask|/Nm] gw Gateway [dev Interface]
目标: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
注意:
所有配置会立即生效,但不会永久生效,想永久生效就要修改对应的静态路由的配置文件。
ip
ip 命令,配置接口设备、ip地址、路由和网关
ip - show / manipulate(操纵)routing, devices, policy routing and tunnels(通道)
Usage:
ip [options] object {command |help}
ip [ -force ] -batch filename
object := { link | address | addrlabel | route | rule | neigh | ntable |tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |netns | l2tp | macsec | tcp_metrics | token }
options := { -V[version] | -s[statistics] | -d[details] | -r[resolve] |-h[human-readable] | -iec |-f[family] { inet | inet6 | ipx | dnet | bridge | link } |-4 | -6 | -I | -D | -B | -0 |-l[loops] { maximum-addr-flush-attempts } |-o[oneline] | -t[timestamp] | -ts[hort] | -b[batch] [filename] |-rc[rcvbuf] [size] | -n[netns] name | -a[all] }
ip [options] object {command |help}
object:={link|addr|route}
link:链接接口,如eth0
ip link - network device configuration
set:设定接口属性;
ip link set DEVICE
set DEVICE { up|down}:激活或禁用指定接口
ifup/ifdown:启用或禁用链接
promisc{on|off}:是否支持文件混杂模式
show:显示接口状态;ip link show [DEVICE],如显示eth0网卡的硬件信息
show up :仅显示处于激活状态的接口
addr:管理接口上的地址
{add|del}:添加或删除地址;
ip addr {add|del} ipaddr dev DEVICE
ip addr add 172.16.200.122 dev eth0
[label LABEL] :添加地址时指明网卡别名
[scope {global|link|host}] :指明作用域
global: 全局可用
link: 仅链接可用
host: 本机可用
[broadcast addr] :指明广播地址
show :显示该网卡的所有地址信息;
ip address show - look at protocol addresses
dev [DEVICE]
[label PATTERN]
[primary and secondary]
flush:清除协议地址;ip addr flush [dev ifname]
ip address flush - 使用格式同show
dev [DEVICE]
[label PATTERN]
[primary and secondary]
例子:
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
route:管理路由
ip route - routing table management
lsit|show:显示路由
add:添加路由;
ip route add Target via Gateway dev Interface src Source_ip
设置默认网关:ip route add defalut via 172.18.0.1
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
del:删除路由;
ip route del Target
ip route del 192.168.0.0/24
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
flush:清空路由表
ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0
netstat
netstat命令,显示网络连接、路由表、接口统计数据等
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
netstat [-vWeenNcCF] [<Af>] -r
netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]
-r, --route 显示路由表
-I, --interfaces=<Iface> 显示接口表
-i, --interfaces 显示接口表
-g, --groups 显示多播组成员
-s, --statistics 显示网络状态例如snmp
-M, --masquerade 显示伪装的连接
-v, --verbose 详情
-W, --wide 不简短显示ip地址
-n, --numeric 不解析名字
--numeric-hosts 不解析主机名
--numeric-ports 不解析端口名
--numeric-users 不解析用户名
-N, --symbolic 解析硬件名
-e, --extend 显示更多信息
-p, --programs 显示套接字的pid或项目名
-o, --timers 显示定时器
-c, --continuous 监听
-l, --listening 显示监听服务套接字
-a, --all 默认显示所有连接的套接字
-F, --fib 默认显示转发信息
-C, --cache 取代fib显示路由缓存
-Z, --context 显示套接字的selinux内容
常用组合:
netstat -tan, -uan, -tnl, -unl,-tunl,-tnlp
显示网络链接 :
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
显示路由表:
netstat {--route|-r} [--numeric|-n]
显示接口统计数据:
netstat {--interfaces|-I|-i} [interface]
netstat --interfaces=eth0 == netstat -i eth0 == netstat -I=eth0 == ifconfig -s eth0
ss
ss命令,同netstat差不多的功能,但比netstat强
netstat 通过遍历proc 来获取socket 信息。
ss 使用netlink 与内核tcp_diag模块通信获取socket 信息。
ss - another utility to investigate sockets
ss [ OPTIONS ] [ FILTER ]
-n, --numeric 不解析服务名
-r, --resolve 解析主机名
-a, --all 显示所有套接字
-l, --listening 显示监控套接字
-o, --options 显示计时器信息
-e, --extended 显示详细信息
-m, --memory 显示套接字内存使用率
-p, --processes 显示进程使用的套接字
-i, --info 显示内容tcp信息
-s, --summary 显示套接字使用情况
-b, --bpf 显示bpf过滤器套接字信息
-Z, --context 显示进程selinux安全内容
-z, --contexts 显示进程和套接字selinux安全内容
-N, --net 切换到指定的网络空间名
-4, --ipv4 仅显示ipv4的套接字
-6, --ipv6 仅显示ipv6的套接字
-0, --packet 显示包套接字
-t, --tcp 仅显示tcp套接字
-u, --udp 仅显示udp套接字
-d, --dccp 仅显示dccp套接字
-w, --raw 仅显示raw套接字
-x, --unix 仅显示unix于套接字
-f, --family=FAMILY display sockets of type FAMILY
-D, --diag=FILE 转存tcp套接字原始信息到文件
-F, --filter=FILE 从文件中读取过滤器信息
-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink}[,QUERY]
FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}
connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
bucket := {syn-recv|time-wait}
big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}
常用组合:
-tan, -tanl, -tanlp, -uan,-tunl
常见用法
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -ta 显示所有tcp socket
ss -ua 显示所有的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 - command-line tool for controlling NetworkManager,控制网络管理的命令行工具
nmcli [OPTIONS] OBJECT { COMMAND | help }
nmcli [OPTIONS...] {help | general | networking | radio | connection | device | agent |monitor} [COMMAND] [ARGUMENTS...]
OPTIONS
-t[erse] 简洁输出
-p[retty] 漂亮输出
-m[ode] tabular|multiline 输出模式
-c[olors] auto|yes|no 是否在输出上使用颜色
-f[ields] <field1,field2,...>|all|common 指定输出区域
-e[scape] yes|no escape columns separators in values
-a[sk] ask for missing parameters
-s[how-secrets] 允许显示密码
-w[ait] <seconds> 设置等待时间
OBJECT
g[eneral] 网络管理的一般状态和操作
nmcli general { COMMAND | help }
COMMAND := { status | hostname | permissions | logging }
n[etworking] 完全网络控制
nmcli networking { COMMAND | help }
COMMAND := { [ on | off | connectivity ] }
r[adio] 网络管理的无线切换
nmcli radio { COMMAND | help }
COMMAND := { all | wifi | wwan [ on | off ]
c[onnection] 网络管理的连接
nmcli connection { COMMAND | help }
COMMAND := { show | up | down | add | modify | clone | edit | delete | monitor | reload | load | import | export }
d[evice] 设备的网路管理
nmcli device { COMMAND | help }
COMMAND := { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp }
a[gent] 代理
nmcli agent { COMMAND | help }
COMMAND := { secret | polkit | all }
m[onitor] 监控网络管理更改
使用nmcli配置网络
注意:
尽量使用tab键,会列出你所需要的选项。
修改IP 地址等属性:
nmcli connection modify Interface [+|-] setting.property value
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 ,不自动连接
nmcti con add con-name static ifname eth0
autoconnect no type Ethernet ip4 172.25.X.10/24 gw4 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/2472.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 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 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
网络组Network Teaming
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd 守护进程实现.
多种方式runner
broadcast
roundrobin
activebackup
loadbalance
lacp (implements the 802.3ad Link Aggregation ControlProtocol)
启动网络组接口不会自动启动网络组中的port 接口
启动网络组接口中的port 接口总会自动启动网络组接口
禁用网络组接口会自动禁用网络组中的port 接口
没有port 接口的网络组接口可以启动静态IP 连接
启用DHCP 连接时,没有port 接口的网络组会等待port接口的加入
创建网络组
ip link
nmcli con add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
nmcli con mod team0 ipv4.addresses'192.168.0.100/24'
nmcli con mod team0 ipv4.method manual
nmcli con add con-name team0-port1 type team-slave ifname eth1 master team0
nmcli con add con-name team0-port2 type team-slave ifname eth2 master team0
teamdctl team0 state
ping -I team0 192.168.0.254
nmcli dev dis eno1
teamdctl team0 state
nmcli con up team0-port1
nmcli dev dis eno2
teamdctl team0 state
nmcli con up team0-port2
teamdctl team0 state
删除网络组
nmcli connection down team0
teamdctl team0 state
nmcli connection show
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
nmcli connection show
创建网络接口
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 接口
bonding
bonding是一种网络接口的配置,都知道给两块网卡设置同一个ip地址是不可能的,那么若确实想设置一个ip该怎么办?这就需要用到bonding配置。
bonding就是将多块网卡绑定同一ip地址来对外提供服务器,从而实现高可用或负载均衡。
通过bonding虚拟一块网卡对外提供连接,物理网卡被修改为相同的MAC地址。
bonding的工作模式
Mode 0 (balance-rr),轮转(Round-robin )策略:
从头到尾顺序的在每一个slave接口上面发送数据包。
本模式提供负载均衡和容错的能力
Mode 1 (active-backup),活动- 备份(主备)策略:
只有一个slave被激活,当且仅当活动的slave 接口失败时才会激活其他slave。
为了避免交换机发生混乱此时绑定的MAC 地址只有一个外部端口上可见
Mode 3 (broadcast),广播策略:
在所有的slave 接口上传送所有的报文,提供容错能力
active-backup 、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。
其他绑定模式 需要配置交换机以便整合链接 。
如: Cisco 式 交换机需要在模式 0 、2 和 和 3 中使用EtherChannel ,但在模式4中需要 LACP和 和 EtherChannel
Bonding 配置
创建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
查看bond0 状态:/proc/net/bonding/bond0
miimon是用来进行链路监测的,如果miimon=100 ,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
删除bond0
ifconfig bond0 down
rmmod bonding
详细帮助:
/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt
brctl
网桥
桥接:
把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
主机A 发送的报文被送到交换机S1 的eth0 口,由于eth0与eth1 、eth2 桥接在一起,故而报文被复制到eth1 和eth2 ,并且发送出去,然后被主机B 和交换机S2 接收到。而S2 又会将报文转发给主机C 、D。
配置实现网桥
创建网桥
brctl addbr br0
查看网桥
cat /etc/sysconfig/network-scripts/ifcfg-br0
brctl show
删除网桥 brctl delbr br0
删除网桥中网卡 brctl delif eth0
注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口
brctl命令
brctl - ethernet bridge administration
brctl is used to set up, maintain, and inspect the ethernet bridge configuration in the linux kernel.
brctl [command]
addbr <bridge> 添加网桥
delbr <bridge> 删除网桥
addif <bridge> <device> 添加接口到网桥
delif <bridge> <device> 从网桥上删除接口
hairpin <bridge> <port> {on|off} 打开或关闭 hairpin
setageing <bridge> <time> 设置老化时间
setbridgeprio <bridge> <prio> 设置网桥优先级
setfd <bridge> <time> 设置桥前延迟
sethello <bridge> <time> 设置 hello 时间
setmaxage <bridge> <time> 设置最大消息期限
setpathcost <bridge> <port> <cost> 设置路径成本
setportprio <bridge> <port> <prio> 设置端口优先级
show [ <bridge> ] 显示网桥列表
showmacs <bridge> 显示mac 地址列表
showstp <bridge> 显示网桥stp信息
stp <bridge> {on|off} 开启或关闭