1、IP地址
1.1、IPV4
IPV4地址是一个32位的地址,以点分隔成4组,每组以8位10进制数字表示
IPV4地址分类:
-
A类:1-127
-
B类:128-191
-
C类:192-223
-
D类:224-239(组播地址)
-
E类:240-254
私有地址:
-
A类:10.0.0.0/8
-
B类:172.16.0.0/16-172.31.0.0/16
-
C类:192.168.0.0/24-192.168.255.0/24
1.2、IPV6
因为当前使用的IPV4快用完了,所以出现了IPV6
-
IPV6地址是一个128位的地址,以冒号分隔成8组,每组4个十六进程数字表示
-
如果每组的最前面是0,省略不写出来
-
如果全是0,用一个0表示
-
如果相连的多个组全都是0,则用两个冒号简写
IPV6怎么表示端口呢?
[ipv6地址]:80
#本地回环IP段,和IPV4的127.0.0.1/8一个意思
::1/128
#所有网络地址,和ipv4的0.0.0.0一个意思
::
#默认路由,和ipv4的0.0.0.0/0一个意思
::/0
2、网络工具包
-
net-tools
包含:ifconfig、route等工具
目前已经不再维护,不建议使用
-
iproute
包含:ip等工具
建议使用
3、net-tools工具箱
3.1、ifconfig命令
#查看所有接口信息
ifconfig
#只查看eth0接口的信息
ifconfig eth0
#临时给eth0接口配置一个IP
#注意,命令配置的IP,只会临时生效
ifconfig eth0 192.168.1.100/24
#让一接口处于混杂模式
ifconfig -promisc eth0
3.2、route命令
#查看路由
route -n
#添加路由,到192.168.2.0/24这个网络,网关是192.168.1.1,并指定从本地的eth0接口出
route add -net 192.168.2.0/24 gw 192.168.1.1 dev eth0
#设置默认路由
route add default gw 192.168.1.1
#删除路由
route del -net 192.168.2.0/24
#删除默认路由
route del default
4、iproute工具箱
4.1、ip addr
#查看所有网卡的网络配置
ip addr show
#只查看eth0网卡
ip addr show eth0
#临时为eth0添加|删除一个IP
ip addr add|del 192.168.1.100/24 dev eth0
#临时添加一个IP到一个接口的别名
#一般用来添加子接口
ip addr add 192.168.1.00/24 dev eth0 label "eth0:0"
4.2、ip link
#查看接口信息
ip link show up
#只查看已启用的接口的状态
ip link show up
#临时禁用|启用一个接口
ip link set eth0 down|up
#开启|关闭接口的混杂模式
ip link set eth0 promisc on|off
#设置接口的MTU值
ip link set eth0 mtu 1400
4.3、ip route
#查看当前路由
ip route list
#添加路由
ip route add 192.168.2.0/24 via 192.168.1.1
#查看路由
ip route show
#删除路由
ip route del 192.168.2.0/24
#设置默认路由
ip route add default via 192.168.1.1
4.4、统计
#统计一个网卡,收和发的数据包
ip -s link show eth0
4.5、其它选项
scope,指定IP地址的作用域
-
global,全局可用,默认
-
link,仅链接可用
-
host,本机可用
所谓作用域,比如,主机有两张网卡A和B,
-
IP都作用于global,不管和哪个接口直连的网络,都可ping通当前主机上的另一个网卡上的IP
-
IP都作用于link,表示只有和自己直连的网络,才可以ping通自己。
-
ip都作用于host,表示只能本主机内部有效。
5、配置文件
5.1、路由
#route开头的文件是路由配置文件
#默认没有路由配置文件,需要自己创建
vim /etc/sysconfig/network-scripts/route-eth0
192.168.2.0/24 via 192.168.1.1
#重启服务
systemctl restart network
5.2、IPV4
-
ifcfg开头的文件,是接口配置文件
-
一个接口可以有多个配置文件,但是某个固定时刻,只能有一个处于激活状态
vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR=172.25.254.147
PREFIX=24
GATEWAY=172.25.254.2
DNS1=114.114.114
NAME="eno16777736"
DEVICE="eno16777736"
ONBOOT="yes"
#USERCTL,是否允许普通用户控制此设备
#DEFROUTE,是否允许本地的网关作为默认路由
#PEERDNS,是否允许从DHCP获取的DNS,覆盖到/etc/resolv.conf文件中。
#PEERROUTES,是否允许从DHCP获取的网关,作为本地默认路由
#IPV4_FAILURE_FATAL,如果IPV4配置出错,是否禁用本地网卡设备
#IPV6_FAILURE_FATAL,如果IPV6配置出错,是否禁用本地网卡设备
5.3、IPV6
vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
ONBOOT=yes
TYPE=Ethernet
IPV6ADDR=ip/掩码
IPV6_DEFAULTGW=ip
IPV6INIT=yes
#如果不想启动IPV6,将这里改为no
#注意,一定不加"",否则不生效
IPV6_AUTOCONF=no
6、测试网络
ping
#-c,指定ping多少次
ping -c
#指定接口去ping
ping -I eth0
#跟踪路由
traceroute
#ping ipv6地址
ping6
#查看ipv6的路由
ip -6 route
7、hostname
#更改当前主机名,并且永久生效(写到/etc/hostname)
hostnamectl set-hostname server0.example.com
8、NetworkManager
8.1、查看连接文件
#查看当前已经存在的连接文件,包含所有启用的,和没有启用的文件。
#DEVICE表示这个连接文件关联了哪个设备,并且处于激活状态
nmcli connection show
#查看处于激活状态的连接文件
nmcli connection show --active
8.2、查看设备
nmcli device status
8.3、重新加载配置文件
nmcli connection reload
8.4、新建连接文件
#为eth0创建一个连接文件,删除,直接删除文件就可
#如果给主机新加一张网卡,需要用这个命令给新网卡创建一个连接文件,不会自动生成
nmcli connection add type ehternet con-name name0 ifname eth0
#激活这个连接文件,只有这个连接文件激活以后,才能通过nmcli connection show命令查看到这个连接文件关联的是哪个设备
nmcli connection up name0
#查看name0这个连接文件的详细信息,这里就可以看到这个连接文件关联的是哪个设备
nmcli connection show name0
8.5、通过MAC地址创建连接文件
(可以用这个方法来改设备名,前提:先把该设备的原连接文件删掉)
#新建一个网卡设备,用MAC地址来创建,并创建连接文件,叫name0,并给这个设备定义一个名字,叫eth0
nmcli connection add type ethernet con-name name0 \
ifname eth0 mac aa:dd:cc:bb
8.6、修改配置
#指定手动配置
nmcli connection modify eth0 ipv4.method manual
#配置IPv4
nmcli connection modify eth0 ipv4.addresses 10.0.0.10/24
#添加一个ipv4
nmcli connection modify eth0 +ipv4.addresses 192.168.0.59/24
#删除一个ipv4
nmcli connection modify eth0 -ipv4.addresses 192.168.0.59/24
#添加DNS
nmcli connection modify eth0 ipv4.dns 114.114.114.114
#删除DNS
nmcli connection modify eth0 -ipv4.dns 114.114.114.114
#添加一个网关
nmcli connection modify eth0 ipv4.gateway 192.168.0.2
#同时指定DNS,网关
nmcli connection modify eth0 \
ipv4.dns 114.114.114.114 ipv4.gateway 192.168.0.2
8.7、连接文件已经存在呢?
直接去修改这个连接文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes #表示开机的时候,是否激活这个连接文件
BOOTPROTO=static或none
IPADDR1=10.0.0.1
PREFIX1=24
GATEWAY1=10.0.0.254
IPADDR2=10.0.1.1
PREFIX2=24
GATEWAY2=10.0.1.254
DNS1=8.8.8.8 #这里的DNS1和前面的IPADDR1没任何关系,针对的是整个网络
DNS2=8.8.4.4
注意:
-
如果一个网卡有两个连接文件,不要让两个文件的ONBOOT都等于yes
8.8、DNS
-
配好连接文件,重启网络后,会把连接文件里面的DNS信息写入到/etc/resolv.conf
-
永久生效的信息只会从连接文件中复制过来,手动输入的,也可以生效,但是一重启网络,手写的就会被覆盖
-
如果有两张网卡,都配了DNS,按网卡启动顺序,会把两张网卡上配的DNS全部写到/etc/resolve.conf这个文件,但只有前3个生效
8.9、网关
-
如果一个网卡设了多个IP,IPADDR1的网关成为默认网关,可route -n查看
-
如果一台机有两个网卡,只有一个生效。
8.10、子接口设置
nmcli connection add type ethernet con-name eth0:0 ifname eth0:0
vim /etc/sysconfig/network-scripts/ifcfg-eth0:0
ONPARENT=yes
#添加这一行到连接文件,表示随父接口启动
reboot
8.11、图形化设置IP
nm-connection-editor
9、netstat命令
netstat,查看网络状态命令
选项:
-
-t,tcp协议
-
-u,udp协议
-
-l,查看处于监听状态的连接
-
-a,查看所有状态的连接
-
-n,以数字显示ip和端口
-
-p,显示相关进程和PID
-
-r,查看路由
常用组合:
-tan,-uan,-tnl,-tul
#查看所有协议的所有状态
netstat -tuanp
#查看路由
netstat -rn
#查看所有接口的统计信息
netstat -i
10、ss命令
和netstat命令一样,查看网络状态,但在连接数比较多的场景,ss比netstat效率高
#查看所有tcp协议状态
ss -tanp
11、tcp协议状态
-
LISTEN,监听
-
ESTABLISHED,已建立的连接
-
FIN_WAIT_1
-
FIN_WAIT_2
-
SYN_SENT
-
SYN_RECV
-
CLOSED
11.1、三次握手
1.client发送连接请求报文
2.server接收到后,向client回复ACK报文,并为这次连接分配置资源
3.client收到后,也向server发送ACK报文,并分配资源,这样,TCP连接就建立了
11.2、四次挥手
注意:中断连接可是client发起,也可以是server发起
下面以client发起中断为例:
1.client发起中断连接请求,也就是发送FIN报文,告诉server,我没有数据要发送了。
2.server收到请求后,但当前,可能还有数据没有处理完。所以先发送一个ACK给客户端,并告诉client,我还没准备好,请等我消息。此时,client处于等待状态
3.server确定数据已经处理完,向client发送FIN报文,告诉client,我这边处理完了,可以断开连接了
4.client收到报文后,发送一个ACK给server,server收到ACK后,就断开连接了。而client会等待2毫秒,期间如果没有再收到server回复,表示server已经正常关闭了,那我也可以关闭了。
12、网卡命名机制
systemd对网络设备的命名方式:
1.如果firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测,则根据此索引进行命名,如:eno1
2.如果firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如:ens1
3.如果硬件接口的物理位置信息可用,则根据此信息进行命名,如,enp2s1
4.如果用户显示启用,也可根据mac地址进行命名
5.如果上述都不可用时,则使用传统命名方式,如,eth0
名称组成格式:
-
en,表示ethernet
-
wl,表示wlan
类型:
-
o<index>,集成设备的设备索引号
-
s<slot>,扩展槽的索引号
-
x<mac>,基于mac地址的命名
-
p<bus>s<slot>,基于物理位置,如,哪个PCI总线上的哪个插槽。
注意:
rhel6使用传统方式,可通过修改udev配置文件更改名称
1. vim /etc/udev/rules.d/70-persistent-net.rules
#更改网卡配置
2.modprobe -r e1000
#卸载网卡驱动
3.modprobe e1000
#装载网卡驱动
rhel7回归传统命名机制方法:
vim /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0 rhgb quiet"
grub2-mkconfig -o /etc/grub2.cfg
reboot