TangWei's Studio

Linux系统网络管理

Word count: 3,306 / Reading time: 15 min
2018/05/03 Share

一、基本网络配置:

将Linux主机接入网络,需要配置网络相关设置

一般包括以下内容:

  • 主机名

  • IP/netmask

  • 路由:默认网关

  • DNS服务器:

  • 主DNS服务器

  • 次DNS服务器

网络配置文件:

IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/networkscripts/ifcfg-IFACE:

  • DEVICE=eth0 针对网卡名称(必须有)

  • ONTBOOT=yes yes表示开机自动启动网卡,默认yes

  • BOOTPROTO=dhcp 自动获取,生产中一般改为手动配置static|none(必须有)

  • IPADDR=172.20.0.6 设置IP(必须有)

  • NETMASK=255.255.0.0 传统方式配置掩码(必须有)

  • PREFIX=16 CIDR法设置掩码(必须有)

  • DEFROUTE=yes 是否将此配置的网关设为默认路由

  • 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

网络配置方式:
静态指定:

ifconfig,route,netstat

ip:object{link,addr,route},ss,tc

system-config-network-tui,setup 图形工具

直接修改配置文件

动态分配:

DHCP: Dynamic Host Configuration Protocol

二、主机、网卡名称管理

CentOS6网卡名称

接口命名方式:

以太网:eth[0,1,2…]

ppp:ppp[0,1,2…]

网络接口识别并命名相关的udev配置文件:

/etc/udev/rules.d/70-persistent-net.rules

查看网卡:

1
2
3
dmesg |grep –i eth

ethtool -i eth0

卸载网卡驱动:

1
2
3
modprobe -r e1000

rmmod e1000

装载网卡驱动:

1
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命令:

1
2
3
ifconfig eth0:0 192.168.1.100/24 up

ifconfig eth0:0 down

ip命令:

1
2
3
4
5
6
7
8
9
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配置

1
2
3
4
5
6
7
DEVICE=eth0:0

IPADDR=10.10.10.10

NETMASK=255.0.0.0

ONPARENT=yes
  • (4)最后重启网络服务
1
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设备的配置文件

1
/etc/sysconfig/network-scripts/ifcfg-bond0
1
2
3
4
5
DEVICE=bond0

BOOTPROTO=none

BONDING_OPTS= “miimon=100 mode=0”
1
2
3
4
5
6
7
8
9
10
11
/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no

也可使用nmcli实现bonding

添加bonding接口

1
nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup

添加从属接口

1
2
3
nmcli con add type bond-slave ifname ens7 master mybond0

nmcli con add type bond-slave ifname ens3 master mybond0

注:如无为从属接口提供连接名,则该名称是接口名称加类型构成,要启动绑定,则必须

首先启动从属接口

1
2
3
nmcli con up bond-slave-eth0

nmcli con up bond-slave-eth1

启动绑定

1
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)

1
nmcli con add type team con-name team0 ifname team0 config

‘{“runner”: {“name”: “loadbalance”}}’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

六、Linux网络管理常用命令:

ifconfig 命令 配置网络接口

-a 查看所有接口信息

interface up|down 禁用|启用接口

设置IP地址

ifconfig IFACE IP/netmask 支持两种掩码设置IP

IP netmask

注意:此命令执行将立即生效

route 命令 路由管理命令

-n 查看路由表

添加路由:

route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] if]

添加目标:192.168.1.3 网关:172.16.0.1到路由表

1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0

添加目标:192.168.0.0 网关:172.16.0.1到路由表

1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
1
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0

添加默认路由,网关:172.16.0.1到路由表

1
2
3
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 [-net|-host] target [netmask Nm] [gw Gw] [[dev] if]

配置动态路由

通过首行进程获取动态路由

安装quagga包

支持多种路由协议:RIP(根据跳数)、OSPF(综合带宽、跳数等)和BGP

命令vtysh配置

netstat 命令 查看网络连接,路由表,接口统计等信息

option:

  • -t tcp协议相关

  • -u udp协议相关

  • -w raw socket相关

  • -l 处于监听状态

  • -a 所有状态

  • -n 以数字显示所有IP和端口

  • -e 扩展格式

  • -p 显示相关进程及PID

常用组合选项:

  • -nr 查看路由表

  • -nt 查看TCP进程

  • -ntu 查看TCP及UDP进程

  • -ntul 查看处于监听状态LISTEN的服务

  • -tul 端口程序不进行名称解析显示

  • -ntua 查看所有状态的服务

  • -ntuap 查看哪个进程打开的此端口

  • -ntuape 扩展信息,包括使用用户UID

统计端口数据

  • -i 查看网卡收发包信息

  • -I=eth0 只显示eth0网卡收发包信息等同于ifconfig -s eth0

ss 命令

格式:ss [option]…[FILTER]

用来代替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 计时器信息

TCP常见状态:

  • LISTEN 监听

  • ESTABLISHED 已建立的链接

  • FIN_WAIT_1

  • FIN_WAIT_2

  • SYN_SENT

  • CLOSED

支持EXPRESSION:

  • dport= 目标端口

  • sport= 源端口

常用组合用法与netstat类似

-tan,-tanl等

常见用法:

  • 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 命令 配置Linux网络属性

格式:ip [OPTIONS] OBJECT {COMMAND|help}

OBJECT={link|addr|route}

网络设备配置:

  • ip link set IFACE down|up 禁用|启用网卡

  • ip link show [up] 显示数据链路层信息[仅显示处于激活状态接口]

ip地址设置:

  • 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 r|route [show|list] 查看路由表

  • ip route add|del TARGET via GW dev IFACE 添加|删除路由

  • ip route flush dev IFACE 清空路由表

常用命令:

  • 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地址

nmcli 管理网络管理器的命令行工具
格式:nmcli [OPTIONS] OBJECT COMMAND

OBJECT:

  • device 显示和管理网络接口

  • connection|con 管理网络连接

修改IP地址等属性:

  • nmcli connection modify IFACE [+|-]setting.property value

setting.property:

  • ipv4.addresses

  • ipv4.gateway

  • ipv4.dns1

  • ipv4.method manual | auto

修改配置文件执行生效:

  • systemctl restart network

  • nmcli con reload

设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,

但同时只有一个连接配置生效

使连接配置生效|失效:

1
nmcli con up|down eth0

显示所有包括不活动连接

1
nmcli con show

显示所有活动连接

1
nmcli con show –active

显示网络连接配置

1
nmcli con show “System eth0“

显示设备状态

1
nmcli dev status

显示网络接口属性

1
nmcli dev show eth0

创建新连接default,IP自动通过dhcp获取

1
nmcli con add con-name default type Ethernet ifname eth0

删除连接

1
nmcli con del default

创建新连接static ,指定静态IP,不自动连接

1
2
3
nmcti 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连接配置

1
nmcli con up static

启用default连接配置

1
nmcli con up default

查看帮助

1
nmcli con add help

修改连接设置

1
2
3
4
5
6
7
8
9
10
11
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仍是手动设置,不自动获取。等价于下

面命令:

1
nmcli con mod “system eth0” ipv4.ignore-auto-dns yes

修改连接配置后,需要重新加载配置:

1
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

测试网络
在命令行下测试网络的连通性

显示主机名

hostname

测试网络连通性

ping

mtr

显示正确的路由表

ip route

确定名称服务器使用:

nslookup

host

dig

跟踪路由

traceroute

tracepath

网络客户端工具
ftp,lftp:子命令:get、mget、ls、help

ftp [-p port] [-u user[,password]] SERVER

lftpget URL 直接跟URL地址下载

wget [option]… [URL]…

  • -q: 静默模式

  • -c: 断点续传

  • -P:保存在指定目录

  • -O: 保存为指定的文件名

  • –limit-rate=: 指定传输速率,单位K,M等,生产中最好限速

links URL 图形界面浏览器

  • –dump 只显示文字

  • –source 查看网页源码

CATALOG
  1. 1. 一、基本网络配置:
    1. 1.1. 网络配置文件:
  2. 2. 二、主机、网卡名称管理
  3. 3. 三、网卡别名
  4. 4. 四、网络接口配置bonding
  5. 5. 五、实现网络组
  6. 6. 六、Linux网络管理常用命令:
    1. 6.1. ifconfig 命令 配置网络接口
    2. 6.2. route 命令 路由管理命令
    3. 6.3. netstat 命令 查看网络连接,路由表,接口统计等信息
    4. 6.4. ss 命令
    5. 6.5. ip 命令 配置Linux网络属性