[内容] 静态路由表的添加(CentOS Linux & RHEL 版)

内容目录:

内容一:添加临时路由器表
1.1 案例一:添加某一个 IP 地址的路由表
1.2 案例二:删除某一个 IP 地址的路由表
1.3 案例三:添加某一个网段的路由表
1.4 案例四:删除某一个网段的路由表

内容二:添加永久路由表
2.1 添加永久路由表
2.1.1 案例一
2.1.2 案例二
2.2 启动要添加路由表的网卡
2.2.1 启动要添加路由表的网卡的格式
2.2.2 启动要添加路由表的网卡的案例

具体的内容:

内容一:临时路由器表到管理
1.1 案例一:添加某一个 IP 地址的路由表

# route add -host 192.168.2.1 netmask 255.255.255.255 gw 192.168.1.1 dev eth0

或者:

# ip route add 192.168.2.1/32 via 192.168.1.1 dev eth0

(补充:这里以指向 192.168.2.1 IP 地址的流量需要通过 eth0 网卡和 192.168.1.1 网关为例)

1.2 案例二:删除某一个 IP 地址的路由表

# route del -host 192.168.2.1

(补充:这里删除 192.168.2.1 IP 地址的路由表为例)

# ip route del 192.168.2.1/32 via 192.168.1.1 dev eth0

(补充:这里删除 192.168.2.1 IP 地址导向 192.168.1.1 IP 地址的路由表为例)

1.3 案例三:添加某一个网段的路由表

# route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

(补充:这里以指向 192.168.2.0/24 网段的流量需要通过 192.168.1.1 网关为例)

或者:

# ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

(补充:这里以指向 192.168.2.0/24 网段的流量需要通过 192.168.1.1 eth0 网关为例)

1.4 案例四:删除某一个网段的路由表

# route del -net 192.168.2.0/24

(补充:这里删除 192.168.2.0/24 网段的路由表为例)

或者:

# ip route del 192.168.2.0/24 via 192.168.1.1 dev eth0

(补充:这里以指向 192.168.2.0/24 网段的流量需要通过 192.168.1.1 eth0 网关为例)

内容二:添加永久路由表
2.1 添加永久路由表
2.1.1 案例一

# nmcli con mod eth0 ipv4.routes "192.168.2.0/24 192.168.3.1"

(补充:这里以给 eth0 网卡添加 192.168.2.0/24 通过 192.168.3.1 的网关为例)

2.1.2 案例二

# vim /etc/sysconfig/network-scripts/route-enp1s0

创建以下内容:

192.168.100.3/32 via 192.168.101.101 dev enp1s0

(补充:这里以添加 192.168.100.3/32 通向 192.168.101.101 网关的永久路由为例)

2.2 启动要添加路由表的网卡
2.2.1 启动要添加路由表的网卡的格式

# nmcli connection up <the name of the network card to add the routing table to>

或者:

# reboot

2.2.2 启动要添加路由表的网卡的案例

# nmcli connection up enp1s0

或者:

# reboot

(补充:这里以重启名为 enp1s0 网卡为例)

[内容] Ansible 魔法变量

注意:

在使用 Ansible 魔法变量之前,要先安装 Ansible、添加被 Ansible 管理的主机,并且需要 root 权限

正文:

内容一:Ansible 常用魔法变量

1) inventory_hostname

显示服务器名


2) group_names

显示服务器所在组


3) groups

显示服务器所在组,以及组里的所有服务器


4) hostvars

显示所有相关信息

内容二:Ansible 魔法变量的使用
2.1 在命令行使用魔法变量
2.1.1 魔法变量的使用格式

# ansible <Ansible server name or Ansible group name> -m debug -a var=<Ansible magic variable name>

2.1.2 魔法变量的使用案例
2.1.2.1 显示所有魔法变量

# ansible -m debug -a var=hostvars all

(补充:这里以显示所有服务器上的所有魔法变量为例)

2.1.2.2 显示某一个魔法变量

# ansible -m debug -a var=inventory_hostname all

(补充:这里以显示所有服务器上的 inventory_hostname 魔法变量为例)

2.2 在 playbook 使用魔法变量
2.2.1 在 playbook 的变量中使用魔法变量

# vim test.yml
---
- name: test
  hosts: all
  vars:
    server_all:
    - server_name: IP_ADDRESS
      server_cont: "{{ ansible_default_ipv4.address }}"
    - server_name: HOST_NAME
      server_cont: "{{ inventory_hostname }}"
  tasks:
......


补充:这里以
1) 在 test.yml 中,
2) 创建一个名为 test,
3) 在所有服务器上执行,
4) 创建名为 server_all 的变量数组,
5) 里面有名为 IP_ADDRESS 的 IP 地址事实变量和名为 HOST_NAME 的服务器名称版本事实变量,
的 playbook 为例

2.2.2 在 playbook 的条件判断 when 中使用魔法变量
2.2.2.1 案例一:使用一个魔法变量

# vim test.yml

添加以下内容:

......
when: "'test' in group_names"
......

(补充:这里以在 test.yml 中, test 为服务器的所属组为条件判断为例)

2.2.2.2 案例二:使用两个魔法变量

# vim test.yml

添加以下内容:

......
when: inventory_hostname in groups.test
......

(补充:这里以在 test.yml 中,服务器名在 test 组中为条件判断为例)

2.3 在 json 文档上使用魔法变量
2.3.1 在 json 文档上使用魔法变量

# vim hosts.j2

创建以下内容:

{% for host in groups['all'] %}
{{ hostvars[host]['ansible_facts']['hostname'] }} {{ hostvars[host]['ansible_facts']['default_ipv4']['address'] }}
{% endfor %}

(补充:这里以创建所有服务器名和 IP 地址对应的关系,名为 hosts.j2 的 json 文件为例)

2.3.2 使用 json 文档的 Playbook

# vim test.yml

添加以下内容:

......
  - name: template
    template:
      src: hosts.j2
      dest: /root/hosts.txt
......

(补充:这里以在 test.yml 中,使用 hosts.j2 创建 /root/hosts.txt 为例)

[内容] Ansible 自定义变量

注意:

在使用 Ansible 自定义变量之前,要先安装 Ansible、添加被 Ansible 管理的主机,并且需要 root 权限

正文:

内容目录:

内容一:Ansible 全局变量的使用

内容二:Ansible 服务器列表变量的设置
2.1 给某一台服务器设置变量的案例
2.2 给某一个组设置变量的案例
2.3 给所有服务器设置变量的案例

内容三:Ansible Playbook 变量的设置
3.1 Ansible Playbook 直接设置变量的案例
3.2 Ansible Playbook 直接设置数组变量的案例
3.3 Ansible Playbook 设置变量文件的案例
3.3.1 创建变量文件
3.3.2 导入变量文件
3.4 Ansible Playbook 设置数组变量文件的案例
3.4.1 创建变量文件
3.4.2 导入变量文件

具体的内容:
内容一:Ansible 全局变量的使用

# ansible dev -m shell -a whoami -e ansible_user=root -e ansible_password=redhat

(补充:这里以 root 是管理被管理服务器所使用的用户,redhat 是这个用户的密码为例)

内容二:Ansible 服务器列表变量的设置
2.1 给某一台服务器设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1 ansible_password=root


补充:这里以
1) 在 host 文件里
2) 设置 192.168.1.1 的 Ansible 密码是 root(当它被 Ansible 操作时需要输入此密码)
为例

2.2 给某一个组设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1
192.168.1.2 
192.168.1.3 

[web:vars]
ansible_user=root
ansible_password=root
......


补充:这里以
1) 在 host 文件里
2) 设置 web 组的 Ansible 用户是 root,密码是 root(当它们被 Ansible 操作时需要输入此密码)
为例

2.3 给所有服务器设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1
192.168.1.2
192.168.1.3

[db]
192.168.1.4
192.168.1.5
192.168.1.6

[all:vars]
ansible_user=root
ansible_password=root
......


补充:这里以
1) 在 host 文件里
2) 设置所有服务器的 Ansible 用户是 root,密码是 root(当它们被 Ansible 操作时需要输入此密码)
为例

内容三:Ansible Playbook 变量的设置
3.1 Ansible Playbook 直接设置变量的案例

# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars:
    user: tom
    home: /home/joe
  tasks:
  - name: Add a user
    user:
      name: "{{ user }}"
      comment: name is {{ user }}
......


补充:这里以
1) 在 test.yml 中
2) 创建一个名为 test
3) 在所有服务器上执行
4) 设置 user 变量为 tom
5) home 变量为 /home/joe
6) 创建名为 user 注释内容为 user 的用户
的 playbook 为例

3.2 Ansible Playbook 直接设置数组变量的案例

# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars:
  - user1:
      a_name: zhang
      b_name: san
  - user2:
      a_name: li
      b_name: si
  tasks:
  - name: Add a user
    user:
      name: "{{ users.user1.a_name }}{{ users.user1.b_name }}"
......


补充:这里以
1) 在 test.yml 中
2) 创建一个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 users.user1.a_name 和 users.user1.b_name
的 playbook 为例

3.3 Ansible Playbook 设置变量文件的案例
3.3.1 创建变量文件

# vim vars.yaml

创建以下内容:

user: tom
home: /home/joe

(补充:这里以在 vars.ymal 中添加变量 user 值为 tom,变量 home 值为 /home/joe 为例)

3.3.2 导入变量文件

# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars_files:
    - vars.yaml
  tasks:
  - name: Add a user
    user:
      name: "{{ user }}"
      comment: name is {{ user }}
......


补充:这里以
1) 在 test.yml 中
2) 创建一个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 user 和 home
的 playbook 为例

3.4 Ansible Playbook 设置数组变量文件的案例
3.4.1 创建变量文件

# vim vars.yaml

创建以下内容:

users:
  user1:
    a_name: san
    b_name: zhang
    c_name: /home/zhangsan
  user2:
    a_name: si
    b_name: li
    c_name: /home/lisi

(补充:这里以在 vars.ymal 中添加 user1 和 user2 两组数组变量为例)

3.4.2 导入变量文件

# vim test.yaml

创建以下内容:

---
- name:
  hosts:
  vars_files:
  - vars.yaml
  tasks:
  - name: Add a user
    user:
      name: "{{ users.user1.a_name }}{{ users.user1.b_name }}"
......


补充:这里以
1) 在 test.yml 中
2) 创建一个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 users.user1.a_name 和 users.user1.b_name
的 playbook 为例

[实验] 自动挂载服务的搭建 (通过 Autofs 和 NFS 实现) (CentOS Linux 8 版)

纪念:站主于 2020 年 6 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

步骤目录:

步骤一:规划拓扑
1.1 服务器列表
1.2 服务器列表简介

步骤二:系统环境要求

步骤三:所有服务器安装 NFS 服务
3.1 所有服务器安装 NFS 服务
3.2 设置所有服务器开机自启 NFS 服务
3.3 所有服务器启动 NFS 服务

步骤四:配置 NFS 服务
4.1 创建用于 NFS 服务的目录
4.1.1 创建被 NFS 服务共享的目录
4.1.2 创建用于自动挂载 NFS 服务分享目录的目录
4.2 配置服务端的 NFS 服务配置文件
4.2.1 在服务端上添加可被 NFS 服务挂载的选项
4.2.2 让刚刚修改的 NFS 服务配置文件生效
4.3 部署客户端的 Autofs 自动挂载服务
4.3.1 安装 Autofs 服务
4.3.2 设置客户端开机自启 Autofs 服务
4.3.3 在客户端上设置 Autofs 自动挂载服务
4.3.3.1 在客户端上设置 Autofs 自动挂载的主配置文件
4.3.3.2 在客户端上设置 Autofs 的从配置文件
4.3.4 让刚刚修改的 Autofs 自动挂载服务配置文件生效

步骤五:显示 Autofs 自动挂载服务是否设置成功
5.1 显示客户端当前的目录挂载情况
5.2 进入到 Autofs 自动挂载的目录
5.3 再次显示客户端当前的目录挂载情况

具体的操作步骤:

步骤一:规划拓扑
1.1 服务器列表

服务端 192.168.101.10
客户端 192.168.101.11

1.2 服务器列表简介

1) 服务器提供 NFS 服务将自己的目录分享
2) 客户端挂载和使用 NFS 服务将服务端分享的目录挂载在自己的目录上

步骤二:系统环境要求

1) 所有服务器的系统都需要是 CentOS 8 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器系统都要配置好可用的软件源
4) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机名
5) 所有服务器都要可以相互 ping 通自己和对方的 IP 地址和主机名

步骤三:所有服务器安装 NFS 服务
3.1 所有服务器安装 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# yum -y install rpcbind nfs-utils

3.2 设置所有服务器开机自启 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# systemctl enable nfs-server

3.3 所有服务器启动 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# systemctl start nfs-server

步骤四:配置 NFS 服务
4.1 创建用于 NFS 服务的目录
4.1.1 创建被 NFS 服务共享的目录

(只在服务端上执行以下步骤)

# mkdir /nfsshare

4.1.2 创建用于自动挂载 NFS 服务分享目录的目录

(只在客户端上执行以下步骤)

# mkdir /autofs

4.2 配置服务端的 NFS 服务配置文件
4.2.1 在服务端上添加可被 NFS 服务挂载的选项

(只在服务端上执行以下步骤)

# vim /etc/exports

添加以下内容:

......
/nfsshare 192.168.101.0/24(rw,sync,no_root_squash,no_subtree_check)

(补充:这里的 192.168.101.0.24 是客户端的 IP 地址所在的网段)

4.2.2 让刚刚修改的 NFS 服务配置文件生效

(只在服务端上执行以下步骤)

# exportfs -a

4.3 部署客户端的 Autofs 自动挂载服务
4.3.1 安装 Autofs 服务

(只在客户端上执行以下步骤)

# yum -y install autofs

4.3.2 设置客户端开机自启 Autofs 服务

(只在客户端上执行以下步骤)

# systemctl enable autofs

4.3.3 在客户端上设置 Autofs 自动挂载服务
4.3.3.1 在客户端上设置 Autofs 自动挂载的主配置文件

(只在客户端上执行以下步骤)

# vim /etc/auto.master

将以下内容:

......
#
/misc   /etc/auto.misc
#
......

修改为:

......
/misc   /etc/auto.misc
/autofs /etc/auto.autofs
......

(补充:在这里指定了 /etc/auto.autofs 为 Autofs 的从配置文件,并且将 autofs 的主目录设置为 /autofs)

4.3.3.2 在客户端上设置 Autofs 的从配置文件

(只在客户端上执行以下步骤)

# cp /etc/auto.misc /etc/auto.autofs
# vim /etc/auto.autofs

将以下内容:

......
cd              -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
......

修改为:

......
cd              -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
directory01             -fstype=nfs,rw 192.168.101.10:/nfsshare
......

(补充:在这里指定了 Autofs 的次级目录为 directory01,即:/autofs/directory01)

4.3.4 让刚刚修改的 Autofs 自动挂载服务配置文件生效

(只在客户端上执行以下步骤)

# systemctl restart autofs

步骤五:显示 Autofs 自动挂载服务是否设置成功
5.1 显示客户端当前的目录挂载情况

(只在客户端上执行以下步骤)

# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        957M     0  957M   0% /dev
tmpfs           971M     0  971M   0% /dev/shm
tmpfs           971M   17M  954M   2% /run
tmpfs           971M     0  971M   0% /sys/fs/cgroup
/dev/vda1        10G  1.6G  8.5G  16% /
tmpfs           195M     0  195M   0% /run/user/0

5.2 进入到 Autofs 自动挂载的目录

(只在客户端上执行以下步骤)

# cd /autofs/directory01

5.3 再次显示客户端当前的目录挂载情况

(只在客户端上执行以下步骤)

# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  957M     0  957M   0% /dev
tmpfs                     971M     0  971M   0% /dev/shm
tmpfs                     971M   17M  955M   2% /run
tmpfs                     971M     0  971M   0% /sys/fs/cgroup
/dev/vda1                  10G  1.6G  8.5G  16% /
tmpfs                     195M     0  195M   0% /run/user/0
192.168.101.10:/nfsshare   10G  1.6G  8.5G  16% /autofs/directory01

(补充:在进入到 Autofs 自动挂载的目录后,自动挂载就在系统中自动出现了)

[工具] Shell 取消所有已开放的端口策略 (firewalld 版)

介绍:

作者:朱明宇
名称:取消所有已开放的端口策略
作用:取消所有已开放的端口策略

使用方法:
1. 给此脚本添加执行权限
2. 执行此脚本

脚本:

#!/bin/bash

systemctl start firewalld
systemctl enable firewalld

for i in `firewall-cmd --list-all | grep ports | egrep [0-9] | awk -F':' '{print $2}'`
do
        pports=`echo $i | awk -F'/' '{print $1}'`
        ptus=`echo $i | awk -F'/' '{print $2}'`

        firewall-cmd --remove-port=$pports/$ptus --permanent

done

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload