首页
归档
时光轴
推荐
Cloud
图床
导航
Search
1
Deploy OpenStack offline based on Kolla
737 阅读
2
openstact 基础环境安装 (手动版)
687 阅读
3
Mariadb 主从复制&读写分离
642 阅读
4
Typecho 1.2.0 部署
640 阅读
5
FusionCompute8.0 体验
573 阅读
Python
Linux
随笔
mysql
openstack
Search
标签搜索
linux
Pike
python
爬虫
openstack
mysql
Essay
Ansible
docker
Zabbix
kolla
Internet
Redis
1+X
Hyper-V
jenkins
Kickstart
自动化
sh
pxe
Acha
累计撰写
77
篇文章
累计收到
1
条评论
首页
栏目
Python
Linux
随笔
mysql
openstack
页面
归档
时光轴
推荐
Cloud
图床
导航
搜索到
77
篇与
的结果
2021-03-16
ansible 学习
ansible inventory ANSIBLE_CONFIG ansible.cfg 项目目录 ./ansible.cfg 当前用户的家目录 /etc/ansible/ansible.cfg [root@manager ~]# cat /etc/ansible/ansible.cfg inventory = /etc/ansible/hosts #主机列表配置文件 library = /usr/share/my_modules/ #库文件存放目录 remote_tmp = ~/.ansible/tmp #临时py文件存放在远程主机目录 local_tmp = ~/.ansible/tmp #本机的临时执行目录 forks = 5 #默认并发数 sudo_user = root #默认sudo用户 ask_sudo_pass = True #每次执行是否询问sudo的ssh密码 ask_pass = True #每次执行是否询问ssh密码 remote_port = 22 #远程主机端口 host_key_checking = False #跳过检查主机指纹 log_path = /var/log/ansible.log #ansible日志 [privilege_escalation] #如果是普通用户则需要配置提权 become=True become_method=sudo become_user=root become_ask_pass=False 生成密钥 生成密钥名字为dsa , 生成的时候会提示生成的密钥的路径以及密码,可以不输入,默认在 ~/.ssh/目录下 ssh-keygen -t dsa 将生成的公钥上传到指定的服务器中 ssh-copy-id -i ~/.ssh/id_dsa.pub user@192.168.0.201 创建工作目录 mkdir project1/ vim hosts [youto] 192.168.0.201 192.168.0.202 Ad-Hoc [ ping ] ansible youto -m ping -i hosts [查看磁盘信息] ansible youto -m shell -a "df -h" -i hosts command 不能支持管道符 playbook [][] 示例 检查yum语法 ansible-palaybook --syntax http.yml nfs.yaml nfs 的 配置文件 exports.j2 /data 192.168.0.201(rw) [共享文件夹] [允许访问主机] (权限) - hosts: 192.168.0.202 tasks: # yum 安装 nfs-utils - name: Install NFS Server yum: name=nfs-utils state=present # 分发 配置文件 - name: Configure NFS Server copy: src=./exports.j2 dest=/etc/exports backup=yes # 创建 组 - name: Create NFS Group group: name=nfss gid=666 # 创建 用户 - name: Create NFS User user: name=nfss uid=666 group=666 shell=/sbin/nologin create_home=no # 创建 共享文件夹 - name: Create NFS Data file: path=/data state=directory owner=nfss group=nfss recurse=yes # 开启 nfs 服务 - name: Service NFS Server service: name=nfs state=started enabled=yes - hosts: 192.168.0.201 tasks: # 创建 挂载目录 - name: Client Create NFS Data file: path=/nfs_tt state=directory # 挂载 - name: Client Mount NFS Server mount: src: 192.168.0.202:/data path: /nfs_tt fstype: nfs opts: defaults state: mounted 清空原来http软件 ansible youto -m yum -a "name=httpd state=absent" -i hosts http.yml tt.j2 (index.html 显示页面) httpd.conf.j2 (httpd 配置文件) - hosts: 192.168.0.202 tasks: yum install httpd # yum 安装 httpd - name: Install Httpd Server yum: name=httpd state=present # 修改 httd.conf 配置文件 - name: Configure Httpd Server copy: src=./httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf backup=yes # 设置 web 页面 - name: Configure Httpd WebSite copy: src=./tt.j2 dest=/var/www/html/tt.html owner=root group=root mode=644 # 开启 httpd 服务 - name: Service Httpd Server service: name=httpd state=started enabled=yes # 开启 firewalld - name: Service Firewalld Server service: name=firewalld state=started # 放行 9988 端口 - name: Configure Firewalld Server firewalld: zone=public port=9988/tcp permanent=yes immediate=yes state=enabled 卸载php71w yum list installed |grep php71w|awk '{print $1}'|xargs|sed -r 's#(.*)#yum remove -y \1#g'|bash lamp.yml wget http://static.kodcloud.com/update/download/kodexplorer4.40.zip - hosts: 192.168.0.201 tasks: # yum 安装 httpd php - name: Install Httpd PHP firewalld yum: name=httpd,php,php-pdo,php-mbstring,php-gd,firewalld state=present # 开启 httpd 服务 - name: Service Httpd Server service: name=httpd state=started # 开启防火墙 - name: Service Firewalld Server service: name=firewalld state=started # 放行 80 端口 - name: Configure Firewalld firewalld: port=80/tcp immediate=yes state=enabled # 获取 tt.php - name: Get Url index.php get_url: url: http://fj.xuliangwei.com/public/index.php dest: /var/www/html/tt.php # 获取并解压 kodexplorer4.40 - name: Copy Kod Cloud Code unarchive: src=./kodexplorer4.40.zip dest=/var/www/html/ mode=0777 - name: Chown Directory file: path=/var/www/html owner=apache group=apache recurse=yes 变量 定义变量 playbook的yaml文件中定义变量赋值 - hosts: all vars: #定义变量 file_name: bgx_yaml_vars tasks: - name: # {{ file_name }}引用上面定义的变量 file: path=/tmp/{{ file_name }} state=touch #playbook执行,在/tmp目录创建bgx_yaml_vars文件 [root@manager ~]# ansible-playbook f1.yml --extra-vars执行参数赋给变量 - hosts: all tasks: - name: Create New File file: path=/tmp/{{ file_name }} state=touch #playbook执行时传入file_name变量的参数,在/tmp目录创建bgx_extra-vars文件 [root@manager ~]# ansible-playbook f2.yml --extra-vars "file_name=bgx_extra-vars" 在文件中定义变量 在/etc/ansible/hosts主机组中定义,然后使用palybook进行调度该变量 [root@manager ~]# cat /etc/ansible/hosts [nfs] 10.0.0.20 [nfs:vars] file_name=bgx_filename 变量优先级 1.extra-vars外置传参的优先级最高 [所有执行的主机都生效] 2.定义在yml文件中的优先级其次 [所有执行的主机都生效] 3.hosts文件中定义的变量优先级最低 [当前主机组定义会生效] 变量注册 register关键字可以存储指定命令的输出结果到一个自定义的变量中 [root@manager ~]# cat f5.yml - hosts: all tasks: - name: shell: netstat -lntp register: System_Status - name: Get System Status debug: msg={{System_Status.stdout_lines}} when ( 判断 ) - hosts: all tasks: #检查httpd服务是否是活动的 - name: Check Httpd Server command: systemctl is-active httpd ignore_errors: yes register: check_httpd #如果check_httpd变量中的rc结果等于0,则执行重启httpd,否则跳过 - name: Httpd Restart service: name=httpd state=restarted when: check_httpd.rc == 0 when with_items ( 循环 ) - hosts: webserver tasks: - name: Create User user: name={{ item.name }} groups={{ item.groups }} state=present with_items: - { name: 'www', groups: 'bin'} - { name: 'test', groups: 'root'} with_items item handlers ( 触发器 ) - hosts: webserver #1.定义变量,在配置文件中调用 vars: http_port: 8881 #2.安装httpd服务 tasks: - name: Install Httpd Server yum: name=httpd state=present #3.使用template模板,引用上面vars定义的变量至配置文件中 - name: Configure Httpd Server template: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf notify: #调用名称为Restart Httpd Server的handlers(可以写多个) - Restart Httpd Server #4.启动Httpd服务 - name: Start Httpd Server service: name=httpd state=started enabled=yes #5.如果配置文件发生变化会调用该handlers下面的对应名称的task handlers: - name: Restart Httpd Server service: name=httpd state=restarted notify handlers include ( 包含) [root@ansible project1]# cat restart_httpd.yml #注意这是一个tasks所有没有play的任何信息 - name: Restart Httpd Server service: name=httpd state=restarted [root@ansible project1]# cat a_project.yml - hosts: webserver tasks: - name: A Project command command: echo "A" - name: Restart httpd include: restart_httpd.yml 导入一个完整的playbook文件 (play task) [root@m01 project1]# cat tasks_total.yml - import_playbook: ./tasks_1.yml - import_playbook: ./tasks_2.yml tags ( 标签) 指定执行某个tags标签 [root@m01 docs1]# ansible-playbook -i hosts nginx_php.yml -t "test_user" 忽略执行某个tags标签 [root@m01 docs1]# ansible-playbook -i hosts nginx_php.yml --skip-tags "test_user" igneore_errors ( 错误处理) 1.强制调用handlers - hosts: webserver force_handlers: yes #强制调用handlers tasks: - name: Touch File file: path=/tmp/bgx_handlers state=touch notify: Restart Httpd Server - name: Installed Packages yum: name=sb state=latest handlers: - name: Restart Httpd Server service: name=httpd state=restarted 2.关闭changed的状态(确定该tasks不会对被控端做任何的修改和变更.) - hosts: webserver tasks: - name: Installed Httpd Server yum: name=httpd state=present - name: Service Httpd Server service: name=httpd state=started - name: Check Httpd Server shell: ps aux|grep httpd register: check_httpd changed_when: false - name: OutPut Variables debug: msg: "{{ check_httpd.stdout_lines }}" 3.使用changed_when检查tasks任务返回的结果 - hosts: webserver tasks: - name: Installed Nginx Server yum: name=nginx state=present - name: Configure Nginx Server copy: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf notify: Restart Nginx Server - name: Check Nginx Configure Status command: /usr/sbin/nginx -t register: check_nginx changed_when: - ( check_nginx.stdout.find('successful')) - false - name: Service Nginx Server service: name=nginx state=started handlers: - name: Restart Nginx Server service: name=nginx state=restarted jinja语法 {% if EXPR %}...{% elif EXPR %}...{% endif%} 作为条件判断 --------------------------------------判断语句 {% if ansible_fqdn == "web01" %} echo "123" {% elif ansible_fqdn == "web02" %} echo "456" {% else %} echo "789" {% endif %} --------------------------------------循环语句 {% for i in EXPR %}...{% endfor%} 作为循环表达式 {% for i in range(1,10) %} server 172.16.1.{{i}}; {% endfor %} {# COMMENT #} 表示注释 Roles Roles基于一个已知的文件结构 tasks handlers templates ..... Roles小技巧: 创建roles目录结构,手动或使用ansible-galaxy init test roles 编写roles的功能,也就是tasks。 最后playbook引用roles编写好的tasks [root@m01 project2]# mkdir memcached/{tasks,handlers,templates,vars,files} -pv mkdir: 已创建目录 "memcached" mkdir: 已创建目录 "memcached/tasks" mkdir: 已创建目录 "memcached/handlers" mkdir: 已创建目录 "memcached/templates" mkdir: 已创建目录 "memcached/vars" mkdir: 已创建目录 "memcached/files" [root@m01 project2]# mkdir {nginx,php-fpm}/{tasks,handlers,templates} -p galaxy /root/.ansible/roles 1.使用roles创建Rsync服务, 目录结构如下 [root@m01 roles]# tree /etc/ansible/roles/ /etc/ansible/roles/ ├── hosts ├── rsync │ ├── files │ │ ├── rsyncd.conf │ │ └── rsync.passwd │ ├── handlers │ │ └── main.yml │ ├── tasks │ │ └── main.yml │ ├── templates │ └── vars ├── site.yml 2.定义roles主机清单 [root@m01 roles]# cat /etc/ansible/roles/hosts [backup] 172.16.1.41 3.指定backup主机组,执行那个roles [root@m01 roles]# cat /etc/ansible/roles/site.yml - hosts: backup remote_user: root roles: - rsync 4.查看rsync角色的tasks任务 [root@m01 roles]# cat /etc/ansible/roles/rsync/tasks/main.yml - name: Install Rsync Server yum: name=rsync state=present - name: Configure Rsync Server copy: src={{ item.src }} dest=/etc/{{ item.dest }} mode={{ item.mode }} with_items: - {src: "rsyncd.conf", dest: "rsyncd.conf", mode: "0644"} - {src: "rsync.passwd", dest: "rsync.passwd", mode: "0600"} notify: Restart Rsync Server - name: Start Rsync Server service: name=rsyncd state=started enabled=yes 5.查看rsync角色的handlers [root@m01 roles]# cat /etc/ansible/roles/rsync/handlers/main.yml - name: Restart Rsync Server service: name=rsyncd state=restarted 6.查看rsync角色的files目录 [root@m01 roles]# ll /etc/ansible/roles/rsync/files/ total 8 -rw-r--r-- 1 root root 322 Nov 16 18:49 rsyncd.conf -rw------- 1 root root 20 Nov 16 18:30 rsync.passwd 8.执行roles,使用-t指定执行测试rsync角色 [root@m01 roles]# ansible-playbook -i hosts -t rsync site.yml PLAY [backup] ******************************************************************************************** TASK [Gathering Facts] ******************************************************************************** ok: [172.16.1.41] TASK [backup : Install Rsync Server] *********************************************************************** ok: [172.16.1.41] TASK [backup : Configure Rsync Server] ********************************************************************* ok: [172.16.1.41] TASK [backup : Start Rsync Server] ************************************************************************* ok: [172.16.1.41] PLAY RECAP ***********************************************************************************=0 failed=0
2021年03月16日
199 阅读
0 评论
0 点赞
2021-03-16
网络服务
网络服务 网络服务管理 操作行为 CentOS 6 CentOS 7 启动指定服务 service [服务名] start systemctl start [服务名] 关闭指定服务 service [服务名] stop systemctl stop [服务名] 重启指导服务 service [服务名] restart systemctl restart [服务名] 查看指定服务状态 service [服务名] status systemctl status [服务名] 查看所有服务状态 service --status -all systemctl list-nuits 设置服务自启动 chkconfig [服务名] on systemctl enable [服务名] 设置服务不自启动 chkconfig [服务名] off systemctl disable [服务名] 查看所有服务自启动状态 chkconfig --list systemctl list-unit-files 网卡配置 [root@achapc ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none # 连接方式( dhcp/static ) 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 # 网卡名称 UUID=2045ca8b-6656-4597-a113-76091988dc38 DEVICE=eth0 # 设备名称 ONBOOT=yes # 是否开机加载 IPADDR=192.168.0.200 # IP地址 PREFIX=24 # 子网掩码 GATEWAY=192.168.0.2 # 网关 DNS1=210.28.144.8 # DNS IPV6_PRIVACY=no 注意:选项要大写,小写不生效 修改网卡名(Centos7) 1.修改网卡配置名文件 cp ifcfg-ens33 ifcfg-eth0 2.修改网卡配置文件内容 NAME=eth0 DEVICE=eth0 3.修改grub配置文件 GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0" 4.更新配置文件,并加载新的参数 grub2-mkconfig -o /boot/grub2/grub.cfg 5.重启 reboot TCP/IP 五层常见协议 应用层: FTP, HTTP, SMTP, Telnet, DNS 传输层: TCP, UDP 网络层: IP, ICMP,ARP 数据链路层: PPP 物理层:不常用 端口配置文件: /etc/service 端口号 服务名 功能 20/21 ftp 文件共享 22 ssh 安全远程管理 23 telent 不安全远程管理 25 smtp:简单邮件传输协议 发信 465 smtp(ssl) 发信 110 pop3:邮局1协议 收信 143 imap4 收信 993 imap4(ssl) 收信 80 www(http://) 网页访问 443 www(https://) 加密网页访问 3306 mysql 数据库连接端口 53 DNS 域名解析端口 SSH 用户密码验证 格式: ssh 用户名@IP地址 ssh root@192.168.0.200 -p 指定端口 密钥对登录验证 1.生成密钥对 ssh-keygen -t rsa -b 2048 2.将公钥上传至被控端 ssh-copy-id root@192.168.0.200 3.登录 ssh root@192.168.0.200 ssh 配置文件 位置: /ssh/sshd_confi 1.禁止使用密码登录 PasswordAuthentication no 2.禁止使用root远程登录 PermitRootLogin no 3.修改默认端口 Port 2233 4.限制ssh监听IP ListenAddress 192.168.0.201 scp 格式:scp 本地文件 用户@服务器IP:目录 scp /root/acha.txt root@192.168.0.200:/tmp -P 指定端口 sftp 格式:sftp 用户@服务器IP sftp root@192.168.0.200 -oProt=端口 TCP Wrappers TCP_ Wrapper 通过控制两个配置文件实现访问控制 允许 /etc/hosts. allow 阻止 /etc/hosts. deny 配置文件编写规则: service list@host: client list service_ list: 是程序(服务)的列表,可以是多个,多个时,使用,隔开 host: 设置允许或禁止他人从自己的哪个网口进入。这一项不写,就代表全部 client_ list: 是访问者的地址,如果需要控制的用户较多,可以使用空格或,隔开 格式如下: 基于IP地址: 192.168.0.1 192.168.0. 基于主机名:youto .youto.com 基于网络/掩码:192.168.0.0/24 内置ACL:ALL(所有主机) , LOCAL(本地主机) DHCP DHCP介绍 准备实验环境 防护关闭: 1)关闭防火墙 2)关闭 SElinux 3)关闭VMware 虚拟网络编辑器DHCP功能 DHCP 相关信息 软件名: dhcp # DHCP服务软件包 dhcp-common # DHCP命令软件包(默认安装) 服务名: dhcpd # DHCP 服务名 dhcrelay #DHCP 中继服务名 端口号: udp 67 # 作为客服端的目标端口,接受客服端的请求DHCP udp 68 # 作为服务器的源端口,用来向客户端回复数据包 配置文件: dhcpd /etc/dhcp/dhcpd.conf # 此配置文件默认为空,需找模板文件重新生成 dhcpd.conf.sample /usr/share/doc/dhcp-4. . /dhcpd.con.sample # DHCP模板配置文件 dhcrelay /etc/sysconfig/dhcrelay # 中继配置文件 DHCP 配置文件详解 DHCP 基本功能实验 安装 DHCP yum install -y dhcp 生成配置文件 cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 修改配置文件 注释所有subnet,修改最后一个subnet subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.101 192.168.0.110; default-lease-time 600; max-lease-time 7200; } 重启服务 systemctl start dhcpd 监控DHCP日志文件 tail -f /var/log/messages 重启客户机网卡 ifdown eth0;ifup eth0 固定地址分配 获取客户端 mac 地址 arp -a 修改 /etc/dhcp/dhcpd.conf 文件 host fantasia { hardware ethernet 00:0c:29:66:f5:d8; # mac 地址 fixed-address 192.168.0.123; # ip 地址 } 重启DHCP服务 systemctl start dhcpd 重启客户机网卡验证IP ifdown eth0;ifup eth0 超级作用域 设置DHCP服务器单臂路由需要的子网卡 cp -a ifcfg-eth0 ifcfg-eth0:0 #生成网卡,修改网卡名和IP地址 开启路由转发 vim /etc/sysctl.conf net.ipv4.ip_forward=1 #开启路由转发 sysctl -p # 刷新内核参数配置文件 修改 /etc/dhcp/dhcpd.conf 文件 shared-network 0-100 { subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.200; range 192.168.0.121 192.168.0.121; } subnet 192.168.100.0 netmask 255.255.255.0 { option routers 192.168.100.200; range 192.168.100.131 192.168.100.141; } } 重启 DHCP 服务 systemctl restart dhcpd 重启客户机网卡,查看验证ip地址 ifdown eth0;ifup eth0 DHCP 中继 DNS DNS 介绍 域名 (Domain Name):简称 域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机 或计算机组的名称, 用于在数据传输时标识计算机的电子方位。具有独一无二,不可重复的特性。 DNS : 域名系统( Domain Name System) , 域名解析就是 域名到 IP 地址的转换过程 正向解析: 域名 --> IP地址 反向解析: IP地址 --> 域名 域名的组成和分类 常见格式:www.youto.club 完整格式:www.youto.club. . 根域,可以省略不写 com 定级域,由ICANN组织指定和管理 分类: 国家地区域名: cn(中国) 、 hk(香港) 、 sg(新加坡) 等 通用顶级域名: com(商业机构) 、 org(非营利组织) 、 edu(教育机构) 等 新通用顶级域名: red(红色、 热情) 、 top(顶级、 高端) 等 youto: 二级域(注册域),可由个人或组织申请注册 www: 三级域(子域) ,服务器网站名代表 主机名: s1.www.youto.club. 中的 s1 就是主机名, 一般用来表示具体某一台主机 com.cn属于“二级域名” ,是 cn 顶级域的子域 4.域名解析过程 客户机首先查看查找本地 hosts 文件,如果有则返回,否则进行下一步 客户机查看本地缓存,是否存在本条目的缓存,如果有则直接返回, 否则进行下一步。 将请求转发给指向的 DNS 服务器。 查看域名是否本地解析, 是则本地解析返回, 否则进行下一步。 本地 DNS 服务器首先在缓存中查找,有则返回,无则进行下一步。 向全球 13 个根域服务器发起 DNS 请求,根域返回 org 域的地址列表。 使用某一个 org 域的 IP 地址,发起 DNS 请求, org 域返回 kernel 域服务器地址列表。 使用某一个 kernel 域 IP 地址,发起 DNS 请求, kernel 域返回 www.kernel.org 主机的 IP 地址,本 地 DNS 服务收到后,返回给客户机,并在本地 DNS 服务器保存一份 5.DNS 软件信息 软件名称:bind 服务名称:named 软件端口: UDP 53 数据通信(域名解析) TCP 53 数据同步(主从同步) 配置文件: 主配置文件: /etc/named.conf(服务器运行参数) 区域配置文件: /etc/named.rfc1912.zones(服务器解析的区域配置,正反向区域定义信息) 数据配置文件: /var/named/xx.xx(主机名和 IP 地址的对应解析关系,及主从同步信息) DNS 服务搭建 先关闭服务器和客户机上的防火墙和 SELinux 软件安装 yum -y install bind 配置主配置文件(/etc/named.conf) 配置区域文件(/etc/named.rfc1912.zones) 注:先对区域文件进行备份, 删除多余的模板,只留下一个正向和一个反向(反向修改时,网络 位的反写格式, 如 192.168.100.2-->100.168.192.) 配置数据文件/var/named/ A. 先复制生成正向解析文件和反向解析文件 B. 编辑正向解析文件(注意域名结尾的 “.” ) C. 编辑反向解析文件(注意域名结尾的 “.” ) 重启 DNS 服务 service named restart 客户端测试 在网卡配置文件中添加 DNS 服务器的地址,然后用 nslookup 测试 DNS 主从服务器 实验目的:减轻主服务器的压力 先关闭服务器和客户机上的防火墙和 SELinux 实验准备: 一台主服务器、一台从服务器、一台测试机 搭建过程: 搭建主服务器步骤(同上,不截图了) : a. 安装 bind 软件 b. 主配置文件的修改 c. 区域配置文件的修改 d. 配置数据文件 正向数据文件 反向数据文件(可选做) e. 启动 named 服务 注意: 主 DNS 的区域配置文件中 allow-updata 参数添加从服务器 IP 地址。 搭建从服务器步骤: a. 安装 bind 软件 b. 修改主配置文件/etc/named.conf c. 配置区域文件(/etc/named.rfc1912.zones) 注意:从配置文件的类型需要修改为 slave,并且需要填写主服务器的地址,如下 type slave; masters { 192.168.0.10; }; #大括号两侧留有空格 文件保存位置修改为 file “slaves/atguigu.localhost” ; d. 重启服务 e. 在测试机上填写从服务器的 IP,并使用 nslookup 测试 DNS 缓存服务器 实验作用:加快解析速度, 提高工作效率 先关闭服务器和客户机上的防火墙和 SELinux 实验软件:dnsmasq 配置文件:/etc/dnsmasq.conf domain=域名 #需要解析的域名 server=ip #主 DNS 服务器 IP cache-size=15000 #声明缓存条数 重启服务: service dnsmasq restart 测试效果: 在测试机上填写 DNS 缓存服务器的 ip 地址 智能 DNS (分离解析) 实验原理: DNS 分离解析即将相同域名解析为不同的 IP 地址。现实网络中一些网站为了让用户有更好 的体验效果解析速度更快,就把来自不同运营商的用户解析到相对应的服务器这样就大大提升了访问速度 实验环境: 一台内网测试机(单网卡) 一台网关+DNS(双网卡) 一台外网测试机(单网卡) 一台 web 服务器(双网卡) 先关闭服务器和客户机上的防火墙和 SELinux 实验步骤: 安装 bind 软件 内核配置文件开启路由转发,修改/etc/sysctl.conf 修改主配置文件/etc/named.conf 生成自己定义的区域文件(反向解析省略掉了) cp – a named.rfc1912.zones lan cp – a named.rfc1912.zones wan 配置数据文件 配置内网的正向解析文件 配置外网的正向解析文件 重启服务 service named restart 效果测试 内网客户端网卡配置 将 dns 和网关都指为网关服务器的内网口地址 外网客户端网卡配置 将 dns 和网关都指为网关服务器的外网口地址 VSFTP VSFTP介绍 概述:VSFTP是一个基于 GPL发布的类 Unix 系统上使用的 FTP 服务器软件 安全性 vsftp 程序的运行者一般是普通用户,降低了相对应进程的权限 任何需要执行较高权限的指令都需要上层程序许可 ftp 所需要使用的绝大多数命令都被整合到了 vsftp 中,基本不需要系统额外提供命令 拥有 chroot 功能,可以改变用户的根目录,限制用户只能在自己的家目录 VSFTP 连接类型 控制连接( 持续连接) --> TCP 21( 命令信道) --> 用户收发FTP命令 数据连接( 按需连接) --> TCP 20( 数据信道) --> 用于上传下载数据 工作模式 Port模式 (主动) Passive 模式 (被动) 传输模式 Binary模式:不对数据进行任何处理,适合进行可执行文件、压缩文件、图片等 ASCII模式: 进行文本传输时,自动适应目标操作系统的结束符, 如回车符等 切换方式: 在ftp>提示符下输入ascii即转换到ACSII方式,输入bin,即转换到Binary方式 软件信息 服务端软件名: vsftpd 客户端软件名: ftp 服务名: vsftpd 端口号: 20、 21、指定范围内随机端口 配置文件: /etc/vsftpd/vsftpd.conf 登录验证方式 匿名用户验证: 用户账号名称: ftp或anonymous 用户账号密码: 无密码 工作目录: /var/ftp 默认权限: 默认可下载不可上传,上传权限由两部分组成(主配置文件和文件系统) 本地用户验证: 用户账号名称:本地用户(/etc/passwd) 用户账号密码: 用户密码(/etc/shadow) 工作目录:登录用户的宿主目录 权限:最大权限(drwx------) 虚拟(virtual)用户验证: 1. 创建虚拟用户用来代替本地用户,减少本地用户曝光率 2. 使用本地用户作为虚拟用户的映射用户,为虚拟用户提供工作目录和权限控制 3. 能够设置严格的权限(为每一个用户生成单独的配置文件) 匿名用户实验 tip:关闭服务器和客户机的防火墙和SELinux 目录:/etc/vsftpd/vsftpd.conf 选项 anonymous_enable=YES 启用匿名访问 anon_umask=022 匿名用户所上传文件的权限掩码 anon_root=/var/ftp 匿名用户的 FTP 根目录 anon_upload_enable=YES 允许上传文件 anon_mkdir_write_enable=YES 允许创建目录 anon_other_write_enable=YES 开放其他写入权(删除、覆盖、重命名) anon_max_rate=0 限制最大传输速率(0 为不限速, 单位: bytes/秒) 实验需求与流程: 注意: 在客户端登录后,默认情况下是可以下载的,但不能上传 实现可以上传 a. anon_upload_enable=YES b. 在/var/ftp/下创建上传目录 c. 修改上传目录的权限或所有者,让匿名用户有写入权限 实现创建目录和文件其他操作 non_mkdir_write_enable=YES 允许创建目录 anon_other_write_enable=YES 开放其他写入权(删除、覆盖、重命名) 用户进入某个文件夹时,弹出相应的说明 a. 在对应目录下创建 .message 文件,并写入相应内容 b. 确认dirmessage_enable=YES是否启用 c. 尝试却换目录查看效果(同一次登录仅提示一次) 实现上传的文件可下载 默认情况下开放上传权限后,上传的文件是无法被下载的,因为文件的其他人位置没有r权限 设置anon_umask=022,可以让上传的文件其他人位置拥有r权限, 然后才能被其他人下载 本地用户实验 目录:/etc/vsftpd/vsftpd.conf 选项 local_enable=YES 是否启用本地系统用户 local_umask=022 本地用户所上传文件的权限掩码 local_root=/var/ftp 设置本地用户的 FTP 根目录 chroot_local_user=YES 是否将用户禁锢在主目录 local_max_rate=0 限制最大传输速率 ftpd_banner=Welcome to blah FTP service 用户登录时显示的欢迎信息 userlist_enable=YES & userlist_deny=YES 禁止user_list 文件中出现的用户名登录 FTP userlist_enable=YES & userlist_deny=NO 仅允许user_list 文件中出现的用户名登录 FTP 禁止 /etc/vsftpd/ftpusers 文件中出现的用户名登录 FTP,权限比 user_list 更高,即时生效 实验需求与流程: 服务端需要创建用户并设置密码(所创建的用户,不需要登录操作系统,仅用来登录VSFTP) useradd -s /sbin/nologin username 将所有用户禁锢在自己的家目录下 注: 默认没有禁锢用户时,客户端登录后可以随意切换目录,查看文件所在位置和文件名 chroot_local_user=YES 开启用户家目录限制, 限制所有用户不能随便切换目录 将部分用户禁锢在自己的家目录下 chroot_list_enable=YES 开启白名单功能,允许白名单中的用户随意切换目录 chroot_list_file=/etc/vsftpd/chroot_list 白名单文件所在位置(需自己创建) 配置文件: /etc/vsftpd/ftpusers 所有写入此文件内的用户名都不允许登录ftp,立刻生效。 修改被动模式数据传输使用端口 pasv_enable=YES pasv_min_port=30000 pasv_max_port=35000 虚拟用户实验 建立 FTP 的虚拟用户的用户数据库文件(在/etc/vsftpd) vim vsftpd.user 该文件名可以随便定义, 文件内容格式: 奇数行用户, 偶数行密码 db_load -T -t hash -f vsftpd.user vsftpd.db 将用户密码的存放文本转化为数据库类型, 并使用 hash 加密 chmod 600 vsftpd.db 修改文件权限为 600,保证其安全性 创建 FTP 虚拟用户的映射用户, 并制定其用户家目录 useradd -d /var/ftproot -s /sbin/nologin virtual 创建 virtual 用户作为 ftp 的虚拟用户的映射用户 建立支持虚拟用户的 PAM 认证文件,添加虚拟用户支持 cp – a /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam 使用模板生成自己的认证配置文件, 方便一会调用 编辑新生成的文件 vsftpd.pam (清空原来内容, 添加下列两行) auth required pam_userdb.so db=/etc/vsftpd/vsftpd acco unt required pam_userdb.so db=/etc/vsftpd/vsftpd 在 vsftpd.conf 文件中添加支持配置 修改: pam_service_name=vsftpd.pam 添加: guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd/dir 为虚拟用户建立独立的配置文件,启动服务并测试 注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉。 用户可以上传: anon_upload_enable=YES #允许上传文件 用户可以创建目录或文件: anon_mkdir_write_enable=YES #允许创建目录 用户可以修改文件名: anon_upload_enable=YES #允许上传文件(为了覆盖开启的) anon_other_write_enable=YES #允许重名和删除文件、覆盖 注:给映射用户的家目录 设置 o+r 让虚拟用户有读权限
2021年03月16日
294 阅读
0 评论
0 点赞
2021-03-15
模拟登录古诗文网
""" 作者:acha 时间:2021-2-16 功能:模拟登录古诗文网 """ import requests from lxml import etree from 爬虫.chaojiying_Python.chaojiying import Chaojiying_Client # 请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36" } # 创建好session对象 sess = requests.Session() # 处理动态变化的请求参数 # 1.解析出本次登录页面对应的验证码图片地址 login_url = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx' page_text = sess.get(url=login_url, headers=headers).text tree = etree.HTML(page_text) # 解析出了验证码图片的地址 img_path = 'https://so.gushiwen.org' + tree.xpath('//*[@id="imgCode"]/@src')[0] img_data = sess.get(url=img_path, headers=headers).content # 请求到了图片数据 # 将图片保存到本地存储 with open('./code.jpg', 'wb') as fp: fp.write(img_data) # 将动态变化的请求参数从页面源码中解析出来 __VIEWSTATE = tree.xpath('//*[@id="__VIEWSTATE"]/@value')[0] __VIEWSTATEGENERATOR = tree.xpath('//*[@id="__VIEWSTATEGENERATOR"]/@value')[0] # 识别验证码 def imgcode(file_path): chaojiying = Chaojiying_Client('用户名', '密码', '软件ID') im = open(file_path, 'rb').read() code = (chaojiying.PostPic(im, 1004)['pic_str']) print(code) return code # 获取验证码 code_result = imgcode('code.jpg') # 古诗文网 url post_url = 'https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx' # 动态参数 data = { "__VIEWSTATE": "lG3WvIKiDx5sEmj8IeYT6LmF1reN9ep/Q2b+U7W2RCMdA2JF5F9NRvaEfIepywyrCTFVIlRHGtorc6dkttOZ0GCzQsQPFdpLeB2kDD6J+vXb/BvqhxWtwSJ+02I=", "__VIEWSTATEGENERATOR": "C93BE1AE", "from: http": "//so.gushiwen.cn/user/collect.aspx", "email": "wz.0527@qq.com", "pwd": "qwerqwer", "code": code_result, "denglu": "登录", } # 模拟登录的请求 response = sess.post(url=post_url, headers=headers, data=data) # 登录成功后页面的源码数据 page_text = response.text # 保存网页 with open('gushiwen.html', 'w', encoding='utf-8') as fp: fp.write(page_text)
2021年03月15日
396 阅读
0 评论
3 点赞
2021-03-15
查询化妆品许可证信息
""" 作者:acha 时间:2021-2-15 功能:查询化妆品许可证信息 """ import requests # 药监局许可证信息数据列表 URL url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList' # 药监局许可证具体数据列表 URL url_id = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById' # 请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)" " AppleWebKit/537.36 (KHTML, like Gecko)" " Chrome/87.0.4280.141" " Safari/537.36" } # 获取网页 json 数据 def get_page_text(c_url, c_data): # 请求体 resqonse = requests.post(url=c_url, headers=headers, data=c_data) # 获取数据 page_text = resqonse.json() # 返回数据 json return page_text for i in range(10): # 动态参数 需要处理变量 页码 data = { "on": " true", "page": str(i), "pageSize": " 15", "productName": " ", "conditionType": "1", "applyname": " ", "applysn": " " } # 获取 企业id page_id = get_page_text(url, data) # 生成 id 列表 lst_id = page_id['list'] # 输出 页面码 print(data['page']) # 遍历 id列表 返回许可证详细信息 for row in lst_id: # 动态参数 企业id data_id = {'id': row['ID']} # 获取许可证详细 result = get_page_text(url_id, data_id) # 打印获取信息 print(result)
2021年03月15日
381 阅读
0 评论
2 点赞
2021-03-15
openstack xiandian v2.2
iaas 2.2 云平台拓扑图 基本环境配置 配置网卡 controller 192.168.100.10 DEVICE=enp8s0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.100.10 PREFIX=24 GATEWAY=192.168.100.1 192.168.200.10 DEVICE=enp9s0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.200.10 PREFIX=24 配置主机名: hostnamectl set-hostname controller bash compute 192.168.100.20 DEVICE=enp8s0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.100.20 PREFIX=24 GATEWAY=192.168.100.1 192.168.200.20 DEVICE=enp9s0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.200.20 PREFIX=24 配置主机名: hostnamectl set-hostname compute bash 配置 yum 源 yum 源备份 Controlle compute mv /etc/yum.repos.d/* /opt/ 创建repo文件 controller 在/etc/yum.repos.d创建centos.repo源文件 vi /etc/yum.repos.d/centos.repo [centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1 [iaas] name=iaas baseurl=file:///opt/iaas-repo gpgcheck=0 enabled=1 compute 在/etc/yum.repos.d创建centos.repo源文件 vi /etc/yum.repos.d/centos.repo [centos] name=centos baseurl=ftp://192.168.100.10/centos gpgcheck=0 enabled=1 [iaas] name=iaas baseurl=ftp://192.168.100.10/iaas-repo gpgcheck=0 enabled=1 挂载 ISO 文件 挂载CentOS-7-x86_64-DVD-1511.iso [root@controller ~]# mount -o loop CentOS-7-x86_64-DVD-1511.iso /mnt/ [root@controller ~]# mkdir /opt/centos [root@controller ~]# cp -rvf /mnt/* /opt/centos/ [root@controller ~]# umount /mnt/ 挂载XianDian-IaaS-v2.2.iso [root@controller ~]# mount -o loop XianDian-IaaS-v2.2.iso /mnt/ [root@controller ~]# cp -rvf /mnt/* /opt/ [root@controller ~]# umount /mnt/ 搭建ftp服务器,开启并设置自启 [root@controller ~]# yum install vsftpd –y [root@controller ~]# vi /etc/vsftpd/vsftpd.conf 添加 anon_root=/opt/ [root@controller ~]# systemctl start vsftpd [root@controller ~]# systemctl enable vsftpd 关闭防火墙并设置开机不自启 controller / compute systemctl stop firewalld systemctl disable firewalld 清除缓存,验证yum源 controller / compute # yum clean all # yum repolist 编辑环境变量 controller / compute vi /etc/xiandian/openrc.sh HOST_IP=192.168.100.10 HOST_NAME=controller HOST_IP_NODE=192.168.100.20 HOST_NAME_NODE=compute RABBIT_USER=openstack RABBIT_PASS=000000 DB_PASS=000000 DOMAIN_NAME=demo(自定义) ADMIN_PASS=000000 DEMO_PASS=000000 KEYSTONE_DBPASS=000000 GLANCE_DBPASS=000000 GLANCE_PASS=000000 NOVA_DBPASS=000000 NOVA_PASS=000000 NEUTRON_DBPASS=000000 NEUTRON_PASS=000000 METADATA_SECRET=000000 INTERFACE_NAME=enp9s0(外网网卡名) CINDER_DBPASS=000000 CINDER_PASS=000000 TROVE_DBPASS=000000 TROVE_PASS=000000 BLOCK_DISK=md126p4(空白分区名) SWIFT_PASS=000000 OBJECT_DISK=md126p5(空白分区名) STORAGE_LOCAL_NET_IP=192.168.100.20 HEAT_DBPASS=000000 HEAT_PASS=000000 CEILOMETER_DBPASS=000000 CEILOMETER_PASS=000000 AODH_DBPASS=000000 AODH_PASS=000000 安装基础服务 1.6-1.9的基础配置操作 安装Openstack包 配置域名解析 配置防火墙和Selinux 安装ntp服务 Controller Compute iaas-pre-host.sh reboot 安装数据库服务 1.11-1.14基础服务的操作 安装Mysql数据库服务 安装Mongo数据库服务 安装RabbitMQ服务 安装memcahce Controller iaas-install-mysql.sh 安装Keystone认证服务 2.2-2.9的认证服务的操作 安装keystone服务软件包 创建Keystone数据库 配置数据库连接 为keystone服务创建数据库表 创建令牌 创建签名密钥和证书 定义用户、租户和角色 创建admin-openrc.sh Controller iaas-install-keystone.sh 安装Glance镜像服务 3.2-3.9的镜像服务的操作 安装Glance镜像服务软件包 创建Glance数据库 配置文件创建数据库连接 为镜像服务创建数据库表 创建用户 配置镜像服务 创建Endpoint和API端点 启动服务 Controller iaas-install-glance.sh 3.10上传镜像 上传镜像 source /etc/keystone/admin-openrc.sh glance image-create --name "CentOS7.0" --disk-format qcow2 --container-format bare --progress < /opt/images/CentOS_7.2_x86_64_XD.qcow2 安装Nova计算服务 4.2-4.9计算服务的操作 安装Nova 计算服务软件包 创建Nova数据库 创建计算服务表 创建用户 配置计算服务 创建Endpoint和API端点 启动服务 验证Nova Controller iaas-install-nova-controller.sh 4.10-4.14计算服务的操作 安装Nova计算服务软件包 配置Nova服务 Compute检查系统处理器是否支持虚拟机的硬件加速 启动 清除防火墙 Compute iaas-install-nova-compute.sh 安装Neutron网络服务 5.3-5.10网络服务的操作 创建Neutron数据库 创建用户 创建Endpoint和API端点 安装neutron网络服务软件包 配置Neutron服务 编辑内核 创建数据库 启动服务和创建网桥 Controller iaas-install-neutron-controller.sh 5.11-5.14网络服务 安装软件包 配置Neutron服务 编辑内核 启动服务进而创建网桥 Compute iaas-install-neutron-compute.sh 创建neutron网络 三选一 flat网络 Controller iaas-install-neutron-controller-flat.sh Compute iaas-install-neutron-compute-flat.sh gre网络 Controller iaas-install-neutron-controller-gre.sh Compute iaas-install-neutron-compute-gre.sh vlan网络 Controller iaas-install-neutron-controller-vlan.sh Compute iaas-install-neutron-compute-vlan.sh 安装Dashboard服务 6.2-6.4dashboard的操作 安装Dashboard服务软件包 配置 启动服务 Controller iaas-install-dashboard.sh 访问 打开浏览器访问Dashboard http://controller(或本机内网ip)/dashboard
2021年03月15日
299 阅读
0 评论
0 点赞
1
...
14
15
16