一、基本网络配置:
将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 | dmesg |grep –i eth |
卸载网卡驱动:
1 | modprobe -r 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 | ifconfig eth0:0 192.168.1.100/24 up |
ip命令:
1 | ip addr add 172.16.1.2/16 dev eth0 |
为别名设备添加配置文件,永久生效
(1)service NetworkManager stop 关闭图形界面网络管理
(2)ifctg-ethX:xxx
(3)必须使用静态IP配置
1 | DEVICE=eth0:0 |
- (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 | DEVICE=bond0 |
1 | /etc/sysconfig/network-scripts/ifcfg-eth0 |
也可使用nmcli实现bonding
添加bonding接口
1 | nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup |
添加从属接口
1 | nmcli con add type bond-slave ifname ens7 master mybond0 |
注:如无为从属接口提供连接名,则该名称是接口名称加类型构成,要启动绑定,则必须
首先启动从属接口
1 | nmcli con up bond-slave-eth0 |
启动绑定
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 | nmcli con mod team0 ipv4.addresses 192.168.1.100/24 |
删除网络组:
第一种方法:删除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 | route add -net 0.0.0.0 netmask 0.0.0.0 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 | nmcti con add con-name static ifname eth0 autoconnect no type |
启用static连接配置
1 | nmcli con up static |
启用default连接配置
1 | nmcli con up default |
查看帮助
1 | nmcli con add help |
修改连接设置
1 | nmcli con mod“static” connection.autoconnect no |
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 查看网页源码