1、linux网络设置
网络是运维的基础。
1.1 网络设置包括四部分:
- 主机名
- IP/netmask
// 想保持网络通讯,必须要ip地址和子网掩码。 - 路由:默认网关
// 不同网段之间的设备进行通讯,需要通过网关。 - DNS服务器
// 可以有多个DNS,与外网有关,设置了DNS,设备可以上外网。
1.2 CentOS网卡的配置文件位置:
vim /etc/sysconfig/network-scripts/ifcfg- ,后面的ens33 是网卡名字,网卡名字不是固定的。
小拓展: 以前网卡的命名设置为 eth0、eth1等,eth0为第一块网卡,eth1为第二块网卡,如果把0拔掉,那么1就会变成0,这样就会容易造成混乱。为了解决这个问题,后来的网卡命名 都是按照接口进行设置,比如ens33,其中en是网卡,s是接口,33是接口的名字。
ethtool -p,可以让网卡快速闪烁
1.3 如何将网卡名字从ens33改成eth0?
mv ifcfg-ens33 ifcfg-eth0
vim ifcfg-eth0
最后再:重启网络 systemctl restart network
2、网络配置命令
2.1 ifconfig
ifconfig命令 来源于net-tools(网络工具)包。
ifconfig命令,可以查看网卡,但是默认只能查看已开启的网卡
ifconfig -a 与ip -a 都可以查看网卡信息。
网卡信息拆分:
[root@localhost ~]# ifconfig #查看所有已开启网卡的信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ens33: 网卡名称
up : 网卡已开启
BROADCAST: 广播
running: 正在运行
BROADCAST: 组播
mtu 1500: 网络传输时的最大传输单元,一般最大为1500字节左右。
inet 192.168.125.100 netmask 255.255.255.0 broadcast 192.168.125.255
inet: ip地址
netmask: 子网掩码
broadcast: 广播地址
ether 00:0c:29:95:55:89 txqueuelen 1000 (Ethernet)
txqueuelen: 传输队列长度
RX packets 163365 bytes 230325757 (219.6 MiB)
报文个数、总字节
RX errors 0 dropped 0 overruns 0 frame 0
errors: 错误个数
dropped: 丢包个数
overruns: 溢出个数
overruns: 冲突帧数
命令 | 功能描述 |
---|---|
ifconfig | 查看所有开启的网卡 |
ifconfig 网卡名称 | 查看单独的网卡 |
ifconfig down | 关闭网卡 |
ifconfig up | 开启网卡 |
ifconfig -a | all 显示所有网卡,包括未开启的网卡 |
ifconfig 网卡名称 ip地址/子网 | 临时设置地址 |
ifconfig 网卡名称:0 ip地址/子网 | 虚拟网卡,设置临时网卡,主要用于测试使用。 |
ifconfig 网卡名称 0 | 取消网卡设置,0就代表没有 |
以上命令都是临时设置, 主要作用是查看网卡信息,临时修改网卡配置。
// 命令设置分为:
- 临时设置
- 永久设置
2.2 ip
ip命令非常有用,但是选项非常多,并且比较复杂。
- ip link 代表数据链路层
- 临时修改网卡名称:
ip link set ens33 down #先关闭
ip link set ens33 name ky36 #再改名
ip link set ky36 up #开启改名后的网卡
-
永久修改网卡名称:
grub2 配置文件位置:/etc/default/grub
[root@localhost ~]# vim /etc/default/grub #进入配置文件
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0" #在最后面添加"net.ifnames=0"的配置信息
GRUB_DISABLE_RECOVERY="true"
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg #重新生成配置文件
- ip addr 代表网络层
- ip a 可以查看网卡
2.3 route 路由
默认路由很重要,里面包含了网关,所以尽量不要动默认路由。
命令 | 功能描述 |
---|---|
route -n | 查看路由、网关,显示路由信息 -n是数字形式显示。 |
route del default | 删除默认路由 |
route add default + gw网关 + ip地址 | 添加默认路由,加完需要重启网络,才会生效 |
route add -net + 网段 + gw网关 | 添加静态路由,示例:route add -net 192.168.125.0/24 gw 192.168.125.100 |
route del -net + 网段 | 删除路由,示例:route del -net 192.168.125.0/24 |
// -net是静态路由,default是默认路由。
永久添加路由:
via 网关
#第一种方法:
[root@localhost ~]#vim /etc/sysconfig/network-scripts/route-ens33
10.0.0.0/24 via 192.168.91.2
[root@localhost ~]#systemctl restart network
#第二种方法:
[root@localhost ~]#vim /etc/sysconfig/static-routes
any net 172.16.0.0/16 gw 172.16.1.2
[root@localhost ~]#systemctl restart network
2.4 hostname 主机名
修改 hostname 后,用 su 刷新 或者exit退出登录 或者重启。
临时修改主机名:
[root@localhost ~]# hostname #查看主机名
localhost.localdomain
[root@localhost ~]# hostname wxj #修改主机名,为临时修改。
[root@localhost ~]# su #切换
[root@wxj ~]# #可以看到主机名发生了变化
[root@wxj ~]# exit #登出
exit
[root@localhost ~]# #又变回了之前的主机名,所以设置是一次性的。
命令 | 功能描述 |
---|---|
hostname | 查看主机名 |
hostname 主机名 | 临时修改主机名 |
vim /etc/hostname | 将主机名添加到该文件中,但是默认只有第一行生效 |
hostnamectl set-hostname + 主机名 | 永久修改主机名 |
永久修改主机名(两种方法):
- 修改配置文件:vim /etc/hostname
[root@localhost ~]# vim /etc/hostname #进入修改主机名的配置文件
abc #第一行
localhost.localdomain #第二行
#将主机名添加到该文件中,但是只有第一行生效。
[root@localhost ~]# reboot
[root@abc ~]# #主机名改为第一行的abc
-
使用命令修改:
hostnamectl set-hostname + 新主机名
[root@abc ~]# hostnamectl set-hostname wxj #修改主机名
[root@abc ~]# cat /etc/hostname #查看新主机名
wxj
2.5 ss和netstat
查看本机网络链接状态 和本机端口状态。
1、ss(socket statistics)
选项 | 含义 |
---|---|
-t | tcp协议相关 ,只显示tcp |
-u | udp协议相关,只显示udp |
-w | 套接字相关 |
-x | unix sock相关 |
-l | listen状态的连接 |
-a | 所有 |
-n | 数字格式 |
-p | 相关的程序及Pid |
-e | 扩展的信息 |
-m | 内存用量 |
-o | 计时器信息 |
-r | - -resolve 把ip解释为域名,把端口号解释为协议名称。 |
2、netstat
选项 | 含义 |
---|---|
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-n | 以数字的形式显示相关的主机地址、端口等信息 |
-r | 显示路由表信息 |
-l | 显示处于监听(Listening)状态的网络连接及端口信息 |
-t | 查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息 |
-u | 显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限) |
ss和netstat组合选项:
ss和netstat的选项, 一般采用组合方式,最常见的组合方式为:
- -natp:t是tcp协议
- -naup:u是udp协议
ss -natp |grep ”:80” #查看tcp协议下的80端口。
ss和netstat的区别:
- ss:内核态、速度快,推荐使用ss
- netstat:用户态、速度慢
2.6 ping
测试网络连通性。
选项 | 含义 |
---|---|
-w | 超时时间 |
-c | count ,指定发送报文的次数 |
-i | 指定收发信息的间隔时间 |
-s | 设置数据包的大小 |
-n | 只输出数值 |
-p | 设置填满数据包的范本样式 |
-q | 不显示指令执行过程 |
-R | 记录路由过程 |
-t | 设置存活数值TTL的大小 |
-v | 详细显示指令的执行过程 |
2.7 traceroute
路由追踪。
通式:
traceroute + ip地址
2.8 nslookup 域名解析
示例:
[root@abc ~]# nslookup www.baidu.com //将域名解析为IP地址
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 36.155.132.76
Name: www.a.shifen.com
Address: 36.155.132.3
小拓展:dig(需要安装)
可以显示出更多详细信息。
2.9 scp 远程拷贝
[root@kgc opt]#scp /opt/passwd lisi@192.168.91.101:/opt/passwd
命令字 本地文件地址 对方用户名@地址冒号对面地址
[root@kgc opt]#scp root@192.168.91.101:/opt/passwd /opt/
命令字 对方用户名@地址冒号对面地址 本地地址
2.10 ethtool
查看网卡信息
选项 | 含义 |
---|---|
-p | 可以让网卡快速闪烁 |
-i | 显示网卡的详细信息 |
ethtool -i ens33
2.11 永久修改网络相关配置文件
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
B00TPROT0=static
#地址获取方式,分为静态和动态,静态又分为static 、none ;动态是 dhcp
NAME=ens36
#描述,等号后面的网卡名,前后设置要保持一致。
DEVICE=ens36
#设备名,同样保持一致。
0NB00T=yes
#是否开启
IPADDR=192.168.125.105
#ip地址
NETMASK=255.255.255.0
#子网掩码,另一种写法:PREFIX=24
GATEWAY=12.0.0.1
#网关
DNS1=8.8.8.8
#DNS服务器地址
实验一:双网卡 永久配置
第一步:添加网卡
第二步:查看网卡信息
第三步:编辑配置文件
[root@abc ~]# cd /etc/sysconfig/network-scripts/
[root@abc network-scripts]# cp ifcfg-ens33 ifcfg-ens36 #复制ens33,并命名为ens36
[root@abc network-scripts]# vim ifcfg-ens36
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.125.101 #设置一个未被使用的ip地址,并且与默认网卡不在同一个网段。
NETMASK=255.255.255.0
GATEWAY=192.168.125.2
DNS1=8.8.8.8
DNS2=114.114.114.114
第四步:重启网络 并查看
[root@abc network-scripts]# systemctl restart network
#重启网络
[root@abc network-scripts]# ifconfig ens36 #查看ens36网卡信息
2.12 tcpdump
抓包工具
通式:
tcpdump option proto dir type
命令 选项 协议 数据的方向 抓取的数据类型
2.12.1 option选项
选项 | 含义 |
---|---|
-D | 显示所有可用的列表 |
-i | interface 指定网卡 |
2.12.2 proto 协议
- tcp、udp、icmp
- ipv4 、ipv6
- arp协议
2.12.3 dir 方向
- src 源地址
- dst 目的地址
- src and dst:在源地址和目的地址的区间内。
2.12.4 type 类型
- host 主机
- net 网段
- port 端口
- port range 端口范围
[root@localhost data]#tcpdump -i ens33
输出格式
11:53:55.288476 IP 192.168.91.1.47496 > localhost.localdomain.ssh: Flags [P.], seq 261:313, ack 1688848, win 4106, length 52
#输出格式拆解:
第1列:时分毫秒 11:53:55.288476
第2例:网络协议ip
第3列:发送方IP地址+端口号 ip地址:192.168.91.1 端口号:47496 >表示数据流向
第4列:主机名协议 主机名:localhost.localdomain 协议:ssh
第5列: seq号 ack号 win窗口长度 tcp的标志位 #滑动窗口代表AB双方可以协商,比如协商发送数据包的大小
2.12.5 过滤规则
1、基于ip地址/网段过滤
[root@localhost data]#tcpdump -i ens33 host 192.168.91.101
#只关心 和 192.168.91.101 有关的流量
[root@localhost ~]#tcpdump -i ens33 dst 192.168.91.101
#抓取主机ens33中,目的地址为192.168.91.101 的流量
[root@localhost ~]#tcpdump -i ens33 src 192.168.91.101
#抓取主机ens33中,源地址为192.168.91.101 的流量
2、基于端口过滤
port端口号
[root@localhost ~]#tcpdump -i ens33 port 80 #抓取端口号为80的流量
[root@localhost ~]#tcpdump -i ens33 port 80 -n #抓取端口号为80的流量,并显示端口号。
[root@localhost ~]#tcpdump -i ens33 src port 80 or port 22
#抓取主机ens33中,源 为80或者22的端口号
[root@localhost ~]#tcpdump -i ens33 dst port 80 or port 22
#抓取主机ens33中,目的 为80或者22的端口号
3、基于协议
[root@localhost ~]#tcpdump -i ens33 icmp
#抓取主机ens33中的icmp协议包
[root@localhost ~]#tcpdump -i ens33 tcp
#抓取主机ens33中的tcp协议包
4、指定输出位置(类似标准输出重定向)
tcpdump -i ens33 icmp -w /data/test.cap
#把抓取的数据存放到/data/test.cap文件,可以在抓包软件中进行分析。
示例:
[root@abc ~]# tcpdump -i ens36 icmp and src 10.0.0.6 and dst 10.0.0.7 #多个选项之间必须要加and
#抓取经过ens36网卡的icmp协议包中,地址为10.0.0.6到10.0.0.7之间的流量
2.13 bond 多网卡绑定
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。
bond功能强大,共有七种模式,分别是0-6。其中常用的是0 1 3 6
- 0是轮询模式,流量平分;
- 1是主-备份模式
实验二:bond实验
- 添加网卡
将ens33和ens36 两个网卡,绑定到bond0上。
- 编辑配置文件
- 设置bond0
[root@abc ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0
NAME=bond0 #描述
TYPE=bond #类型是bond
DEVICE=bond0 #网卡名称bond0
BOOTPROTO=none #静态
IPADDR=192.168.125.100 #ip地址,必须与主机同一ip或者在同一网段
PREFIX=8 #子网掩码,等于netmask
GATEWAY=192.168.125.2
DNS1=8.8.8.8
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1" #每100毫秒检测一次主设备是否活着,fail_over_mac=1是永远使用活着网卡的mac地址。
- 设置ens33
[root@abc ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
MASTER=bond0
SLAVE=yes
ONBOOT=yes
- 设置ens36
[root@abc network-scripts]# cp ifcfg-ens33 ifcfg-ens36
#复制33,改名为36
[root@abc network-scripts]# vim ifcfg-ens36 #修改36里的信息
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
MASTER=bond0
SLAVE=yes
ONBOOT=yes
- 重启网络
systemctl restart network
查看bond0状态:
cat /proc/net/bonding/bond0
删除bond0:
ifconfig bond0 down
rmmod bonding
3、总结:网络相关的文件
文件类型 | 文件位置 | 文件作用 |
---|---|---|
网卡文件 | /etc/sysconfig/network-scripts/ifcfg-* | 修改ip地址 dns 网关 获取方式等设置 |
主机名 | /etc/hostname | 永久修改主机名 注意只有第一行生效 |
dns文件 | /etc/resolv.conf | 记录了dns服务的地址 |
路由 | /etc/sysconfig/network-scripts/route-ens33 | 永久记录路由 |
挂载 | /etc/fstab | |
用户 | /etc/passwd | |
密码 | /etc/shadow |