服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的。Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序。
为解决这类问题,dell开发了biosdevname方案。
systemd v197版本中将dell的方案作了进一步的一般化拓展。
目前的Centos既支持dell的biosdevname,也支持systemd的方案。
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地址来命名,这个方法一般不使用。
net.ifnames的命名规范为: 设备类型+设备位置+数字
设备类型 |
实际例子 |
en 表示Ethernet |
eno1 板载网卡,集成设备的设备索引号 enp0s2 独立网卡,pci网卡 ens33 热插拔网卡,usb 之类,扩展槽的索引号,pci网卡 enx78e7d1ea46da pci网卡 |
wl 表示WLAN |
wlp3s0 PCI无线网卡 wlp0s2f1u4u1 连接在USB Hub上的无线网卡 |
ww 表示无线广域网WWAN |
wwp0s29f7u2i2 4G modem |
# 安装 ifconfig
yum -y install net-tools
# 查看活动的网络接口设备
ifconfig
# 查看指定的网络接口信息
ifconfig ens33
# 临时关闭某个网卡
ifconfig lo down
# 临时打开某个网卡
ifconfig lo up
-n 以数字形式显示路由记录中的地址信息
# 查看当前主机的路由表信息
route
Destination |
目标网络或目标主机 |
Gateway |
网关地址,如果没有就显示星号 |
Genmask |
子网掩码 |
Metric |
距离、跳数 |
Ref |
此路由的引用数(在Linux kernel中未使用) 不用管,恒为0 |
Use |
该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量 |
Iface |
网络接口名 |
Flags:路由标志
addr
link
route
# 查看网卡ip信息
ip addr
# 查看指定网卡网络信息
ip addr show dev ens33
# 关闭网卡
ip link set lo down
# 开启网卡
ip link set lo up
-a: 显示当前主机中所有连接的网络连接信息
-n: 以数字的形式显示相关的主机地址、端口等信息
-r: 显示Routing Table;
-t: 显示TCP传输协议的连线状况;
-u: 显示UDP传输协议的连线状况;
-l : 仅列出有在 Listen (监听) 的服务状态
-p: 显示与网络连接相关的进程号、进程名称信息
-x: 查看UNIX类型的连接
netstat | more
Active Internet connections 有源TCP连接
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域套接口(和网络套接字一样,但是只能用于本机通信)
# 列出所有连接 (包括监听和未监听的)
netstat -anp
# 列出所有tcp连接
netstat -anpt
# 列出所有udp连接
netstat -anpu
# 列出所有处于监听状态的连接
netstat -antup
# 只列出所有监听 UNIX 的连接
netstat -anxp
-n 不解析服务名称,已数字方式显示
-a 显示所有套接字
-t 只显示TCP套接字
-u 只显示UDP套接字
-p 显示使用套接字的进程
ss -antup
ping -c 4 www.baidu.com
使用traceroute命令可以测试从当前主机到目的主机之间经过了那些网络节点,并显示各个中间节点的连接状态(相应时间),对于无法响应的节点,连接状态将显示为“*”。
# 安装traceroute
yum install -y traceroute
traceroute www.baidu.com
# 安装nslookup
yum install -y bind-utils
nslookup www.baidu.com
通过命令行直接修改当前正在使用的网络地址,修改后立即可以生效,但由于所做的修改并没有存放到对应的配置文件中,所以重启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
需要禁用或重新启用网络接口时,需要结合down和up开关选项,网络接口被禁用后,将无法使用该网络接口与其他主机进行连接
# 禁用网络接口
ifconfig ens33 down
ifdown ens33
# 启动网络接口
ifconfig ens33 up
ifup ens33
在对服务器进行调试过程中,有时候需要在同一个网卡上使用一个新的ip地址,但又不能覆盖原有的ip地址而导致服务程序不可用,这时可以为网卡绑定一个虚拟的网络接口,然后为虚拟接口设置新的ip地址,相当一块网卡配多个ip地址
# 设置网卡虚拟接口0
ifconfig ens33:0 192.168.137.140 netmask 255.255.255.0
# 查看网卡信息
ifconfig
# 删除临时虚拟接口
ifconfig ens33:0 del 192.168.137.140
# 查看网卡信息
ifconfig
# 添加静态路由记录
route add -net 192.168.2.0/24 gw 192.168.137.2
# 删除静态路由
route del -net 192.168.2.0/24
添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用default表示即可,无需使用-net选项指明网段地址
注意:在同一个主机的路由表中只应有一条默认网关记录,若同时存在多条默认网关记录,则可能导致该主机的网络连接出现问题
# 删除默认网关
route del default gw 192.168.1.2
# 添加默认网关
route add default gw 192.168.1.2
通过配置文件来存放相关的网络配置参数,需要重启network服务或重启系统后才会生效。
网卡配置文件都位于/etc/sysconfig/network-scripts/目录下,需要注意的是只要有一个网卡配置文件配置错误,网卡服务都会重启失败
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
安全增强型Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。最大限度地减小系统中服务进程可访问的资源(最小权限原则)。
工作模式:
# 查看selinux状态
getenforce
# 临时关闭selinux
setenforce 0
# 永久关闭
vim /etc/selinux/config
SELINUX=disabled
rhel7/centos不再使用/etc/sysconfig/network设置主机名,而是使用/etc/hostname
设置主机名:
# 方式一:通过配置文件修改主机名
vim /etc/hostname
#重启hostname服务
systemctl restart systemd-hostnamed
# 方式二:通过命令修改主机名
hostnamectl set-hostname lemon
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:
dhcp特点:
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地址
}
第三步:启动hdcp服务
# 启动dhcp服务
systemctl start dhcpd
systemctl status hdcpd
# 查看dhcp进程
ps -ef | grep dhcp
# 查看DHCP端口
netstat -antup | grep dhcp
租约数据库文件用于保存一系列的租约声明,其中包含客户端的主机名、MAC 地址、分配到的IP地址,以及IP地址的有效期等相关信息。这个数据库文件是可编辑的ASCII 格式文本文件。每 当发生租约变化的时候,都会在文件结尾添加新的租约记录。
DHCP 刚安装好后租约数据库文件dhcpd.leases 是个空文件, /var/lib/dhcpd/dhcpd.leases。当DHCP 服务正常运行后就可以使用cat 命令查看租约数据库文件内容了。
cat /var/lib/dhcpd/dhcpd.leases
第一步:去掉vmnet8网卡的dhcp服务的对勾
第二步:修改网卡配置为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