【Linux】【Basis】网络
阅读原文时间:2023年07月13日阅读:1

Linux网络属性配置

计算机网络:

TCP/IP:协议栈(使用)

ISO,OSI:协议栈(学习)

MAC:Media Access Control

48bits:

ICANN:24bits, 2^24

地址块:2^24

网桥(bridge):MAC地址表

静态指定:

动态学习:根据原地址学习;

交换机(switch):多端口网桥;

IP(Internet protocol)地址:网络号+主机号

A<-->B

网络?

主机?

IPv4:32bits

8bits.8bits.8bits.8bits

0-255

0.0.0.0-255.255.255.255

IP地址分类:

A类:

第一段为网络号,后三段为主机号

网络号:

0 000 0000 - 0 111 1111:1-127

网络数量:126,127

每个网络中的主机数量:2^24-2

默认子网掩码:255.0.0.0,/8

用于与IP地址按位进行“与”运算,从而取出其网络地址;

1.3.2.1/255.0.0.0 = 1.0.0.0

1.3.2.1/255.255.0.0= 1.3.0.0

私网地址:10.0.0.0/255.0.0.0

B类:

前两段为网络号,后两段为主机号

网络号:

10 00 0000 - 10 11 1111:128-191

网络数:2^14

每个网络中的主机数量:2^16-2

默认子网掩码:255.255.0.0,/16

私网地址: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,&nbsp; /24

D类:组播

1110 0000 - 1110 1111:224-239

E类:科研

240-255

IPv6:128bits

路由器:router

路由表:

静态指定

动态学习:rip2, ospf

路由条目:

目标地址&nbsp; 下一跳(nexthop)

目标地址的类别:

主机:主机路由

网络:网络路由

0.0.0.0/0.0.0.0:默认路由

OS:多用户,多任务

多任务:多进程

chrome:

QQ:

QQ Music:

通信时,进程的数字标识:

16bits:

0-65535:1-65535

1-1023:固定分配,而且只有管理员有权限启用;

1024-4W:半固定,

4W+:临时;

进程地址:

IP:PORT,&nbsp; socket

总结:

MAC:本地通信;范围:本地局域网;

IP:界定通信主机,源和目标;范围:互联网;

Port:界定进程;范围:主机 ;

将Linux主机接入到网络中:

IP/NETMASK:本地通信

路由(网关):跨网络通信

DNS服务器地址:基于主机名的通信

主DNS服务器地址

备用DNS服务器地址

第三备份DNS服务器地址

配置方式:

静态指定:

命令:

ifcfg家族:

ifconfig:配置IP,NETMASK

route:路由

netstat:状态及统计数据查看

iproute2家族:

ip OBJECT:

addr:地址和掩码;

link:接口

route:路由

ss:状态及统计数据查看

CentOS 7:nm(Network Manager)家族

nmcli:命令行工具

nmtui:text window 工具

注意:

(1) DNS服务器指定

配置文件:/etc/resolv.conf

(2) 本地主机名配置

hostname

配置文件:/etc/sysconfig/network

CentOS 7:hostnamectl

配置文件:

RedHat及相关发行版

/etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME

动态分配:依赖于本地网络中有DHCP服务

DHCP:Dynamic Host Configure Procotol

网络接口命名方式:

传统命名:

以太网:ethX, [0,oo),例如eth0, eth1, ...

PPP网络:pppX, [0,...], 例如,ppp0, ppp1, ...

可预测命名方案(CentOS):

支持多种不同的命名机制:

Fireware, 拓扑结构

(1) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1, eno2, ...

(2) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1, ens2, ...

(3) 如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0, ...

(4) 如果用户显式定义,也可根据MAC地址命名,例如enx122161ab2e10, ...

上述均不可用,则仍使用传统方式命名;

命名格式的组成:

en:ethernet

wl:wlan

ww:wwan

名称类型:

o<index>:集成设备的设备索引号;

s<slot>:扩展槽的索引号;

x<MAC>:基于MAC地址的命名;

p<bus>s<slot>:基于总线及槽的拓扑结构进行命名;

回顾:计算机网络基础、Linux网络属性配置

TCP/IP协议栈:物理层、互联网层、传输层、应用层

互联网层:IP

传输层:TCP, UDP

应用层:http, https, ftp, ldap, ...

链接路层:以太网帧

互联网层:IP报文

以太网帧:MTU(1500)

Linux网络属性配置:命令,配置文件;

Linux网络属性配置(2)

ifcfg命令家族: ifconfig, route, netstat

ifconfig命令:接口及地址查看和管理

ifconfig&nbsp; [INTERFACE]

# ifconfig -a:显示所有接口,包括inactive状态的接口;

ifconfig interface [aftype] options | address ...

# ifconfig&nbsp; IFACE&nbsp; IP/MASK&nbsp; [up|down]

# ifconfig&nbsp; IFACE&nbsp; IP&nbsp; netmask&nbsp; NETMASK

options:

[-]promisc

注意:立即送往内核中的TCP/IP协议栈,并生效;

管理IPv6地址:

add addr/prefixlen

del&nbsp; addr/prefixlen

route命令:路由查看及管理

路由条目类型:

主机路由:目标地址为单个IP;

网络路由:目标地址为IP网络;

默认路由:目标为任意网络,0.0.0.0/0.0.0.0

查看:

# route&nbsp; -n

添加:

route&nbsp; add&nbsp; [-net|-host]&nbsp; target&nbsp; [netmask&nbsp; Nm]&nbsp; [gw GW]&nbsp; [[dev] If]

示例:route add -net&nbsp; 10.0.0.0/8&nbsp; gw&nbsp; 192.168.10.1&nbsp; dev&nbsp; eth1

route add&nbsp; -net&nbsp; 0.0.0.0/0.0.0.0&nbsp; gw 192.168.10.1

route add&nbsp; default&nbsp; gw 192.168.10.1

删除:

route&nbsp; del&nbsp; [-net|-host] target&nbsp; [gw Gw]&nbsp; [netmask Nm]&nbsp; [[dev] If]

示例: route&nbsp; del&nbsp; -net&nbsp; 10.0.0.0/8&nbsp; gw 192.168.10.1

route&nbsp; del&nbsp; default

netstat命令:

Print network connections, routing tables, interface statistics, masquerade connections, and multicast&nbsp; memberships

显示路由表:netstat&nbsp; -rn

-r:显示内核路由表

-n:数字格式

显示网络连接:

netstat&nbsp; [--tcp|-t]&nbsp; [--udp|-u]&nbsp; [--udplite|-U]&nbsp; [--sctp|-S]&nbsp; [--raw|-w]&nbsp; [--listening|-l]&nbsp; [--all|-a]&nbsp; [--numeric|-n]&nbsp;&nbsp; [--extend|-e[--extend|-e]]&nbsp; [--program|-p]

-t:TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine);

-u:UDP相关的连接

-w:raw socket相关的连接

-l:处于监听状态的连接

-a:所有状态

-n:以数字格式显示IP和Port;

-e:扩展格式

-p:显示相关的进程及PID;

常用组合:

-tan,&nbsp; -uan,&nbsp; -tnl,&nbsp; -unl,&nbsp; -tunlp

传输层协议:

tcp:面向连接的协议;通信开始之前,要建立一个虚链路;通信完成后还要拆除连接;

udp:无连接的协议;直接发送数据报文;

显示接口的统计数据:

netstat&nbsp;&nbsp;&nbsp; {--interfaces|-I|-i}&nbsp;&nbsp;&nbsp; [iface]&nbsp;&nbsp; [--all|-a]&nbsp;&nbsp; [--extend|-e]&nbsp;&nbsp; [--verbose|-v]&nbsp;&nbsp; [--program|-p]&nbsp; [--numeric|-n]

所有接口:

netstat&nbsp; -i

指定接口:

netstat&nbsp; -I<IFace>

ifup/ifdown命令:

注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置;

配置主机名:

hostname命令:

查看:hostname

配置:hostname&nbsp; HOSTNAME

当前系统有效,重启后无效;

hostnamectl命令(CentOS 7):

hostnamectl&nbsp; status:显示当前主机名信息;

hostnamectl&nbsp; set-hostname:设定主机名,永久有效;

配置文件:/etc/sysconfig/network

HOSTNAME=<HOSTNAME>

注意:此方法的设置不会立即生效; 但以后会一直有效;

配置DNS服务器指向:

配置文件:/etc/resolv.conf

nameserver&nbsp;&nbsp; DNS_SERVER_IP

如何测试(host/nslookup/dig):

# dig&nbsp; -t&nbsp; A&nbsp; FQDN

FQDN --> IP

# dig&nbsp; -x&nbsp; IP

IP --> FQDN

iproute家族:

ip命令:

show / manipulate routing, devices, policy routing and tunnels

ip [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT := { link | addr | route | netns&nbsp; }

注意: OBJECT可简写,各OBJECT的子命令也可简写;

ip&nbsp; OBJECT:

ip link: network device configuration

ip&nbsp; link&nbsp; set - change device attributes

dev NAME (default):指明要管理的设备,dev关键字可省略;

up和down:

multicast on或multicast off:启用或禁用多播功能;

name NAME:重命名接口

mtu NUMBER:设置MTU的大小,默认为1500;

netns PID:ns为namespace,用于将接口移动到指定的网络名称空间;

ip&nbsp; link&nbsp; show&nbsp; - display device attributes

ip&nbsp; link&nbsp; help -&nbsp; 显示简要使用帮助;

ip netns:&nbsp; - manage network namespaces.

ip&nbsp; netns&nbsp; list:列出所有的netns

ip&nbsp; netns&nbsp; add&nbsp; NAME:创建指定的netns

ip&nbsp; netns&nbsp; del&nbsp; NAME:删除指定的netns

ip&nbsp; netns&nbsp;&nbsp; exec&nbsp; NAME&nbsp; COMMAND:在指定的netns中运行命令

ip address - protocol address management.

ip address add - add new protocol address

ip&nbsp; addr&nbsp; add&nbsp; IFADDR&nbsp; dev&nbsp; IFACE

[label NAME]:为额外添加的地址指明接口别名;

[broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到;

[scope SCOPE_VALUE]:

global:全局可用;

link:接口可用;

host:仅本机可用;

ip address delete - delete protocol address

ip addr&nbsp; delete&nbsp; IFADDR&nbsp; dev&nbsp; IFACE

ip address show - look at protocol addresses

ip&nbsp; addr&nbsp;&nbsp; list&nbsp; [IFACE]:显示接口的地址;

ip address flush - flush protocol addresses

ip&nbsp; addr&nbsp; flush&nbsp; dev&nbsp; IFACE

ip route - routing table management

ip route add - add new route

ip route change - change route

ip route replace - change or add new one

ip&nbsp; route&nbsp;&nbsp; add&nbsp; TYPE PREFIX&nbsp; via GW&nbsp; [dev&nbsp; IFACE]&nbsp; [src SOURCE_IP]

示例:

# ip route add 192.168.0.0/24&nbsp; via 10.0.0.1&nbsp; dev eth1 src&nbsp; 10.0.20.100

# ip&nbsp; route&nbsp; add default&nbsp; via&nbsp; GW

ip route delete - delete route

ip&nbsp; route&nbsp; del&nbsp; TYPE PRIFIX

示例:

# ip&nbsp; route delete&nbsp; 192.168.1.0/24

ip route show - list routes

TYPE PRIFIX

ip route flush - flush routing tables

TYPE&nbsp; PRIFIX

ip route get - get a single route

ip&nbsp; route&nbsp; get&nbsp; TYPE PRIFIX

示例:ip route&nbsp; get&nbsp; 192.168.0.0/24

ss命令:

ss&nbsp; [options]&nbsp; [ FILTER ]

选项:

-t:TCP协议的相关连接

-u:UDP相关的连接

-w:raw socket相关的连接

-l:监听状态的连接

-a:所有状态的连接

-n:数字格式

-p:相关的程序及其PID

-e:扩展格式信息

-m:内存用量

-o:计时器信息

FILTER := [ state TCP-STATE ]&nbsp; [ 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&nbsp;&nbsp; -tan&nbsp;&nbsp;&nbsp; '(&nbsp; dport = :22 or sport = :22&nbsp; )'

~]# ss&nbsp; -tan&nbsp; state&nbsp; ESTABLISHED

配置文件:

IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE

IFACE:接口名称;

路由的相关配置文件:/etc/sysconfig/networkj-scripts/route-IFACE

配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)

ifcfg-IFACE配置文件参数:

DEVICE:此配置文件对应的设备的名称;

ONBOOT:在系统引导过程中,是否激活此接口;

UUID:此设备的惟一标识;

IPV6INIT:是否初始化IPv6;

BOOTPROTO:激活此接口时使用什么协议来配置接口属性,常用的有dhcp、bootp、static、none;

TYPE:接口类型,常见的有Ethernet, Bridge;

DNS1:第一DNS服务器指向;

DNS2:备用DNS服务器指向;

DOMAIN:DNS搜索域;

IPADDR: IP地址;

NETMASK:子网掩码;CentOS 7支持使用PREFIX以长度方式指明子网掩码;

GATEWAY:默认网关;

USERCTL:是否允许普通用户控制此设备;

PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向覆盖本地手动指定的DNS服务器指向;默认为允许;

HWADDR:设备的MAC地址;

NM_CONTROLLED:是否使用NetworkManager服务来控制接口;

网络服务:

network

NetworkManager

管理网络服务:

CentOS 6:&nbsp; service&nbsp; SERVICE&nbsp; {start|stop|restart|status}

CentOS 7:systemctl&nbsp; {start|stop|restart|status}&nbsp; SERVICE[.service]

配置文件修改之后,如果要生效,需要重启网络服务;

CentOS 6:# service&nbsp; network&nbsp; restart

CentOS 7:# systemctl&nbsp; restart&nbsp; network.service

用到非默认网关路由:/etc/sysconfig/network-scripts/route-IFACE

支持两种配置方式,但不可混用;

(1) 每行一个路由条目:

TARGET&nbsp; via&nbsp; GW

(2) 每三行一个路由条目:

ADDRESS#=TARGET

NETMASK#=MASK

GATEWAY#=NEXTHOP

给接口配置多个地址:

ip addr之外,ifconfig或配置文件都可以;

(1) ifconfig&nbsp; IFACE_LABEL&nbsp; IPADDR/NETMASK

IFACE_LABEL: eth0:0, eth0:1, ...

(2) 为别名添加配置文件;

DEVICE=IFACE_LABEL

BOOTPROTO:网上别名不支持动态获取地址;

static, none

nmcli命令:

nmcli&nbsp; [ OPTIONS ] OBJECT { COMMAND | help }

device - show and manage network interfaces

COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }

connection - start, stop, and manage network connections

COMMAND := { show | up | down | add | edit | modify | delete | reload | load }

modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>

如何修改IP地址等属性:

# nmcli&nbsp; conn&nbsp; modify&nbsp; IFACE&nbsp; [+|-]setting.property&nbsp; value

ipv4.address

ipv4.gateway

ipv4.dns1

ipv4.method

manual

博客作业:上述所有内容;

ifcfg, ip/ss,配置文件

课外作业:nmap, ncat, tcpdump命令;

网络客户端工具:

ping/lftp/ftp/lftpget/wget等;

ping命令:

send ICMP ECHO_REQUEST to network hosts

ICMP:Internet Control Message Protocol

ping&nbsp; [OPTION]&nbsp; destination

-c #:发送的ping包个数;

-w #:ping命令超时时长;

-W #:一次ping操作中,等待对方响应的超时时长;

-s #:指明ping包报文大小;

hping命令: (package: hping3)

send (almost) arbitrary TCP/IP packets to network hosts

--fast

--faster

--flood

-i uX

traceroute命令:

- print the route packets trace to network host

跟踪从源主机到目标主机之间经过的网关;

ftp命令:

ftp: File Transfer Protocol

ftp服务命令行客户端工具;

lftp命令:

lftp&nbsp; [-p port]&nbsp; [-u user[,pass]] [site]

get, mget

put, mput

rm, mrm

lftpget命令:

lftpget [-c] [-d] [-v] URL [URL...]

-c:继续此前的下载;

wget命令:

The non-interactive network downloader.

wget [option]... [URL]...

-b:在后台执行下载操作;

-q:静默模式,不显示下载进度;

-O file:下载的文件的保存位置;

-c:续传;

--limit-rate=amount:以指定的速率传输文件;