首页 > 技术文章 > CentOS-8的新特性、部署、配置、测试

51core 2020-12-15 18:20 原文

原文:https://www.jianshu.com/p/023be067b743

centos-stream  https://www.centos.org/centos-stream/

14. 网络方面

更详细的官方文档

  • nftables 框架替代 iptables 作为默认的网络包过滤工具
  • firewalld 守护进程使用 nftables 作为默认后端
  • 支持 IPVLAN 虚拟网络驱动程序,可以为多个容器提供网络连接

nft -n list table ip crowdsec

nft list ruleset -a

 

3. 可Cockpit Web控制台界面管理CentOS8

CentOS8的一大改变就是通过Web直观的管理服务器的系统,这项新服务的名称为Cockpit,可以帮助不熟悉命令行的使用者管理服务器系统。不仅仅CenOS8 可以使用。ubuntu 和CentOS7 也是可以使用的。

  • 支持web终端,在web中关闭防火墙,selinux。
  • 支持虚拟机管理,需要安装cockpit-machines
  • 支持k8s dashboard管理,需要安装 cockpit-kubernetes
  • 支持web界面配置网卡
systemctl start cockpit.socket
systemctl enable cockpit.socket

访问 http://IP:9090
用户名密码和Linux的是一样的 打开Web界面后就可以实现对系统的监控和配置功能,Web界面的左侧便是其各种功能的菜

\color{red}{三、CentOS8的新操作}

CentOS8系统优化快速上手

[root@CentOS8 ~]# ssh -V
OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018
[root@CentOS8 ~]# cat /etc/redhat-release 
CentOS Linux release 8.0.1905 (Core) 
[root@CentOS8 ~]# uname -a
Linux CentOS8 4.18.0-80.el8.x86_64 #1 SMP Tue Jun 4 09:19:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

3.1 网络配置—NetworkManager

在CentOS7上,同时支持network.service和NetworkManager.service。默认情况下,这2个服务都有开启,但许多人都会将NetworkManager禁用掉。

在CentOS8上,默认没有安装network.service,依然支持network。因此只能通过NetworkManager进行网络配置,包括动态ip和静态ip。换言之,在CentOS8上,必须开启NM,否则无法使用网络。

NetworkManager介绍:

  • 能管理各种网络
    有线网卡、无线网卡
    动态ip、静态ip
    以太网、非以太网
    物理网卡、虚拟网卡

  • 使用方法齐全
    nmcli:命令行。这是最常用的工具,本文将详细讲解该工具使用。
    nmtui:在shell终端开启文本图形界面。
    Freedesktop applet:如GNOME上自带的网络管理工具
    cockpit:redhat自带的基于web图形界面的"驾驶舱"工具,具有dashborad和基础管理功能。

  • 为什么要用NetworkManager
    工具齐全:命令行、文本界面、图形界面、web
    广纳天地:纳管各种网络,有线、无线、物理、虚拟
    参数丰富:多达200多项配置参数
    一统江湖:RedHat、CentOS、Suse、Debian/Ubuntu,均支持
    大势所趋:下一个大版本只能通过NM管理网络


3.2 设置网卡的新方法—nmcli

在NetworkManager里,有2个维度:连接(connection)和设备(device),这是多对一的关系。想给某个网卡配ip,首先NetworkManager要能纳管这个网卡。设备里存在的网卡(即nmcli d可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即nmcli c可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过nmcli c up切换连接。

  • 查看网卡连接信息
    connection有2种状态:
    活跃(带颜色字体):表示当前该connection生效
    非活跃(正常字体):表示当前该connection不生效
[root@CentOS8 ~]# nmcli connection
NAME    UUID                                  TYPE      DEVICE 
eth0    07b4217d-3fc4-48f7-ac70-1495cb856f98  ethernet  eth0   
virbr0  4750c5db-fdd4-4423-812d-ab31120c88fd  bridge    virbr0 

#查看connection列表和详细列表
nmcli c show 
nmcli c show eth0

#语法:
nmcli connection modify <interface_name> ipv4.address <ip/prefix>
译作连接,可理解为配置文件,相当于ifcfg-eth0 可以简写为 nmcli c
  • 获取网卡设备列表
    device有4种常见状态:
    connected:已被NM纳管,并且当前有活跃的connection
    disconnected:已被NM纳管,但是当前没有活跃的connection
    unmanaged:未被NM纳管
    unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候
[root@CentOS8 ~]# nmcli device 
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  eth0       
lo      loopback  unmanaged  -- 

#查看所有device详细信息
nmcli d show
#查看指定device详细信息
nmcli d show eth0

译作设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡) 可以简写为 nmcli d
  • 查看ip地址和NetworkManager状态
    类似于ifconfig、ip addr
[root@CentOS8 ~]# nmcli 
eth0: connected to eth0
        "Intel 82545EM"
        ethernet (e1000), 00:0C:29:B2:BE:2D, hw, mtu 1500
        ip4 default
        inet4 10.0.0.58/24
        route4 0.0.0.0/0
        route4 10.0.0.0/24
        inet6 fe80::b05:e02d:a476:ce8e/64
        route6 fe80::/64
        route6 ff00::/8

lo: unmanaged
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

DNS configuration:
        servers: 10.0.0.1
        interface: eth0

Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.

Consult nmcli(1) and nmcli-examples(5) manual pages for complete usage details.

启用和停止网卡连接

#相当于ifup ifdown
启用  nmcli c up eth0
停止  nmcli c down eth0

立即生效connection,有3种方法

nmcli c up eth0
nmcli d reapply eth0
nmcli d connect eth0

删除网卡连接

nmcli c delete eth0

重载所有、指定 ifcfg或route到connection(不会立即生效)

nmcli c reload

nmcli c load /etc/sysconfig/network-scripts/ifcfg-eth0

创建网络连接并配置静态IP地址(等同于配置ifcfg,其中BOOTPROTO=none,并ifup启动)

nmcli c add type ethernet con-name eth0 ifname eth0 ipv4.addr 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual

创建网络连接并配置动态IP地址(等同于配置ifcfg,其中BOOTPROTO=dhcp,并ifup启动)

nmcli c add type ethernet con-name eth0 ifname eth0 ipv4.method auto

修改IP地址(非交互式)

nmcli c modify eth0 ipv4.addr '192.168.0.200/24'
nmcli c up eth0

修改IP地址(交互式)

nmcli c edit eth0
nmcli> goto ipv4.addresses
nmcli ipv4.addresses> change
Edit 'addresses' value: 192.168.1.200/24
Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
nmcli ipv4> save
nmcli ipv4> activate
nmcli ipv4> quit

关闭无线网络

nmcli r all off

查看NetworkManager状态

nmcli n 

#开启NetworkManager
nmcli n on
#关闭NetworkManager
nmcli n off

监听事件

nmcli m 

检测NetworkMarger是否在线可用

nm-online 

例子:创建一个连接(connection)

nmcli c add type ethernet con-name eth0-test ifname eth0-test ipv4.addresses '192.168.1.100/24,192.168.1.101/32' ipv4.routes '10.0.0.0/8 192.168.1.10,192.168.0.0/16 192.168.1.11' ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,4.4.4.4' ipv4.method manual

 type ethernet:创建连接时候必须指定类型,类型有很多,可以通过nmcli c add type -h看到,这里指定为ethernet。
 con-name ethX ifname ethX:第一个ethX表示连接(connection)的名字,这个名字可以任意定义,无需和网卡名相同;第二个ethX表示网卡名,这个ethX必须是在nmcli d里能看到的。
 ipv4.addresses '192.168.1.100/24,192.168.1.101/32':配置2个ip地址,分别为192.168.1.100/24和192.168.1.101/32
 ipv4.gateway 192.168.1.254:网关为192.168.1.254
 ipv4.dns '8.8.8.8,4.4.4.4':dns为8.8.8.8和4.4.4.4
 ipv4.method manual:配置静态IP

对应生成的网卡配置文件就是
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0-test 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.1.100
PREFIX=24
IPADDR1=192.168.1.101
PREFIX1=32
GATEWAY=192.168.1.254
DNS1=8.8.8.8
DNS2=4.4.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0-test
UUID=ced95bb1-d856-4ace-8f2e-79a3f2d572c6
DEVICE=eth0-test
ONBOOT=yes

#通过该nmcli c 可以看到增加了一条连接
[root@CentOS8 ~]# nmcli c
NAME       UUID                                  TYPE      DEVICE 
eth0       6eebabfa-8f58-40af-b298-a385094b2f04  ethernet  eth0   
eth0-test  ced95bb1-d856-4ace-8f2e-79a3f2d572c6  ethernet  --     

3.3 使用nmtui命令管理网卡

nmtui
nmtui edit eth0
 

 

3.4 配置yum/dnf 源

CentOS 8 默认是会读取centos.org的mirrorlist的,所以一般来说是不需要配置镜像的。

cd /etc/yum.repos.d
#备份
cp CentOS-Base.repo CentOS-Base.repo.bak
cp CentOS-AppStream.repo CentOS-AppStream.repo.bak
cp CentOS-Extras.repo CentOS-Extras.repo.bak


---
vim /etc/yum.repos.d/CentOS-Base.repo
[BaseOS]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

---
vim /etc/yum.repos.d/CentOS-AppStream.repo
[AppStream]
name=CentOS-$releasever - AppStream
baseurl=https://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficia

---
vim /etc/yum.repos.d/CentOS-Extras.repo
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.aliyun.com/centos/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

3.5 关闭selinux firewalld

setenforce 0
systemctl stop firewalld
systemctl disable firewalld

3.6 安装tab补全插件

yum install bash-completion
source /etc/profile

3.7 最小化系统安装Cockpit Web控制台

dnf install cockpit -y
systemctl start cockpit
netstat -lntup|grep 9090

浏览器访问 https://ip:9090

3.8 常用软件包安装

对开发者的工具支持,可以用原生yum源安装了,不再需要通过第三方yum源。
@注意:CentOS8 严格区分pip2 和pip3,python2-pip和python3-pip

dnf install python3 php perl java-1.8.0 java-11 maven docker mysql-server mlocate lrzsz tree vim nc nmap wget bash-completion htop iotop iftop lsof net-tools sysstat unzip bc psmisc telnet-server -y

3.9 nftables防火墙规则

更详细的官方文档

  • nftables 框架替换了 iptables 默认网络数据包过滤工具,可以通过nft命令可编程式的配置防火墙。
  • firewalld也是Linux的防火墙,同时支持iptables和nftables,最新版本默认使用nftables。
  • 简单的说firewalld是基于nftfilter防火墙的用户界面工具。而iptables和nftables是命令行工具。
  • firewalld引入区域的概念,可以动态配置,让防火墙配置及使用变得简便。
  • 从用户的角度来看,nftables添加了一个名为nft的新工具,它取代了iptables,arptables和ebtables中的所有其他工具。
  • 从架构的角度来看,它还取代了处理包过滤规则集的运行时评估的内核部分。

查询所有表名

[root@CentOS8 ~]# nft list tables
table ip filter
table ip6 filter
table bridge filter
table ip security
table ip raw
table ip mangle
table ip nat
table ip6 security
table ip6 raw
table ip6 mangle
table ip6 nat
table bridge nat

查看某个表的规则

[root@CentOS8 ~]# nft list table filter
table ip filter {
    chain INPUT {
        type filter hook input priority 0; policy accept;
    }

    chain FORWARD {
        type filter hook forward priority 0; policy accept;
    }

    chain OUTPUT {
        type filter hook output priority 0; policy accept;
    }
}

打开交互配置模式

nft -i

3.10 nft基础操作

云栖社区-linux nftables简介和基础操作

1、增

增加表:nft add table fillter
增加链:nft add chain filter input { type filter hook input priority 0 \; } # 要和hook(钩子)相关连
增加规则:nft add rule filter input tcp dport 22 accept

2、删

只需要把上面的 add 改为 delete 即可

3、改

更改链名用rename
更改规则用replace

4、查

nft list ruleset # 列出所有规则
nft list tables # 列出所有表
nft list table filter # 列出filter表
nft chain filter input # 列出filter表input链
以上命令后面也可以加 -nn  用于不解析ip地址和端口
加 -a 用于显示 handles


作者:Linux丶晨星
链接:https://www.jianshu.com/p/023be067b743
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

推荐阅读