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