Linux网络配置


修改网络地址

方法一 使用nmtui命令

[root@localhost ~]# nmtui

image-20240110222848979

image-20240110222933894

image-20240110223032103

方法二 修改配置文件

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet     # TYPE:网络类型,这里是以太网
PROXY_METHOD=none  # PROXY_METHOD:代理方式,这里是没有代理
BROWSER_ONLY=no    # BROWSER_ONLY:是否仅限浏览器使用代理
BOOTPROTO=none    #BOOTPROTO:启动时获取 IP 地址的方式,这里是不启用
DEFROUTE=yes      # DEFROUTE:默认路由是否可用
IPV4_FAILURE_FATAL=no # IPV4_FAILURE_FATAL:IPv4 是否必须要配置成功
IPV6INIT=yes      # IPV6INIT:是否启用 IPv6
IPV6_AUTOCONF=yes  # IPV6_AUTOCONF:是否启用 IPv6 自动获取地址
IPV6_DEFROUTE=yes  # IPV6_DEFROUTE:IPv6 是否启用默认路由
IPV6_FAILURE_FATAL=no # IPV6_FAILURE_FATAL:IPv6 是否必须要配置成功
IPV6_ADDR_GEN_MODE=stable-privacy # IPV6_ADDR_GEN_MODE:IPv6 地址生成方式,这里是稳定随机地址
NAME=ens33 # NAME:网络接口名称
UUID=7ebb3482-92bd-490c-9c87-018203161ea3 # UUID:网络接口 UUID
DEVICE=ens33 # DEVICE:网络接口设备名称
ONBOOT=yes  # ONBOOT:是否在系统启动时自动启用该网络接口
IPADDR=192.168.8.10 # IPADDR:IPv4 地址
PREFIX=24 # PREFIX:IPv4 掩码长度
GATEWAY=192.168.8.2 # GATEWAY:IPv4 网关地址
DNS1=8.8.8.8 # DNS1:首选 DNS 服务器地址
IPV6_PRIVACY=no # IPV6_PRIVACY:是否开启 IPv6 隐私模式。

补充:

​ 在给定的网络配置文件中,UUID(Universally Unique Identifier)是网络接口的唯一标识符。每个网络接口都会被分配一个独特的 UUID,用于标识和区分不同的网络接口。在这个配置文件中,UUID 是 “7ebb3482-92bd-490c-9c87-018203161ea3”。

# 修改IP
IPADDR=192.168.8.11
# 修改子网掩码
NETMASK=255.255.255.0
# 修改DNS1
DNS1=114.114.114.114

修改完成后,需要重启网络服务以使配置生效。可以运行以下命令来重启网络服务:

sudo systemctl restart network

查看ip信息

[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.8.11  netmask 255.255.255.0  broadcast 192.168.8.255
        inet6 fe80::36e:c73c:d10e:4fdb  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0a:5f:d2  txqueuelen 1000  (Ethernet)
        RX packets 103  bytes 13371 (13.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 131  bytes 17811 (17.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

网络配置文件

/etc/NetworkManager/NetworkManager.conf

NetworkManager服务配置文件,如果没有特殊需求不建议调整,如果需要调整的话,调整之前备份,调整完成重新启动服务

/etc/sysconfig/network-scripts/ifcfg-xx网卡配置文件

网卡配置文件中的关键参数
[root@zuolaoshi ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet" 网卡类型
BOOTPROTO="dhcp"    IP获取方式dhcp/staticnone
DEFROUTE="yes"      是否设置为IPV4默认路由
NAME="ens33"    连接名称
UUID="b5ecf570-543c-4da7-b082-bdc073b56acb" 网卡识别号
DEVICE="ens33"  设备名称
ONBOOT="yes"        是否开机自动启动此网络连接


额外设置参数
NM_CONTROLLED=yes   是否被NetworkManager服务管理默认yes
IPADDR          ip地址
NETMASK         子网掩码
GATEWAY         定义网关
DNS1            dns地址   优先级高于/etc/resolv.conf
DNS2            dns地址
USERCTL         是否允许普通用户控制此设备
PEERDNS         是否允许自动修改dns配置文件/etc/resolv.conf
PREFIX          掩码长度

/etc/hostname 主机名配置文件

[root@zuolaoshi ~]# cat /etc/hostname 
zuolaoshi

/etc/resolv.conf DNS配置文件

[root@zuolaoshi ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 192.168.17.2
nameserver 202.106.0.20
nameserver 114.114.114.114

其它命令

  • ifconfig命令:查看网卡信息
[root@zuolaoshi ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500     连接信息
        inet 192.168.1.55  netmask 255.255.255.0  broadcast 192.168.1.255   IPV4地址信息
        inet6 fe80::ea62:91c6:114:18bb  prefixlen 64  scopeid 0x20<link>    IPV6地址信息
        ether 00:0c:29:11:47:97  txqueuelen 1000  (Ethernet)    mac地址
        RX packets 174914  bytes 51397660 (49.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0   接收到的数据包统计
        TX packets 24446  bytes 3114546 (2.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0  发送的数据包统计
# 停用网卡
[root@zuolaoshi ~]# ifconfig ens37 down
# 启用网卡
[root@zuolaoshi ~]# ifconfig ens37 up
# 设置一个临时IP
[root@zuolaoshi ~]# ifconfig ens37 192.168.18.100
  • route命令:设置路由
[root@zuolaoshi ~]# route
    -n   以数字的形式显示路由信息
    add/del  添加/删除路由信息需要配合下面参数使用
    -net     指定为一个网络
    -host    指定为一台主机
    netmask  指定掩码
    gw   指定网关
    dev  指定设备

Destination    Gateway      Genmask             Flags   Metric Ref  Use  Iface
0.0.0.0         192.168.1.1 0.0.0.0         UG      102    0    0    ens33
192.168.1.0     0.0.0.0     255.255.255.0 U         102    0    0    ens33
192.168.20.0  0.0.0.0     255.255.255.0 U       100    0    0    ens37

主要信息
Destination     目的地址    
Gateway         网关
Genmask          掩码
Flags            标识 U=启用H=主机G=网关  
Iface           接口
添加路由信息
[root@zuolaoshi ~]#route add -net 192.168.20.0/24 dev ens37
删除路由信息
[root@zuolaoshi ~]#route del -net 192.168.20.0/24   dev ens37

dhclient获取与释放IP地址
[root@zuolaoshi ~]# dhclient -r ens37
[root@zuolaoshi ~]# dhclient ens37
  • ping连通性测试工具
[root@zuolaoshi ~]# ping
    c           指定次数
    n           以数字的形式显示结果
    f           洪水ping,以最快的速度收发数据包,慎用

[root@zuolaoshi ~]# ping -c 5 -n www.163.com
PING z163ipv6.v.bsgslb.cn (111.202.34.27) 56(84) bytes of data.
64 bytes from 111.202.34.27: icmp_seq=1 ttl=128 time=5.25 ms
64 bytes from 111.202.34.27: icmp_seq=2 ttl=128 time=8.54 ms
64 bytes from 111.202.34.27: icmp_seq=3 ttl=128 time=6.22 ms
64 bytes from 111.202.34.27: icmp_seq=4 ttl=128 time=5.78 ms
64 bytes from 111.202.34.27: icmp_seq=5 ttl=128 time=5.60 ms

--- z163ipv6.v.bsgslb.cn ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 13ms
rtt min/avg/max/mdev = 5.253/6.278/8.536/1.173 ms

Netstat 简介

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管和系统管理员的必备利器。在这篇教程中,我会列出几个例子,教大家如何使用 netstat 去查找网络连接信息和系统开启的端口号

以下的简单介绍来自 netstat 的 man 手册:

netstat 打印网络连接、路由表、连接的数据统计、伪装连接以及广播域成员。

1. 列出所有连接

第一个要介绍的,是最简单的命令:列出所有当前的连接。使用 -a 选项即可。

# netstat -a 

上述命令列出 tcp, udp 和 unix 协议下所有套接字的所有连接。然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体连接情况。

2. 只列出 TCP 或 UDP 协议的连接

使用 -t 选项列出 TCP 协议的连接:

# netstat -at

使用 -u 选项列出 UDP 协议的连接:

# netstat -au

上面同时显示了 IPv4 和 IPv6 的连接。

3. 禁用反向域名解析,加快查询速度

默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

# netstat -an

上述命令列出所有 TCP 协议的连接,没有使用域名解析技术。So easy ? 非常好。

4. 只列出监听中的连接

任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

# netstat -tnl

现在我们可以看到处于监听状态的 TCP 端口和连接。如果你查看所有监听端口,去掉 -t 选项。如果你只想查看 UDP 端口,使用 -u 选项,代替 -t 选项。

注意:不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。

5. 获取进程名、进程号以及用户 ID

查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache 的 httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

使用 -p 选项查看进程信息。

# netstat -nlpt

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

相比进程名和进程号而言,查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名。

# netstat -ltpe

上面列出 TCP 协议下的监听套接字,同时显示进程信息和一些额外信息。

这些额外的信息包括用户名和进程的索引节点号。这个命令对网管来说很有用。

注意 - 假如你将 -n-e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。

6. 打印统计数据

netstat 可以打印出网络统计数据,包括某个协议下的收发包数量。

下面列出所有网络包的统计情况:

# netstat -sIp

如果想只打印出 TCP 或 UDP 协议的统计数据,只要加上对应的选项(-t-u)即可,so easy。

7. 显示内核路由信息

使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。

# netstat -rn

8. 打印网络接口

netstat 也能打印网络接口信息,-i 选项就是为这个功能而生。

# netstat -i

上面输出的信息比较原始。我们将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息。

# netstat -ie

上面的输出信息与 ifconfig 输出的信息一样。

9. netstat 持续输出

我们可以使用 netstat 的 -c 选项持续输出信息。

# netstat -ct

这个命令可持续输出 TCP 协议信息。

10. 显示多播组信息

选项 -g 会输出 IPv4 和 IPv6 的多播组信息。

# netstat -g

更多用法

目前为止我们列出了 netstat 的基本用法,现在让我们一起来 geek 吧~

打印 active 状态的连接

active 状态的套接字连接用 "ESTABLISHED" 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:

# netstat -atnp | grep ESTA

配合 watch 命令监视 active 状态的连接:

# watch -d -n0 "netstat -atnp | grep ESTA"

查看服务是否在运行

如果你想看看 http,smtp 或 ntp 服务是否在运行,使用 grep。

$ sudo netstat -aple | grep ntp 

从这里可以看到 ntp 服务正在运行。使用 grep 命令你可以查看 http 或 smtp 或其它任何你想查看的服务。

好了,netstat 的大部分功能都介绍过了,如果你想知道 netstat 更高级的功能,阅读它的手册吧(man netstat)。

使用nmcli命令设置网卡信息

查看网卡信息
[root@zuolaoshi ~]# nmcli 
ens33: 已连接 to ens33 #设备状态和名称
  "Intel 82545EM"   #设备型号
  ethernet (e1000), 00:0C:29:11:47:97, 硬件, mtu 1500
  ip4 默认
  inet4 192.168.1.55/24
  route4 0.0.0.0/0
  route4 192.168.1.0/24
  inet6 fe80::ea62:91c6:114:18bb/64
  route6 fe80::/64
  route6 ff00::/8

为网卡设置静态IP
[root@zuolaoshi ~]# nmcli connection add type ethernet con-name ens-test1 ifname ens37 ipv4.addresses 192.168.18.100/24 ipv4.gateway 192.168.18.1 ipv4.method manual 
连接 "ens-test1" (da7fdc9a-e7cc-4a1c-8b2c-7751ed2fc4d2) 已成功添加。


启用新添加的连接
[root@zuolaoshi ~]# nmcli connection up ens-test1 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/16) 


查看连接状态
[root@zuolaoshi ~]# nmcli connection 
NAME       UUID            TYPE      DEVICE 
ens33      b5ecf5...          ethernet  ens33  
ens-test1  da7fdc...          ethernet  ens37  
ens37      077945...          ethernet  --     

为网卡设置动态IP
[root@zuolaoshi ~]# nmcli connection add type ethernet con-name ens-test2 ifname ens37 ipv4.method auto
连接 "ens-test2" (25b9dd2f-a4c0-452d-bd22-992cf12b55b2) 已成功添加。
[root@zuolaoshi ~]# nmcli connection up ens-test2 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/17)
[root@zuolaoshi ~]# nmcli connection 
NAME       UUID              TYPE      DEVICE 
ens33      b5ec...                   ethernet  ens33  
ens-test2  25b9...                   ethernet  ens37  
ens37      0779...                   ethernet  --     
ens-test1  da7f...                   ethernet  --     


交互式设置IP地址
[root@zuolaoshi ~]# nmcli connection edit ens-test1 
nmcli> goto ipv4.addresses 
nmcli ipv4.addresses> change
编辑 "addresses" 值:192.168.20.100/24
您是否也要将 "ipv4.method" 设为 "manual"[yes]:yes
nmcli ipv4.addresses> back
nmcli ipv4> save
成功地更新了连接 "ens-test1" (da7fdc9a-e7cc-4a1c-8b2c-7751ed2fc4d2)。
nmcli ipv4> activate 
正在监视连接激活(按任意键继续)
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/18)

nmcli ipv4> quit

[root@zuolaoshi ~]# nmcli 
ens37: 已连接 to ens-test1
  "Intel 82545EM"
  ethernet (e1000), 00:0C:29:11:47:A1, 硬件, mtu 1500
  ip4 默认
  inet4 192.168.20.100/24
  route4 192.168.20.0/24
  route4 192.168.18.1/32
  route4 0.0.0.0/0
  inet6 fe80::11c3:e0a4:f62e:9f31/64
  route6 fe80::/64
  route6 ff00::/8


启用和停用
[root@zuolaoshi ~]# nmcli connection up ens-test1 
连接已成功激活(D-Bus 活动路径:...
[root@zuolaoshi ~]# nmcli connection down ens-test1 
成功停用连接 "ens-test1"(D-Bus 活动路...

删除连接
[root@zuolaoshi ~]# nmcli connection delete ens-test1 
成功删除连接 "ens-test1" (4fc43f65-ea53-43a1-85d4-692e425fcd7d)[root@zuolaoshi ~]# nmcli connection 
NAME   UUID     TYPE      DEVICE 
ens33  b5ec...  ethernet  ens33  
ens37  0779...  ethernet  ens37  
[root@zuolaoshi ~]# nmcli connection show
NAME   UUID     TYPE      DEVICE 
ens33  b5ec...  ethernet  ens33  
ens37  0779...  ethernet  ens37  

重新加载设置(不会立即生效)
[root@zuolaoshi ~]# nmcli connection reload

重新加载指定的设置(不会立即生效)
[root@zuolaoshi ~]# nmcli connection load /etc/sysconfig/network-scripts/ifcfg-ens37


生效方法

启用设备
[root@zuolaoshi ~]# nmcli connection up  ens37
连接已成功激活(D-Bus 活动路径...

或者

连接设备并更新设备
[root@zuolaoshi ~]# nmcli device connect ens37          
[root@zuolaoshi ~]# nmcli device reapply ens37


查看设备&查看设备的详细信息
[root@zuolaoshi ~]# nmcli device 
DEVICE  TYPE      STATE   CONNECTION 
ens37   ethernet  已连接  ens37      
ens33   ethernet  已连接  ens33      
lo      loopback  未托管  --         
[root@zuolaoshi ~]# nmcli device show ens33
GENERAL.DEVICE:                         ens33
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:11:47:97
GENERAL.MTU:                            1500
GENERAL.STATE:                          100(已连接)
GENERAL.CONNECTION:                     ens33
GENERAL.CON-PATH:         /org/freedesktop/NetworkMana...
WIRED-PROPERTIES.CARRIER:               开
IP4.ADDRESS[1]:                         192.168.1.55/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:           dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 102
IP4.DNS[1]:             202.106.0.20
IP4.DNS[2]:             114.114.114.114
IP6.ADDRESS[1]:         fe80::ea62:91c6:114:18bb/64
IP6.GATEWAY:            --
IP6.ROUTE[1]:           dst = fe80::/64, nh = ::, mt = 102
IP6.ROUTE[2]:           dst = ff00::/8, nh = ::, mt = 256, table=255

连接/断开网卡
[root@zuolaoshi ~]# nmcli device connect/disconnect ens37

开启/关闭无线网络
[root@zuolaoshi ~]# nmcli radio all on/off

开启/关闭NetworkManager的网络管理功能
[root@zuolaoshi ~]# nmcli networking on/off

监控网络状态
[root@zuolaoshi ~]# nmcli monitor (ctrl+c结束)
ens37: 停用中
网络管理器现在处于 "已连接(仅本地)" 状态
连接性现在是 "受限"
ens37: 已断开

询问NetworkManager网络连接状态(默认等待30秒)
[root@zuolaoshi ~]# nm-online 
正在连接...............   30s [online]