概述:
网络是可以实现信息传输、接收、共享的虚拟平台,通过它可以把各个点、面、体的信息联系到一起,从而实现这些资源的共享。信息的传输需要通过TCP/IP协议来完成,IP地址是由网络号+主机号来标识的,主要分为五个类别:
A类:第一段为网络号:后三段为主机号;
网络号: 0 000 0000-0 111 1111 :1-127
每个网络中的主机数量:2^24-2(全0与全1)0网络地址1广播地址
默认子网掩码:255.0.0.0
用于与IP地址按位进行“与”运算,从而取出其网络地址
私网地址:10.0.0.0/255.0.0.0
B类:前两段为网络号,后两段为主机号
网络号: 10 00 0000 - 10 11 1111:128-191
每个网络中的主机数量:2^16-2
默认子网掩码:255.255.0.0
私网地址:172.16.0.0-172.31.0.0
C类:前三段为网络号,最后一段为主机号
网络号: 110 0 0000-110 1 1111 :192-223
网络数:2^21
每个网络中的主机数量:2^8-2
默认网掩码255.255.255.0
私网地址:192.168.0.0-192.168.255.255
D:组播 11100000-1110 1111:224-239
E:保留 11110000-1111 1111:240-255
Linux系统是一个多用户,多任务的系统,每个任务对应一个进程,系统执行多任务时就会启动多进程;所以计算机间的通信主要是进程之间的通信,进程是由数字来进行标识(1-65535),进程分为以下三类:
1-1023:固定分配,而且只有管理员有权限启动;
1024-4W: 半固定,
4W+: 临时;
网络的工作范围:
MAC: 本地通信;范围:本地局域网;
IP:界定通信主机,源和目标;范围:互联网;
Port: 界定进程,范围:单台主机;
Linux主机接入网络中需要配置:IP、NETMASK、GATEWAY、DNS等接口的地址;
配置方式主要分为静态分配、动态分配;
静态分配
命令包括
1、Ifcfg
Ifconfig:配置IP,NETMASK
Route: 路由
Netstat: 状态及统计数据查看工具;
2、iproute3
addr: 地址和掩码配置;
link: 网络接口本身;
route: 路由;
ss: 状态及统计数据查看工具;
3、CentOS 7:nm(Network Manager)家族:
nmcli: 命令行工具
nmtui: 文本窗口工具;text window工具;
4、配置文件:适用于 RedHat及相关发行版
/etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME
动态分配:依赖于本地网络中有DHCP服务器,DHCP通过广播的方式为加入的主机按租期进行动态分发地址;
网络接口命名方式:
传统命名:
以太网:exhX,[0-oo],例如ech0,eth1...
ppp网络:pppX,[0,...],例如,ppp0,ppp1...
可预测命名方案(CentOS 7):
支持多种不同的命名机制:
Fireware,拓扑结构
注:(1) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1,eno2,...
(2) 如果Fireware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1,ens2,...
(3) 如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2so,...
(4) 如果用户显式定义,也可根据MAC地址命名,例如enx122161ab2w10,...
上述均不可用,则仍使用传统方式命名;
命名格式的组成:
en: ethernet
wl: wlan
ww: wwan
名称的类型:
o<index>: 集成设备的设备索引号;
s<slot>: 扩展槽的索引号;
x<MAC>: 基于MAC地址的命名;
p<bus>s<slot>: 基于总线及槽的拓扑结构进行命名;
Linux网络命令的使用:
1、ifcfg
ifconfig [INTERFACE]
# ifconfig -a:显示所有接口,包括inactive状态的接口;
ifconfig interface [aftype] options |address...
# ifconfigIFACE IP/MASK [up|down]
# ifconfigIFACE IP netmask NETMASK
例:ifconfig eth0192.168.10.100/24 up
ifconfig eth0 192.168.10.101 netmask255.255.255.0
options:
[-]promisc: 启用或禁用混杂模式
例:ifconfig eth0 promisc 表示启用混杂模式
ifconfig eth0 –promisc 表示禁用混杂模式
route命令:
路由条目类型:
主机路由:目标地址为单个IP;
网络路由:目标地址为IP网络;
默认路由:目标为任意主机,0.0.0.0/0.0.0.0
查看:
# route -n
添加:
route add [-net|-host] target [netmask Nm][gwGW][[dev]if]
例:route add -net10.0.0.0/8 gw 192.168.10.1 dev eth0
或 route add -net0.0.0.0/0.0.0.0 gw 192.168.10.1
删除:
route del [-net|-host] target [netmask Nm][gwGW][[deev]if]
例:route del -net10.0.0.0/8
或route del -net 10.0.0.0/8 gw 192.168.10.1
netstat命令:
显示路由表:
-r: 显示内核路由表;
-n: 显示数字格式;
显示网络连接:
netstat[--tcp|-t][--udp|-u][--sctp|-S][--raw|-w][--listening|-l][--all|-a][--numeric|-n][--extend|-e[--extend|-e]][--program|-p]
-t: TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine);
-u: UDP相关的连接
-w: raw socket相关的连接
-l: 牌监听状态的连接
-a: 所有状态
-n:以数字格式显示IP和port
-e: 扩展格式
-p:显示相关的进程及PID
注:传输层协议:
tcp: 面向连接的协议:通信开始之前,要建立一个虚链路;通信完成后还要拆除连接;
udp: 无连接的协议:直接发送数据报文,无需建立虚链路;
显示接口的统计数据:
netstat {--interfaces|-I|-i} [--all|-a] [--extend|-e][--verbose|-v] [--program|-p][--numeric|-n]
显示所有接口:
netstat -i
指定接口:
netstat-I<IFace>
例:netstat -Ieth0
ifup/ifdown命令:
注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置;
例:ifup eth0
配置主机名:
hostname命令:
查看:hostname
配置:hostname HOSTNAME
当前系统有效,重启后无效;
CentOS 7:
hostnamectl命令
hostnamectl status显示当前主机名信息;
hostnamectl set-hostname: 设定主机名,永久有效;
配置文件:/etc/sysconfig/network
HOSTNAME=<HOSTNAME>
注意:此方法的设置不会立即生效;但以后会一直有效;
配置DNS服务器指向:
配置文件:/etc/resolv.conf
nameserver DNS_SERVER_IP(最多可以有三个)
2、iproute
ip [ OPTIONS ] OBJECT { COMMAND | help }
ip link: 网络设备配置
ip link set:改变网络设备属性;
dev NAME (default): 指明要管理的设备,dev关键字可省略;
up and down;
例:ip link set eth0 down
multicast on or multicast off:启用或禁用多播功能;
例:ip link set multicast on
name NAME: 重命名;
例:ip link set eth0 down
ip link set eth0 name eno666
mtu NUMBER: 设置MTU的大小,默认为1500;
netns PID: ns为namespace,用于将接口移动到指定的网络名称空间;
例:ip netns help 只支持CentOS 7
删除:
ip netns del mynet
ip link show:显示网络设备属性;
例:ip link show/ ip link list
ip netns:
ip netns list: 列出所有netns
ip netns add NAME: 创建指定的netns
ip netns del NAME: 删除指定的netns
ip netns exec NAME COMMAND: 在指定的netns中运行命令
ip address:
ip address add:
ip addr add IFADDR dev IFACE
例:ip addr add 192.168.10.100/24 dev eth0
[label NAME]: 为额外添加的地址指明接口别名;
例:ip addr add 10.1.1.10/8 dev eth0 label eth0:0
[broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到;
[scope SCOPE_VALUE]:
global: 全局可用;
link: 接口可用;
host: 仅本机可用;
ip address del:
ip addr delete IFADDR dev IFACE
例:ip addr del 10.0.10.100/8 dev eth0
ip address show:
ip addr list[IFACE]: 仅显示指定接口的地址;
ip address flush:
ip addr flush dev IFACE
例:ip addr flush dev eth0
ip route
ip route add
ip route change
ip route replace
ip route add TYPE FREFIX via GW [dev IFACE] [src SOURCE_IP]
例:ip route list
ip route add 19.168.0.0/24 via 10.0.0.1 dev eth0 src 10.0.20.100
ip route add default via 172.16.0.1 dev eth0
ip route add default via GW
ip route delete
ip route del TYPE PREFIX
例:ip route delete 192.168.1.0/24
ip route show
例:ip route show src 172.16.100.6
ip route flush
例:ip route flush 10/8
ip route get
ip route get TYPE PREFIX
例:ip route get 192.168.0.0/24
ss命令:
ss [options] [ FILTER ]
选项:
-t: TCP协议的相关连接
-u: UDP相关的连接
-w: raw socket相关的连接
-l: 监听状态的连接
-a:所有状态的连接
-n: 数字格式
-p: 相关的程序及其PID
-e: 扩展格式信息
-m: 内存用量
-o: 计时器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态
TCP FSM:
LISTEN:
ESTABLISEHD:
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
EXPRESSION:
dport=
sport=
例:‘(dport = :22 or sport = :22)‘
ss -tan ‘( dport = :22 or sport = :22 )‘
ss -tan state ESTABLISHED
配置文件:
IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
IFACE: 接口名称;
路由的相关配置文件:/etc/sysconfig/network-scripts/route-IFACE
注:配置文件修改之后,如果要生效,需要重启网络服务;
给接口配置多个地址:
ip addr之外,ifconfig或配置文件都可以;
(1) ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL: eth0:0,eth0:1,...
例:ifconfig eno33554984:0 192.168.20.100/24
(2) 为别名添加配置文件;
DEVICE=IFACE_LABEL
BOOTPROTO: 网卡别名不支持动态获取地址;可使用:static, none标识;