3.17 Linux 网络配置

1、网卡命令规则

服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的。Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序。

为解决这类问题,dell开发了biosdevname方案。

systemd v197版本中将dell的方案作了进一步的一般化拓展。

目前的Centos既支持dell的biosdevname,也支持systemd的方案。

a. CentOS 7 中的命名策略

Scheme 1: 如果从BIOS中能够取到可用的,板载网卡的索引号,则使用这个索引号命名,例如: eno1,如不能 则尝试Scheme 2

Scheme 2: 如果从BIOS中能够取到可以用的,网卡所在的PCI-E热插拔插槽(注:pci槽位号)的索引号,则使用这个索引号命名,例如: ens1,如不能则尝试Scheme 3

Scheme 3:如果能拿到设备所连接的物理位置(PCI总线号+槽位号?)信息,则使用这个信息命名,例如:enp2s0,如不能则尝试Scheme 5

Scheme 5:传统的kernel命名方法,例如: eth0,这种命名方法的结果不可预知的,即可能第二块网卡对应eth0,第一块网卡对应eth1。

Scheme 4: 使用网卡的MAC地址来命名,这个方法一般不使用。

b. net.ifnames 的命名规范

net.ifnames的命名规范为: 设备类型+设备位置+数字

设备类型

实际例子

en 表示Ethernet

eno1 板载网卡,集成设备的设备索引号

enp0s2 独立网卡,pci网卡

ens33 热插拔网卡,usb 之类,扩展槽的索引号,pci网卡

enx78e7d1ea46da pci网卡

wl 表示WLAN

wlp3s0 PCI无线网卡

wlp0s2f1u4u1 连接在USB Hub上的无线网卡

ww 表示无线广域网WWAN

wwp0s29f7u2i2 4G modem

c. biosdevname 的命名规范
  • em1 板载网卡
  • p3p4 pci网卡
  • p3p4_1 虚拟网卡

2、网络信息查看
a. ifconfig 命令
  • 描述:用来配置网络或查看当前网络接口的状态。
  • 语法:ifconfig [网卡名]
# 安装 ifconfig
yum -y install net-tools

# 查看活动的网络接口设备
ifconfig

# 查看指定的网络接口信息
ifconfig ens33

3.17 Linux 网络配置_第1张图片

  • 第一行: 网卡开启状态、网线处理连接状态、支持组播、最大传输单元大小为1500字节
  • 第二行: 该网卡的IP地址,子网掩码,广播地址
  • 第三行: IPV6的配置信息
  • 第四行: 网卡MAC地址,ether连接类型为以太网,txqueuelen 1000 传输队列的长度
  • 第五六行:网卡接收数据包的统计信息和接收错误的统计信息
  • 第七八行:网卡发送数据包的统计信息和发送错误的统计信息
# 临时关闭某个网卡
ifconfig lo down

# 临时打开某个网卡
ifconfig lo up
b. route 命令
  • 描述:查看和设置路由表条目。
  • 语法:route [选项]

-n 以数字形式显示路由记录中的地址信息

# 查看当前主机的路由表信息
route

Destination

目标网络或目标主机

Gateway

网关地址,如果没有就显示星号

Genmask

子网掩码

Metric

距离、跳数

Ref

此路由的引用数(在Linux kernel中未使用) 不用管,恒为0

Use

该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量

Iface

网络接口名

Flags:路由标志

  • U (route is up): 该路由是启动的
  • H (target is a host):目标是一部主机 (IP) 而非网域
  • G (use gateway): 需要透过外部的主机 (gateway) 来转递封包
  • R (reinstate route for dynamic routing):使用动态路由时,恢复路由资讯的标志
  • D (dynamically installed by daemon or redirect)已由服务或转port功能设定为动态路由
  • M (modified from routing daemon or redirect):路由已经被修改了
  • ! (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)

c. ip 命令
  • 描述:用来配置网络或查看当前网络接口的状态。
  • 语法:ip [子命令] ……

addr

link

route

# 查看网卡ip信息
ip addr

# 查看指定网卡网络信息
ip addr show dev ens33

# 关闭网卡
ip link set lo down

# 开启网卡
ip link set lo up
d. netstat 命令
  • 描述:查看操作系统的网络连接状态、路由表、接口统计等信息
  • 语法:netstat [选项]

-a: 显示当前主机中所有连接的网络连接信息

-n: 以数字的形式显示相关的主机地址、端口等信息

-r: 显示Routing Table;

-t: 显示TCP传输协议的连线状况;

-u: 显示UDP传输协议的连线状况;

-l : 仅列出有在 Listen (监听) 的服务状态

-p: 显示与网络连接相关的进程号、进程名称信息

-x: 查看UNIX类型的连接

netstat | more

3.17 Linux 网络配置_第2张图片

Active Internet connections 有源TCP连接

  • Proto:协议名(tcp协议或udp协议)
  • Recv-Q:网络接收队列。表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击;
  • Send-Q:网络发送队列。对方没有收到的数据或者说没有Ack的,还是本地缓冲区,如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过慢,或者是对方接收数据包不够快;Recv-Q、Send-Q这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。
  • Local Address:监听本机IP地址和端口
  • Foreign Address:与本机端口通信的外部socket
  • state:链路状态共有12种

LISTEN

侦听来自远方TCP端口的连接请求。首先服务端需要打开一个socket进行监听,状态为LISTEN,

SYN_SENT

在发送连接请求后等待匹配的连接请求。客户端通过应用程序调用connect进行activeopen.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态SYN_SENT。

SYN_RECV

在收到和发送一个连接请求后等待对连接请求的确认。服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN.之后状态置为SYN_RECV

ESTABLISHED

代表一个打开的连接,数据可以传送给用户

FIN_WAIT1

等待远程TCP的连接中断请求,或先前的连接中断请求的确认。主动关闭(activeclose)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态

CLOSE_WAIT

等待从本地用户发来的连接中断请求。被动关闭(passiveclose)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT

FIN_WAIT2

从远程TCP等待连接中断请求。主动关闭端接到ACK后,就进入了FIN-WAIT-2

LAST_ACK

等待原来发向远程TCP的连接中断请求的确认。被动关闭端一段时间后,接收到文件结束符的应用程 序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK

TIME_WAIT

等待足够的时间以确保远程TCP接收到连接中断请求的确认。在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态。

CLOSING

比较少见,等待远程TCP对连接中断的确认

CLOSED

被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束

UNKNNOW

未知的Socket状态。

Active UNIX domain sockets,有源Unix域套接口(和网络套接字一样,但是只能用于本机通信)

  • RefCnt:链接到套接字的进程号
  • Flags:
  • Type:套接口类型:流套接字(SOCK_STREAM)、数据报套接字(SOCK_DGRAM)、原始套接字(SOCK_RAW);
  • I-Node:
  • Path:连接到套接口的其它进程使用的路径名
# 列出所有连接 (包括监听和未监听的)
netstat -anp

# 列出所有tcp连接
netstat -anpt

# 列出所有udp连接
netstat -anpu

# 列出所有处于监听状态的连接
netstat -antup

# 只列出所有监听 UNIX 的连接
netstat -anxp
e. ss 命令
  • 描述:显示处于活动状态的套接字信息
  • 语法:ss [选项]

-n 不解析服务名称,已数字方式显示

-a 显示所有套接字

-t 只显示TCP套接字

-u 只显示UDP套接字

-p 显示使用套接字的进程

ss -antup

3.17 Linux 网络配置_第3张图片

3、网络连接测试
a. ping 命令
  • 描述:测试网络联通性
  • 语法:ping IP地址
ping -c 4 www.baidu.com

3.17 Linux 网络配置_第4张图片

b. traceroute 命令
  • 描述:跟踪数据包的路由路径
  • 语法:traceroute IP地址

使用traceroute命令可以测试从当前主机到目的主机之间经过了那些网络节点,并显示各个中间节点的连接状态(相应时间),对于无法响应的节点,连接状态将显示为“*”。

# 安装traceroute
yum install -y traceroute

traceroute www.baidu.com

3.17 Linux 网络配置_第5张图片

c. nslookup 命令
  • 描述:测试域名解析的专用工具
  • 语法:nslookup IP地址
# 安装nslookup
yum install -y bind-utils

nslookup www.baidu.com

3.17 Linux 网络配置_第6张图片

4、临时配置网络地址
a. 修改网卡IP地址

通过命令行直接修改当前正在使用的网络地址,修改后立即可以生效,但由于所做的修改并没有存放到对应的配置文件中,所以重启network服务或重启系统后将会失效。这种方式操作简单快速、执行效率高,一般在调试网络的过程中使用。

# 临时配置ens33 IP地址为 192.168.137.130
ifconfig ens33 192.168.137.130 netmask 255.255.255.0
ifconfig ens33 192.168.137.130/24

# 重启网络服务配置失效
systemctl restart network
b. 禁用或启动网络接口

需要禁用或重新启用网络接口时,需要结合down和up开关选项,网络接口被禁用后,将无法使用该网络接口与其他主机进行连接

# 禁用网络接口
ifconfig ens33 down
ifdown ens33

# 启动网络接口
ifconfig ens33 up
ifup ens33
c. 设置网卡虚拟接口

在对服务器进行调试过程中,有时候需要在同一个网卡上使用一个新的ip地址,但又不能覆盖原有的ip地址而导致服务程序不可用,这时可以为网卡绑定一个虚拟的网络接口,然后为虚拟接口设置新的ip地址,相当一块网卡配多个ip地址

# 设置网卡虚拟接口0
ifconfig ens33:0 192.168.137.140 netmask 255.255.255.0

# 查看网卡信息
ifconfig

3.17 Linux 网络配置_第7张图片

# 删除临时虚拟接口
ifconfig ens33:0 del 192.168.137.140
# 查看网卡信息
ifconfig
d. 静态路由添加及删除
# 添加静态路由记录
route add -net 192.168.2.0/24 gw 192.168.137.2 

# 删除静态路由
route del -net 192.168.2.0/24
e. 网关记录添加及删除

添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用default表示即可,无需使用-net选项指明网段地址

注意:在同一个主机的路由表中只应有一条默认网关记录,若同时存在多条默认网关记录,则可能导致该主机的网络连接出现问题

#  删除默认网关
route del default gw 192.168.1.2 

# 添加默认网关
route add default gw 192.168.1.2
5、永久配置网络地址

通过配置文件来存放相关的网络配置参数,需要重启network服务或重启系统后才会生效。

网卡配置文件都位于/etc/sysconfig/network-scripts/目录下,需要注意的是只要有一个网卡配置文件配置错误,网卡服务都会重启失败

a. 修改网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33


TYPE="Ethernet"			#网络接口类型,常见的有Ethernet和Bridge
PROXY_METHOD="none"	
BROWSER_ONLY="no"
BOOTPROTO="none"		#启用静态IP地址static或none(dhcp启用动态获取IP)
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"	#如果为yes,则ipv4配置失败禁用设备
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"			#网卡名
UUID="a8b42dd0-aff3-42e3-a409-052000e071d2"
DEVICE="ens33"						#网卡的设备名称
ONBOOT="yes"							#在系统引导时是否激活此设备
IPADDR="192.168.1.11"			#网卡ip地址,只有在BOOTPROTO={none|static}才有效
PREFIX="24"								#设置子网掩码,也可以用NETMASK=255.255.255.0
GATEWAY="192.168.1.2"			#网关地址,要与IP地址属于同一网段
DNS1="114.114.114.114"		#第一个DNS服务器地址
DNS2="8.8.8.8"						#第二个DNS服务器地址
IPV6_PRIVACY="no"

# 重启网卡服务
systemctl restart network
b. 关闭selinux

安全增强型Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

工作模式:

  • enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。
  • permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。
  • disabled:关闭 SELinux
# 查看selinux状态
getenforce

# 临时关闭selinux
setenforce 0

# 永久关闭
vim /etc/selinux/config
	SELINUX=disabled
c. 主机名配置文件

rhel7/centos不再使用/etc/sysconfig/network设置主机名,而是使用/etc/hostname

设置主机名:

# 方式一:通过配置文件修改主机名
vim /etc/hostname
#重启hostname服务
systemctl restart systemd-hostnamed 

# 方式二:通过命令修改主机名
 hostnamectl set-hostname lemon
d. 域名解析配置文件
  • DNS服务配置文件:在/etc/resolv.conf配置dns地址
  • 本地主机映射文件:/etc/hosts
6、DHCP 配置主机IP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:

  • 给网络中的主机或设备自动分配IP地址,DNS服务器地址,网关地址等网络参数
  • 配合其它服务,实现集成化管理功能。如:无人执守安装服务器

dhcp特点:

  • C/S 模式
  • 自动分配IP地址,方便管理
  • DHCP不会同时租借相同的IP地址给两台主机;
  • DHCP管理员可以约束特定的计算机使用特定的IP地址;
  • 可以为每个DHCP作用域设置很多选项;
  • 客户机在不同子网间移动时不需要重新设置IP地址。每次都自动获取IP地址就可以了。

dhcp端口:

  • 端口67(bootps) bootps代表服务端端口
  • 68(bootpc) bootpc代表客户端端口
a. 搭建dhcp服务器

第一步:安装dhcp服务

# 安装dhcp
yum install -y dhcp

第二步:创建dhcp主配置文件

dhcpd服务的主配置文件是/etc/dhcp/dhcpd.conf,但该配置文件中默认不包括任何有效配置,需要管理员手动建立。这时管理员可以根据文件中的提示,参考配置文件范本建立新的dhcpd.conf

# 复制dhcp软件包里的配置文件至/etc/dhcp/dhcpd.conf
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

修改dhcp配置文件:

option domain-name "example.org";  										#为客户端指定所属的域名
option domain-name-servers 114.114.114.114, 8.8.8.8;  #为客户端指定DNS服务器
default-lease-time 600;    #定义默认租约时间,以秒为单位的租约时间,50%:续约。(续不上继续用),87.5%:再次续约。(续不上重新再ip)
max-lease-time 7200;       #最大租约时间,单位为秒当客户端超过租约时间,却尚未更新IP时,最长可以使用该IP 的时间
log-facility local7;			 #定义日志类型为local7
subnet 192.168.1.0 netmask 255.255.255.0 {
  range  192.168.1.100 192.168.1.200; 		 # range 起始IP地址 结束IP地址
  option routers 192.168.1.2;		   				 # 为客户端指定默认网关
}
host passacaglia {  											 #把主机IP地址和MAC地址进行绑定
  hardware ethernet 00:0c:29:72:6f:97;		 #网卡MAC地址
  fixed-address 192.168.1.150;				 		 #分配给该主机IP地址
}
  • 作用域:可以分配IP的范围 subnet
  • 地址池:可以分配给客户端的IP,range包括的IP
  • 保留地址:指定某个客户端使用一个特定IP,通过host配置的
  • 租约(时间):客户端可以使用这个IP地址的时间 8H
  • host声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的ip地址(保留地址),这些主机的共同特点是要求每次获取的ip地址相同,以确保服务的稳定性。

第三步:启动hdcp服务

# 启动dhcp服务
systemctl start dhcpd
systemctl status hdcpd

# 查看dhcp进程
ps -ef | grep dhcp

# 查看DHCP端口
netstat -antup | grep dhcp
b. 租约数据库文件

租约数据库文件用于保存一系列的租约声明,其中包含客户端的主机名、MAC 地址、分配到的IP地址,以及IP地址的有效期等相关信息。这个数据库文件是可编辑的ASCII 格式文本文件。每 当发生租约变化的时候,都会在文件结尾添加新的租约记录。

DHCP 刚安装好后租约数据库文件dhcpd.leases 是个空文件, /var/lib/dhcpd/dhcpd.leases。当DHCP 服务正常运行后就可以使用cat 命令查看租约数据库文件内容了。

 cat /var/lib/dhcpd/dhcpd.leases
c. dhcp 客户端测试

第一步:去掉vmnet8网卡的dhcp服务的对勾

3.17 Linux 网络配置_第8张图片

第二步:修改网卡配置为dhcp

vim /etc/sysconfig/network-scripts/ifcfg-ens33
	BOOTPROTO="dhcp"

# 重启网络服务
systemctl restart network

# 查看网卡信息
ifconfig ens33

# 查看默认网关
route -n

# 查看DNS
cat /etc/resolv.conf

# 查看客户端端口号
netstat -antup | grep 68

你可能感兴趣的:(J-C云计算运维,linux)