Linux网络配置概述

目前将单一的桌面PC连接到网络是一件非常容易的事

但是将Linux服务器连接到网络,特别是在服务器配置上会有不同,典型的如

  • 静态IP
  • VPN网络
  • 代理服务器

学习网络配置管理,不仅要学会使用网络,更重要的是掌握网络状态,排查系统问题

传统的Linux网络配置是通过network.service来实现
基于network的常用的命令有

  • ifconfig
  • ifup
  • ifdown

传统的network.services用于服务器上比较稳定的网络环境是非常方便的,唯一的问题是网络改动或切换时,必须要重启整个network服务,导致短暂的中断。

在Centos7之后,提供了一种新的网络配置方式NetworkManager,其主要工具是nmtuinmcli

  • nmtui是可以在SHELL下执行的一个简单图形界面,以图形化方式来管理网络配置,更简单易懂。nmtui的本质仍然是修改Linux的配置文件
  • nmcli是命令行的形式来管理网络类似ifconfigifup等传统命令,但优势更明显

注意:
传统的network与新生的NetworkManager两者同时管理网络时,会出现冲突

我们只需学会一种即可,首先我们要学会判断当前系统是使用的那种服务,使用下面两个命令进行测试

1
2
systemctl is-enabled network
systemctl is-enabled NetworkManager

上面两个命令测试的是开机是否自动启动

使用下面的命令可以看到当前是否启动

1
2
systemctl status NetworkManager
systemctl status network

不论哪种方式,我们Linux的本质任然是文件配置,CentOS7的网络配置文件默认在 /etc/sysconfig/network-scripts/ 目录下

ifcfg-eth0 就是eth0网卡的配置

使用 ifconfig命令产看当前的网络配置

上图中eth0的信息如下

inet 192.168.29.4 lPv4地址
netmask 255.255.240.0 子网掩码
broadcast 192.168.31.255 广播IP
ether fa:16:3e:58:2b:a2 txqueuelen 1000 (Ethernet) MAC地址、速率、连接类型
RX packets 398909 bytes 32892437 (31.3 MiB) 接收数据包个数,大小
RX errors 0 dropped 0 overruns 0 frame 0 接数错误数
TX packets 104 bytes 6977(6.8 KiB) 发送数据包个数,大小
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 发送错误数


配置Linux网络

使用network配置网络

  1. 配置ip地址
    命令格式: ifconfig 网卡名 IP地址 netmask 子网掩码

  2. 配置DNS服务器
    Linux的DNS服务器在network下是基于文件配置的 配置文件路径为 /etc/resolv.conf 我们使用vim编辑这个文件就可以进行配置

基于NetworkManager的配置

在使用NetworkManager的时候,我们需要先关闭 network 防止冲突,使用下面的命令关闭network网络服务

1
systemctl stop network

想使用NetworkManager的前提是网卡可以被 NetworkManager管理,NetworkManager网络管理服务配置文件是 /etc/NetworkManager/NetworkManager.conf 我们使用vim来进行编辑,如下

1
2
3
4
5
[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=true //允许接口进行管理

使用 nmcli device 可以查看网络可管理状态

上面的状态可以通过下面的命令进行修改

1
2
nmcli networking
nmcli networking on|off

通过nmtui配置网络

在CentOS7中已经默认安装了nmtui工具,在SHELL中直接输入 nmtui 命令可以进行执行,下图就是nmtui工具的界面

选择编辑网络连接,可以看到下面界面

点击Edit后,进入编辑界面如下,默认ipv4是自动获取的,我们改为手动,点击show就看到需要配置的内容了

配置Ip,子网掩码,网关,DNS等信息

配置结束后,按方向键向下,一直到最后选择OK,保存,然后退出

在配置完后,也是需要重新加载一下配置文件的,执行下面的命令 nmcli device connect ens33 注意 ens33 是编辑的那个网卡的名字

基于文件配置

直接进入前面说的网卡配置文件进行修改 比如 eth0网卡的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0

记得修改后需要重新启动网卡eth0配置文件,使用命令 ifdown eth0ifup eth0


网络常用命令

ping

ping 目标IP地址,通常用来诊断到目标IP地址的连通性,判断从本机到目标及其网络是否正常,比如

1
ping www.baidu.com

netstat

使用netstat 指令可以得知整个Linux系统的网络情况,选项如下

-a--all 显示所有连线中的Socket。
-h--help 在线帮助。
-i--interfaces 显示网络界面信息表单。
-l--listening 显示监控中的服务器的Socket。
-n--numeric 直接使用IP地址,而不通过域名服务器。
-p--programs 显示正在使用Socket的程序识别码和程序名称。
-s--statistics 显示网络工作信息统计表。
-t--tcp 显示TCP传输协议的连线状况。
-u--udp 显示UDP传输协议的连线状况。

常用的组合选项命令

netstat -natp
第一个红框表示正在监听TCP22 端口,进程ID为1018,进程名 sshd
第二个红框表示当前TCP的连接,及SSH连接

ss

ss命令是 Socket Statistics 的缩写,用来获取socket统计信息

ss 的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。

ss快的秘诀在于,它利用到了TCP协议栈中tcp_diagtcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,这就确保了ss的快捷高效。

常用选项

-t: tcp 显示tcp连接
-a: all 显示所有连接
-l: listening 列出所有打开的网络连接端口
-s: summary 显示Sockets摘要
-p: progress 显示端口对应的进程
-n: numeric 不解析服务名称,也可理解为以数字形式显示
-r: resolve 解析服务名称
-m: memory 显示内存情况

比如常用的组合选项 ss -lntp 以数字形式显示tcp连接,并显示进程名