# Centos问题
# 网络问题
# 修改域服务器
# 方法一
/etc/resolv.conf是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。/etc/resolv.conf保存DNS是暂时的,当重新启动network时,/etc/resolv.conf恢复到了初始状态,要想更改,可尝试下边的方法:
PEERDNS=no
DNS1=192.168.1.1
DNS2=192.168.1.2
2
3
# 方法二
centos中有一套专门的工具nmcli来管理网络问题,参考文档有:
使用nmcli来改变域名:
- nmcli connection show:查看当前网络。
- nmcli con mod eth0 ipv4.dns "114.114.114.114 8.8.8.8"
- nmcli con up eth0
# 防火墙常见操作
参考资料:
下面是常用操作:
firewall常用操作
# 查看防火墙状态 firewall-cmd --state # 永久开放23端口 firewall-cmd --add-port=23/tcp --permanent # 永久关闭23端口 firewall-cmd --zone=public --remove-port=23/tcp --permanent # 重启防火墙 firewall-cmd --reload # 查询某个端口是否开启 firewall-cmd --query-port=23/tcp # 查看当前激活的zone firewall-cmd --get-active-zones # 查看zone所有的信息 firewall-cmd --zone=trusted --list-all # 查看所有的zones firewall-cmd --list-all-zones # 查看所有端口 firewall-cmd --zone=public --list-ports firewall-cmd --list-ports # 查询所有接口 firewall-cmd --permanent --zone=trusted --change-interface=docker0 # 增加删除zone的接口 firewall-cmd --zone=public --add-interface eth0 --permanent firewall-cmd --zone=public --remove-interface eth0 --permanent # 将指定接口添加到trusted域 firewall-cmd --permanent --zone=trusted --change-interface=docker0 # 检查是否有配置错误 firewall-cmd --check-config # 查询指定的端口是否开放 firewall-cmd --query-port=3306/tcp # 禁用firewalld systemctl stop firewalld systemctl disable firewalld systemctl mask --now firewalld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34iptables常用操作
配置文件位置:/etc/sysconfig/iptables
iptables -I INPUT -p tcp --dport xxx -j ACCEPT # 开启某个端口
# Yum问题
# fastestmirror
# 出现场景
yum命令出现Loaded plugins: fastestmirror。
# 解决办法
fastestmirror是yum的一个加速插件,这里是插件提示信息是插件不能用了。需要把它关闭:
- 在/etc/yum/pluginconf.d/fastestmirror.conf配置文件中,将enabled=1改为enabled=0。
- 在/etc/yum.conf配置文件中,将plugins=1改为plugins=0。
- 重启系统。
# 更改镜像源
切换为华为云的源:
cd /etc/yum.repos.d/ # 进入 /yum.repos.d 目录
mkdir bak # 新建一个bak文件夹,用来备份
mv *.repo bak/ # 将当前文件夹所有以.repo结尾的文件全部移入备份文件夹
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo
# 下载华为云的yum源配置文件到 /yum.repos.d 目录
yum clean all # 清空缓存
yum makecache # 生成缓存
yum repolist # 查看当前使用的镜像源,若操作无误,则已经更换到华为云
2
3
4
5
6
7
8
9
10
11
# 仓库管理
查看仓库内容:
yum repolist all # 显示所有资源库
yum repolist enabled # 显示所有已启动的资源库
yum repolist disabled # 显示所有被禁用的资源库
yum repolist all | grep mysql
2
3
4
仓库操作:
yum-config-manager --add-repo repository_url # 添加仓库
yum-config-manager --disable itemName # 禁用仓库
yum-config-manager --enable itemName # 激活仓库
2
3
如果删除仓库则再/etc/yum.repos.d/下手动删除对应repo文件
# 离线安装
有时候项目的服务器是不能直接连网,这时要装软件就好麻烦的,需要在一台centos上把软件装好,然后把缓存包拷贝到目标服务器安装,需要使用下面步骤:
下面是在本地能联网的服务器上操作:
- 安装yumdownloader来下载RPMs:
yum install yum-utils -y
- 下载createrepo:
yum install --downloadonly --downloaddir=/home/createrepo createrepo
- 下载其他第三方软件,这里以docker举例:
yum install --downloadonly --downloaddir=/home/docker docker-ce docker-ce-cli containerd.io
- 将上面下载的缓存打包:
tar -zcvf docker.tar.gz /home/docker tar -zcvf createrepo.tar.gz /home/createrepo
下面是在离线目标服务器上安装:
解压缓存包
tar -xvf docker.tar.gz tar -xvf createrepo.tar.gz
安装createrepo
rpm -ivh *.rpm
使用createrepo来使用之前的缓存来创建包信息:
sudo createrepo /home/rootuser/docker
配置本地yum源,可以新建一个local.repo。
[local] name=local baseurl=file:///home/rootuser/docker # 软件包所在的目录 enabled=1 gpgcheck=0 # gpgcheck=1 # gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 # 本地yum源密钥
1
2
3
4
5
6
7
8安装docker。如果安装过程中出现is not signed提示信息,需要在yum后面加上--nogpgcheck参数。
sudo yum install docker-ce docker-ce-cli containerd.io
注意yum也有自身的缓存(/etc/yum.conf):
- cachedir为缓存路径,默认值是/var/cache/yum/$basearch/$releasever
- keepcache=1,默认值为0,意味安装完成后删除包。
# 常见操作
# sudo命令找不到
解决在sudo下命令找不到的情况:
- 编辑文件/etc/sudoers,将Defaults env_reset改为Defaults !env_reset。
- 编辑用户根目录下的配置文件.bashrc,并追加
alias sudo='sudo env PATH=$PATH'
- source ~/.bashrc。
# 合并文件夹
cp -frap source/* target/
# SSH仅限IP登陆
这个场景中SSH仅限于几个IP登陆,需要修改/etc/ssh/sshd_config
Port 2222 #默认为22端口,这里修改为2222端口
PubkeyAuthentication yes #开启公钥认证
AllowUsers sshClient@ip #设置允许(客户机IP地址)的sshClient用户登录
DenyUsers all #禁止所有其他用户登录
2
3
4
# pam_faillock锁定用户
参考文档:
当一个用户输入密码超过一定次数就锁定几分钟。在centos中修改:
- /etc/pam.d/system-auth
- /etc/pam.d/password-auth
在debian中修改:
- /etc/pam.d/common-auth
- /etc/pam.d/common-account
以debian为例:
在common-account的末尾添加:
account required pam_faillock.so
在common-auth中添加:
auth required pam_faillock.so preauth audit silent deny=2 even_deny_root unlock_time=300
auth [success=1 default=ignore] pam_unix.so nullok # 第二行是原有的,不用改。
auth [default=die] pam_faillock.so authfail audit deny=2 even_deny_root unlock_time=300
auth sufficient pam_faillock.so authsucc audit deny=2 even_deny_root unlock_time=300
2
3
4
系统中查看正在锁定的用户:
faillock
系统中重置已锁定的用户:
faillock --user username --reset
# fail2ban锁定用户
我们去访问一个服务器的时候,一定会留下访问日志。fail2ban就是一个防止暴力破解的一个软件,能够监控系统日志,匹配日志中的错误信息(使用正则表达式),执行相应的屏蔽动作(支持多种,一般为调用 iptables)简单来说如果短时间内一个ip来访问我们的服务器,如果密码失败次数多我们可以来限制他,让这个ip过一段时间再来访问。
fail2ban随带一组预先定义的“jail”(暂译“监狱”),这些jail使用针对特定应用程序的日志过滤器来检测常见攻击。你还可以编写自定义的jail,阻止针对任意应用程序的任何特定的攻击。
以gitea为例,我们来说明如何使用它:
编写filter:
[Definition]
failregex = .*(Failed authentication attempt|invalid credentials|Attempted access of unknown user).* from <HOST>
ignoreregex =
2
3
编写jail规则:
[gitea]
enabled = true
filter = gitea
logpath = logpath
maxretry = 3
findtime = 3600
bantime = 300
action = iptables-allports[chain="FORWARD"]
2
3
4
5
6
7
8
如此fail2ban就能起作用,下面是常用命令:
- 查看监狱列表:
fail2ban-client status
- 查看某个具体监狱:
fail2ban-client status servicename
- 让某个IP解禁:
fail2ban-client set servicename unbanip 192.168.1.1
# 系统操作
查看Centos版本命令:
cat /etc/centos-release
查看使用某个端口的进程:
netstat -anp | grep 端口号。
搜索相关的进程:
- ps -ef | grep sshd #根据进程名搜索
- ps -ef | grep 522 #根据进程ID查询
根据进程id杀死相应的进程:
sudo kill -9 522
修改时区:
timedatectl set-timezone Asia/Shanghai
# RPM操作
Centos查看是否安装某个包:
rpm –qa | grep telnet-server
说明:
- –a选项是查询所有已经安装的软件包。
- -q是查询一个包是否安装。
- 已经安装的rpm包不会显示后缀.rpm ,而未安装的包则显示后缀.rpm。
查看一个包的详细信息:
rpm -qi 包名
查看一个包安装了哪些文件:
rpm -ql 包名
查看一个文件是由哪个包安装的:
rpm -qf 文件名
查看vim是由哪个rpm包安装来的:
rpm -qf
which vim
← Linux网络配置 Debian常见问题 →