Centos7网络配置及SSH自定义端口

本文介绍了Centos7中网络的配置和SSH自定义端口的设置方法,核心命令:nmcli, nmtui 介绍

Centos7 中网络配置

nmcli命令与nmtui命令介绍

nmcli命令

在CentOS / RHEL 7中网络管理命令行工具,叫nmcli(command-line tool for controlling NetworkManager)。经常使用ifconfig的用户应该在CentOS 7中避免使用ifconfig,如果需要使用ifconfig命令,可以参考:如下命令进行安装。

1
2
3
4
5
6
# yum search ifconfig
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
net-tools.x86_64 : Basic networking tools
# yum install -y net-tools

常用的几个命令及用法:

命令 作用
nmcli dev status 显示所有的网卡信息
nmcli con show 显示所有的连接信息
nmcli con up <ID> 激活网口,启动一个连接
nmcli con down <ID> 关闭网口连接,如果autoconnect设置成yes的话,重启后会自动连接
nmcli dev dis <DEV> 关闭这个网卡设备,就算有autoconnect也不会重启
nmcli net off 关闭所有受NetworkManager管理的网卡
nmcli con add ... 添加一个新的连接
nmcli con mod <ID> 修改指定ID的连接
nmcli con del <ID> 删除指定ID的连接

nmtui命令

NetworkManager 文本用户界面(TUI)工具 nmtui 可提供一个文本界面配置由 NetworkManager 控制的网络。如果提示not found命令的话,可以 yum install -y NetworkManager-tui进行安装。

输入这个命令后,会显示如下页面:

这里有一个操作细节:

  • 键盘的,, , 来控制方向;
  • 空格用来选择/选中;
  • 最后要使用service network restart来使保存生效

编辑页面:

下面是配置一个固定IP的方式方法,注意红色线框部分需要勾选。代表:1. 自启动;2. 对所有用户有效;

网络配置

按照nmtui命令进行配置,Edit之后,选择Ok保存,重启network服务。

配置完成之后,查看配置信息:

看看配置文件:

1
vi /etc/sysconfig/network-script/ifcfg-eth0

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=1c462a5e-aff5-423e-a21b-df1112a443f4
DEVICE=eth0
ONBOOT=yes
IPV6_PRIVACY=no
BOOTPROTO=none
IPADDR=192.168.4.59
PREFIX=24
GATEWAY=192.168.4.50
DNS1=192.168.4.50

配置完成。

Centos7的镜像及源地址

  1. 官方镜像地址:

    官方下载地址

    阿里云(推荐)

  2. Centos 7源

    第一步:备份你的原镜像文件,以免出错后可以恢复。

    1
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

    第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/

    1
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    或者使用curl命令

    1
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

    第三步:运行yum makecache生成缓存

    1
    2
    yum clean all
    yum makecache

    参考资料:阿里云对应各个Linux的源Repo

SSH自定义端口的方法

与Ubuntu不一样,Centos的配置可能复杂一些,需要增加SELinux相应的配置,见下文:

SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。强制访问控制系统的用途在于增强系统抵御 0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)的能力,所以它不是网络防火墙或 ACL 的替代品。

  1. 查看是否已安装SSH软件包(可跳过)

    1
    #rpm -qa|grep ssh
  2. 检查服务是否开启

    1
    systemctl status sshd.service
  3. 检查进程运行状态(可跳过)

    1
    ps -ef |grep sshd
  4. 检查程序运行端口(可跳过)

    1
    # netstat -anpl |grep sshd
  5. 修改sshd配置文件

    1
    # vi /etc/ssh/sshd_config 

    取消#Port 22前面的#号,另起一行新增Port 27300(自定义端口),ESC + :wq保存退出。

  6. 重启SSH服务

    1
    systemctl restart sshd.service
  7. 防火墙相关,默认情况下,防火墙会开启。

    查看防火墙开启的状态

    1
    2
    3
    4
    5
    # firewall-cmd --state
    running # 说明是开启的

    # firewall-cmd --state
    not running # 说明是被禁用了,可以使用 systemctl start firewalld 来开启

    开放防火墙端口: 添加端口

    1
    firewall-cmd --zone=public --add-port=27300/tcp --permanent

    重新加载

    1
    firewall-cmd --reload

    重启服务

    1
    systemctl restart firewalld.service

    查看端口

    1
    firewall-cmd --zone=public --list-all
  8. 修改SELinux端口:

    检查SELinux是否启用

    1
    2
    3
    4
    # sestatus -v |grep SELinux
    SELinux status: enabled #表示启用
    SELinuxfs mount: /sys/fs/selinux
    SELinux root directory: /etc/selinux

    检查semanage是否安装

    1
    # rpm -qa |grep policycoreutils-python

    多数情况:

    若未安装,请先安装工具包

    1
    2
    # yum update -y
    # yum install -y policycoreutils-python

    查看当前selinux允许的端口

    1
    2
    # semanage port -l |grep ssh
    ssh_port_t tcp 22

    添加新端口

    1
    # semanage port -a -t ssh_port_t -p tcp 27300

    注意:无法使用如下命令,去删除默认的SELinux配置端口22

    1
    semanage port -d -t ssh_port_t -p tcp 22

    会收到如下的提示:

    1
    ValueError: Port tcp/22 is defined in policy, cannot be deleted

    这里不用去纠结,不能删除的主要原因是SELinux中的默认Policy无法删除!!!
    只用删除firewall中的配置,并且保证firewall中没有放行22端口,SSH配置文件中没有Port 22,就行了。

    检查是否添加成功

    1
    2
    # semanage port -l |grep ssh
    ssh_port_t tcp 27300, 22 # 说明添加成功了

    重启SSH服务

    1
    # systemctl restart sshd.service