• rh358 005 dhcp dhcp6 打印机 ansible配置dhcp和打印机


    部署dhcp服务器

    主机发送Discover报文
    目标为广播地址
    同一网段的dhcp收到报文后,dhcp响应一个offer报文
    offer报文:dhcp自己的ip地址。和客户端ip以及使用周期,和客户端ip网络参数
    最后主机单独发一个request报文 给那个选择的dhcp服务器 (解决多个dhcp在同一网段都提供offer的问题,主要是先到先得)
    dhcp最后发送一个ack确认报文给主机

    dhcp和主机不在同一网段得配置dhcp中继
    客户端无法指定我可以单独使用哪个dhcp

    实践

    1>安装包
    [root@servera ~]# yum install -y dhcp-server
    
    2> 准本配置文件
    [root@servera ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    cp: overwrite '/etc/dhcp/dhcpd.conf'? y              这个模板十分好用
    [root@servera ~]#
    
    default-lease-time 600;
    max-lease-time 7200;
    log-facility local7;配置了日志设备,那么你就需要在rsyslog中,定义发送到这个local7的日志要转存在哪个日志文件内
    
    vim  /etc/dhcp/dhcpd.conf
    authoritative;
    log-facility local7;
    
    subnet 192.168.0.0 netmask 255.255.255.0 { 定义子网
      range 192.168.0.200 192.168.0.254; 分配IP地址的范围
      default-lease-time 600; 定义默认租期
      max-lease-time 7200; 
      #option routers 192.168.0.1; 定义网关的
      option domain-search  "example.com";  定义域名
      option domain-name-servers 172.25.254.254;  DNS服务器
      option broadcast-address 192.168.0.255; 广播地址   #可以忽略
      # option next-server 指定tftp服务器的IP  PXE
      # filename ""引导文件在哪里   PXE
    }
    
    dhcpd -t   #这个命令可以验证配置文件
    3> 启动DHCP服务器
    [root@servera ~]# systemctl enable  --now dhcpd
    [root@servera ~]# firewall-cmd --permanent --add-service=dhcp
    success
    [root@servera ~]# firewall-cmd --reload
    success
    
    
    4> 客户端怎么操作
    [root@serverb ~]# nmcli connection  add  type  ethernet  con-name eth1 ifname  eth1 ipv4.method  auto 就只需要把地址的方式改成auto
    Connection 'eth1' (d008c5e7-6868-448a-8a16-133502072777) successfully added.
    [root@serverb ~]# nmcli connection  up eth1
    
    5> 固定IP地址。给一个MAC地址,分配一个特定的地址
    
    host serverc {
      hardware ethernet 52:54:00:01:fa:0c; MAC
      fixed-address 192.168.0.150;  固定的IP地址
    }
    [root@serverc ~]# nmcli connection  add  type  ethernet  con-name  eth1 ifname  eth1  ipv4.method auto
    Connection 'eth1' (4dc7753b-fe97-4bc8-97f3-316b373c29c1) successfully added.
    [root@serverc ~]# nmcli connection  up eth1
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/40)
    [root@serverc ~]#
    
    
    
    
    [root@servera dhcp-server]# systemctl status dhcpd
    ● dhcpd.service - DHCPv4 Server Daemon
       Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled)
       Active: active (running) since Mon 2022-09-05 18:40:00 CST; 3min 54s ago
         Docs: man:dhcpd(8)
               man:dhcpd.conf(5)
     Main PID: 24264 (dhcpd)
       Status: "Dispatching packets..."
        Tasks: 1 (limit: 11250)
       Memory: 4.9M
       CGroup: /system.slice/dhcpd.service
               └─24264 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
    
    Sep 05 18:40:06 servera.lab.example.com dhcpd[24264]: DHCPOFFER on 192.168.0.201 to 52:54:00:02:fa:0c (serverc) via eth1
    Sep 05 18:40:06 servera.lab.example.com dhcpd[24264]: DHCPREQUEST for 192.168.0.201 (192.168.0.10) from 52:54:00:02:fa:0c (serverc) via eth1
    Sep 05 18:40:06 servera.lab.example.com dhcpd[24264]: DHCPACK on 192.168.0.201 to 52:54:00:02:fa:0c (serverc) via eth1
    Sep 05 18:40:06 servera.lab.example.com dhcpd[24264]: DHCPOFFER on 192.168.0.202 to 52:54:00:02:fa:0d (serverd) via eth1
    Sep 05 18:40:06 servera.lab.example.com dhcpd[24264]: DHCPREQUEST for 192.168.0.202 (192.168.0.10) from 52:54:00:02:fa:0d (serverd) via eth1
    Sep 05 18:40:06 servera.lab.example.com dhcpd[24264]: DHCPACK on 192.168.0.202 to 52:54:00:02:fa:0d (serverd) via eth1
    Sep 05 18:42:37 servera.lab.example.com dhcpd[24264]: DHCPDISCOVER from 52:54:00:01:fa:0b via eth1
    Sep 05 18:42:38 servera.lab.example.com dhcpd[24264]: DHCPOFFER on 192.168.0.203 to 52:54:00:01:fa:0b (serverb) via eth1
    Sep 05 18:42:38 servera.lab.example.com dhcpd[24264]: DHCPREQUEST for 192.168.0.203 (192.168.0.10) from 52:54:00:01:fa:0b (serverb) via eth1
    Sep 05 18:42:38 servera.lab.example.com dhcpd[24264]: DHCPACK on 192.168.0.203 to 52:54:00:01:fa:0b (serverb) via eth1
    从dhcpd[24264]可以看到 dhcp的工作过程,与理论一致
    

    dhcp6

    ipv6得结合网络设备来分配网关
    ipv6得与网络设备结合得到完整的功能,所以会很麻烦

    无线状态地址自动配置slaac 方法依赖于路由器为客户端提系统提供网络配置

    radvump查看公告信息
    也可以通过linux模拟路由器 以提供slaac功能
    slaac可也提供网关 ipv6前缀 dns服务器 dns搜索列表功能

    实践

    [root@workstation ~]# lab dhcp-automation start 
    [root@serverd ~]# systemctl status radvd.service 
    ● radvd.service - Router advertisement daemon for IPv6
    Loaded: loaded (/usr/lib/systemd/system/radvd.service; enabled; vendor preset: disabled)
    Active: active (running) since Mon 2022-09-05 19:27:45 CST; 56s ago
    Process: 8169 ExecStart=/usr/sbin/radvd $OPTIONS (code=exited, status=0/SUCCESS)
    Main PID: 8171 (radvd)
        Tasks: 2 (limit: 11250)
    Memory: 864.0K
    CGroup: /system.slice/radvd.service
            ├─8171 /usr/sbin/radvd -u radvd
            └─8172 /usr/sbin/radvd -u radvd
    
    Sep 05 19:27:45 serverd.lab.example.com systemd[1]: Starting Router advertisement daemon for IPv6...
    Sep 05 19:27:45 serverd.lab.example.com radvd[8169]: version 2.17 started
    Sep 05 19:27:45 serverd.lab.example.com systemd[1]: Started Router advertisement daemon for IPv6.
    [root@serverd ~]# 
    配置ipv6
    1>serverd 模拟路由器配置SLAAC功能。需要这个东西提供网关
    [root@serverd ~]# cat   /etc/radvd.conf
    interface eth1
    {
      AdvSendAdvert on;
      AdvManagedFlag on;
      AdvOtherConfigFlag on;
      MaxRtrAdvInterval 60;
    };
    
    2> radvd 软件包提供了一个工具radvdump 用来获取路由公告信息(路由器来提供的,)
    # based on Router Advertisement from fe80::5a83:c374:2215:148f IPV6的网关
    # received by interface eth1
    #
    
    interface eth1
    {
            AdvSendAdvert on;
            # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
            AdvManagedFlag on;        通过DHCP6来获取IP地址
            AdvOtherConfigFlag on;    IPv6 路由器指⽰客⼾端查询 DHCPv6 服务器,
            AdvReachableTime 0;
            AdvRetransTimer 0;
            AdvCurHopLimit 64;
            AdvDefaultLifetime 180;
            AdvHomeAgentFlag off;
            AdvDefaultPreference medium;
            AdvSourceLLAddress on;
    }; # End of interface definition
    
    
    2>DHCPV6功能: 比如网络信息,IP,DNS等都是有他来提供的
    
    
    3> 部署安装包
    [root@servera ~]# yum install -y dhcp-server
    
    
    4> 修改配置文件
    [root@servera ~]# cp /usr/share/doc/dhcp-server/dhcpd6.conf.example /etc/dhcp/dhcpd6.conf
    cp: overwrite '/etc/dhcp/dhcpd6.conf'? y
    [root@servera ~]#cat /etc/dhcp/dhcpd6.conf 唯一的不同时不能设置网关
    
    authoritative; 
    subnet6 fde2:6494:1e09:2::/64 {
         range6 fde2:6494:1e09:2::20 fde2:6494:1e09:2::60;
         option dhcp6.name-servers fde2:6494:1e09:2::d;
         option dhcp6.domain-search "backend.lab.example.com";
         default-lease-time 600; max-lease-time 7200;
    }
    [root@servera ~]# nmcli connection  add  type  ethernet  con-name  eth1 ifname eth1 ipv6.addresses fde2:6494:1e09:2::a/64 ipv6.method manual
    Connection 'eth1' (eb7dc998-d861-435c-8abd-2b7f061f8957) successfully added.
    [root@servera ~]# nmcli connection  up eth1
    [root@servera ~]# systemctl enable  --now dhcpd6.service
    Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd6.service → /usr/lib/systemd/system/dhcpd6.service.
    [root@servera ~]# firewall-cmd --add-service=dhcpv6 --permanent
    success
    [root@servera ~]# firewall-cmd --reload
    success
    [root@servera ~]#
    
    
    [root@serverc ~]# nmcli connection add  type  ethernet ifname eth1 con-name eth1 ipv6.method  auto
    Connection 'eth1' (95356996-edb3-4750-8170-e341cb604c57) successfully added.
    [root@serverc ~]# nmcli connection up eth1
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
    [root@serverc ~]#
    
    5> 默认网关
    [root@serverc ~]# ip -6 route
    ::1 dev lo proto kernel metric 256 pref medium
    fde2:6494:1e09:2::60 dev eth1 proto kernel metric 100 pref medium
    fe80::/64 dev eth1 proto kernel metric 100 pref medium
    fe80::/64 dev eth0 proto kernel metric 106 pref medium
    default via fe80::5a83:c374:2215:148f dev eth1 proto ra metric 100 pref medium
    
    
    
    这个网关来自于发布公告的本地链路服务器,可也发现与默认网关一样
    3: eth1:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:01:fa:0d brd ff:ff:ff:ff:ff:ff
        inet 192.168.0.220/24 brd 192.168.0.255 scope global dynamic noprefixroute eth1
           valid_lft 101sec preferred_lft 101sec
        inet6 fde2:6494:1e09:2::d/64 scope global noprefixroute 
           valid_lft forever preferred_lft forever
        inet6 fe80::5a83:c374:2215:148f/64 scope link noprefixroute 
    
    不使用fe80
    开启转发
    [root@serverd ~]# sysctl -a | grep forward | grep ipv6
    net.ipv6.conf.all.forwarding = 1
    改变ipv6地址
    fe80::5a83:c374:2215:148f/64
    
    
    

    ansible 自动化

    流程
    一:安装包
    二:配置文件,notify: jinjia2  纯粹的文件
    三: 如果有数据,传数据:  web服务: 
    四: 服务和防火墙
    五: handlers  通过handlers来触发重新启动服务
    
    [student@workstation ~]$ lab dhcp-automation start
    获取配置文件与清单文件
    
    
    - name: Deployment DHCP
      hosts: all
      become: true
      vars:
        network_connections:
        - name: eth1
          state: up
          type: ethernet
          mac: 52:54:00:01:fa:0a
          ip:
            address:
            - 192.168.0.10/24
            - fde2:6494:1e09:2::a/64
      tasks:
      - name: config ip address on dhcpservers
        include_role:
          name: rhel-system-roles.network
        when: inventory_hostname == "servera.lab.example.com"
    
      - name: install dhcpd package
        yum:
          name: dhcp-server
          state: present
        when: inventory_hostname == "servera.lab.example.com"
    
      - name: prepate dhcp config file
        copy:
          src: files/dhcpd.conf
          dest: /etc/dhcp/dhcpd.conf
        notify: restart dhcp4
        when: inventory_hostname == "servera.lab.example.com"
    
      - name: prepate dhcp6 config file
        copy:
          src: files/dhcpd6.conf
          dest: /etc/dhcp/dhcpd6.conf
        notify: restart dhcp6
        when: inventory_hostname == "servera.lab.example.com"
    
      - name: start dhcpd service
        service:
          name: "{{ item }}"
          state: started
          enabled: yes
        loop:
        - dhcpd
        - dhcpd6
        when: inventory_hostname == "servera.lab.example.com"
    
      - name: config firewarrd
        firewalld:
          service: "{{ item }}"
          state: enabled
          immediate: yes
          permanent: yes
        loop:
        - dhcp
        - dhcpv6
        when: inventory_hostname == "servera.lab.example.com"
    
      handlers:
      - name: restart dhcp
        service:
          name: dhcpd
          state: started
        when: inventory_hostname == "servera.lab.example.com"
      - name: restart dhcp6
        service:
          name: dhcpd6
          state: started
        when: inventory_hostname == "servera.lab.example.com"
    
    clients:
    [student@workstation dhcp-automation]$ cat client.yml
    ---
    - name: Deployment DHCP
      hosts: clients
      become: true
      vars:
        network_connections:
        - name: eth1
          state: up
          type: ethernet
          interface_name: eth1
          ip:
            dhcp4: yes
            auto6: yes
      tasks:
      - name: config ip address on dhcpservers
        include_role:
          name: rhel-system-roles.network
    
    
    
    

    打印机

    5.1.1 描述 CUPS 打印架构
    打印机由 CUPS 在红帽企业 Linux 中进⾏管理,这是⼀种开源的模块化软件套件,最初由 Easy Software
    Products 开发,⽬前由 Apple 领导。
    
    CUPS 可以使⽤多个协议与打印机和打印服务器通信。在⼤多数情况下, Internet 打印协议 (IPP)是使⽤
    CUPS 与打印机通信的⾸选机制。此协议是对 HTTP/1.1 的修改,它受到⼤多数现代⽹络和 USB 打印机
    的本地⽀持,通常使⽤ TCP 端⼝ 631。CUPS 可以⽀持直接连接的打印机(例如,使⽤ 并⾏、串⾏或 USB
    通信),并且可以使⽤ LPD 等较旧的⽹络协议。
    
    CUPS 提供了⼀组命令⾏⼯具和⼀个 web 界⾯,⽤于管理 CUPS 和提交打印作业。它还提供了⼀个守
    护进程 (cupsd),⽤于管理每个已配置打印机的作业队列。打印机的每个队列都与 PostScript  印机描
     (PPD) ⽂件关联,该⽂件描述了打印机功能以及 CUPS 应如何为作业做好在该打印机上打印的准备。
    
    
    1> 在使用打印机之前,首先要发现并设置打印机
    [root@workstation ~]# lab  printing-automation start 
    模拟打印机
    
    
    [root@servera ~]# yum install -y avahi cups-ipptool
    
    [root@servera ~]# firewall-cmd --permanent --add-service=mdns
    success
    [root@servera ~]# firewall-cmd --reload
    [root@servera ~]# ippfind  -T 30 发现打印机
    ipp://serverc.local:631/printers/rht-printer
    serverc.local:发现打印机的时候,这个名称client是访问不到的
    
    [root@serverc ~]#  dig @224.0.0.251 -p 5353 serverc.local#没办法跑到打印机上执行这个命令。
    找到地址:172.25.250.12
    
    在client反解:[root@servera ~]# dig -x 172.25.250.12
    ipp://serverc.local:631/printers/rht-printer替换
    ipp://serverc.lab.example.com:631/printers/rht-printer
    
    2> 设置打印队列
    [root@servera ~]# yum install -y cups
    Last metadata expiration check: 0:50:17 ago on Sun 04 Sep 2022 06:39:46 PM CST.
    Package cups-1:2.2.6-28.el8.x86_64 is already installed.
    Dependencies resolved.
    Nothing to do.
    Complete!
    [root@servera ~]# systemctl enable  --now cups
    
    [root@servera ~]# lpadmin  -p kevin -v ipp://serverc.lab.example.com:631/printers/rht-printer -m everywhere -E
    
    -p: 队列的名字
    -v: 打印机的URI
    -m: 使用everywhere 这个模块
    -E: 可立即启动打印机
    [root@servera ~]# lpstat -v查看
    device for kevin: ipp://serverc.lab.example.com:631/printers/rht-printer
    [root@servera ~]#
    -x 删除
    [root@servera ~]# lpadmin -d kevin -d 设置默认的队列
    
    
    3> 管理作业
    [root@servera ~]# lp /root/anaconda-ks.cfg 默认的队列打印文件
    
    [root@servera ~]# lp -d kevin /etc/fstab 通过-d指定打印队列
    request id is kevin-8 (1 file(s))
    
    [root@servera ~]# cancel kevin-8
    
    4>队列管理
    
    [root@servera ~]# cupsdisable -r "No paper" kevin 暂停,你把作业放到已经暂停打印队列中,他是不会打印的
    
    
    [root@servera ~]# cupsenable  kevin
    
    [root@servera ~]# cupsreject  -r "No Papare" kevin
    
    [root@servera ~]# lp /etc/fstab
    lp: Destination "kevin" is not accepting jobs.
    [root@servera ~]#
    [root@servera ~]# cupsaccept  kevin
    
    ansible来管理打印机:问题在于:所有的操作都需要用到command模块来完成:
    
    1> 通过ansible来实现的话打印机的URI是事先知道的。
    
    [student@workstation printing-auto]$ cat playbook.yml
    ---
    - name: config prineter
      hosts: clients
      become: true
      tasks:
      - name: install
        yum:
          name:
          - cups-ipptool
          - cups
          - avahi
          state: present
      - name: start service
        service:
          name: "{{ item }}"
          state: started
          enabled: yes
        loop:
        - cups
        - avahi-daemon
    
      - name: firewrmd
        firewalld:
          service: mdns
          permanent: yes
          state: enabled
          immediate: yes
    
      - name: find printer URi
        command: ippfind -T 3
        register: p_uri
    
      - name: set que
        command: lpadmin -p "kevin-{{ index }}" -v "{{ item }}" -m everywhere -E
        loop: "{{ p_uri['stdout_lines'] | replace('.local','') }}"
        loop_control:
          index_var: index
    
      - name: check default que is exit
        command: lpstat -d
        register: p_default
    
      - name: set default que
        command: lpadmin -d kevin-0
        when: "'kevin-0' not in p_default['stdout']"
    
    [student@workstation printing-auto]$ cat printer-accept.yml
    ---
    - name: Configure a print queue to accept jobs
      hosts: clients
      gather_facts: no
      become: yes
      tasks:
        - name: Confirm the print queue exists
          command: lpstat -p kevin-0
          register: cmdout
          ignore_errors: true
          changed_when: false
    
        - name: Tune the print queue to accept jobs
          command: cupsenable kevin-0
          when: cmdout.rc == 0
    
    

    了解一下Linux的管理打印机
    你买打印机肯定,会有说明书的(笑)

  • 相关阅读:
    海外问卷调查加盟可靠吗?
    Antd4 Table组件折叠收缩功能
    数据中台:数据采集和抽取的技术栈详解
    java正则表达式用法总结
    推荐两款HTTP请求Mock利器
    I.MX6ULL ARM驱动开发---块设备驱动
    Guava精讲(三)-Caches,同步DB数据到缓存
    Jenkins插件开发——插件的拓展
    Multiplexer and Demultiplexer(多路复用器和解复用器)
    电脑重装系统 win11 怎么关闭系统软件通知
  • 原文地址:https://www.cnblogs.com/supermao12/p/16661101.html