DNS原理&ssh

作用:实现域名的解析!
www.baidu.com => 14.215.177.37
  
域名:
www.baidu.com 实际域名为: www.baidu.com.
域名的解析,是反向的。
最后的. 是“根域名"
 
根域名(.)下面有13个顶级域名
   com
   org
   net
   ...
 
NDS的域名解析过程:
   原理:参考图。
 
   本地域名服务器:是由网络服务提供商来维护的。
   根域名服务器、com顶级域名服务器,都是Internet网络管理协会维护的。
   baidu.com域名服务器(授权域名服务器),是网站、公司维护的。
  
   补充:本地域名服务器,会把解析到的IP地址缓存到自己的高速缓存,
         但是有时间限制的,最长72小时。
    
局域网上网的过程:
  原理:参考图。
 
网络故障的排查:
1)网络检查
   ping 常用的域名
   比如: ping www.baidu.com
    
   可以记住几个常用的外网IP地址。
   ping 外网IP地址
     
   ping 网关IP
    
   ping 127.0.0.1
 
   traceroute  
   可跟踪路由
   例: traceroute www.baidu.com
 
   检测服务器的指定端口是否可以,
   即检查服务器的指定服务是否可用。
   # nmap  10.0.0.25  -p 80
    检查提示信息中是否有"open"
 
2. 抓包工具
   Linux常用:tcpdump
   Windows常用:tcpdump
      # tcpdump -n icmp -i eth0
      注意:-n是抓指定协议的包 
                可省略
            -i 转指定网卡的包
   
补充:
怎样获取域名对应的IP地址:
方法1. # nslookup www.baidu.com
方法2. # host  www.baidu.com
方法3. # ping www.baidu.com
       查看结果信息
 
小结:
局域网的电脑无法上网,如何解决?
1)检查物理链路是否通畅
2)本地的IP地址设置的是否合适。
   DNS设置是否合适。
3) ping www.baidu.com
   ping 外网IP
   ping 网关
   ping 127.0.0.1
4) 使用抓包工具
 
-----------------------------------
SSH服务
 
1. SSH服务的使用架构
   SSH客户端   <------------------>  SSH服务器
                    使用SSH2协议
 
   1个SSH服务器可同时支持多个SSH客户端。
 
2. SSH的介绍
  SSH, 是Secure Shell Protocol
  SSH比windows中常用的telnet更安全。
 
  SSH的功能:
   1) 远程登录
   2)使用SFTP
 
  SSH的特点:
   ssh是安全的加密的协议。
   默认端口是22
 
3. SSH的使用
  1)查询是否已经安装ssh
    # rpm -qa  openssh
 
   版本:ssh1.x  和ssh2.x版本
   服务器端的版本和客户端需要一致。
 
  2)查看ssh服务的状态
   # /etc/sshd status
 
  3) ssh的使用
     ssh是通过端操作命令来使用。
      
     客户端可使用的命令:
     ssh,  scp, slogin, sftp(安装的文件传输)
 
4. ssh的传输原理
  --------       客户端向ssh服务器发连接请求             --------
 | 客户端 | (1)------------------------------------>  | 服务器 |
 |client  |      服务器提供一个密钥(公钥)给客户端     | server |
 |        |  (2) <-----------------------------------   |        |
 |        |     client把公钥和自己的私钥生成1个密钥对   |        |
 |        |  (3)------------------------------------->  |        |
 |        |        使用这个密钥对                       |        |
 |        |  (4) <--------------------------------->    |        |
 
 补充:客户端自己生成1个“随机”的密码,称为“私钥”,相当与一个钥匙
       服务端自己也有1个密码,称为“共钥”, 相当与锁
      
5. ssh的加密技术
   把信息,通过算法,变成“无法理解”的信息,发送到对端
   对段再用对应的算法解密 ,把信息还原。
 
   ssh2同时支持RSA和DSA两种加密算法
   ssh1只支持RSA加密算法
 
6. SSH1.x的加密
   支持RSA加密算法。
 
(1)ssh服务启动时,就会生成1个768位(CentOS5.x版本为768位,
     CentOS6.x版本,就有1024位)的临时公钥
 
 (2)当client发情请求时,
     server就把这个768(或1024)的公钥传递个client
  (3) client收到公钥以后,就和以前存储的公钥对比一下,检查是否一致。
      公钥保存在~/.ssh/known_hosts 文件。
      如果不相同,在CentOS5.x版本中,就把这个文件删除,再次发起连接。
      在CentOS6.x版本,就直接覆盖原来的文件。
 
      client自己生成1个256位的是私钥,
      然后使用某种算法把公钥和私钥生成1个密钥对
 
      最后把这个密钥对传递给server
 
   (4) 以后,client和server就使用这个密钥对传输数据。
 
 
SSH的认证类型
1)基于口令的认证(更常用)
  只需要知道ssh服务端的用户名以及该用户名的密码
  (当然,还需知道ssh服务器的ip地址,以及ssh的端口号)
 
  # ssh  -p22  root@192.168.1.120
   -p指定ssh的端口号,如果是默认端口22,就可以不用指定
 
2) 基于密钥的认证
   不需要用户输入密码
    
SSH服务的配置
/etc/ssh/sshd_config
--------------------------------
Port 50000    #默认是22, 如果修改为其他端口,应该在防火墙中添加该端口
PermitRootLogin no  #禁止以root用户登录,更安全
PermitEmptyPasswords no #禁止以空密码登录
UseDNS no           #不使用DNS解析,可以加快速度
GSSAPIAuthentication  no   #可以加快速度
 
 
补充:
端口扫描
# nmap 192.168.1.120  -p22
  查询192.168.1.120的22端口是否在使用
 
# nmap 192.168.1.120 -p1-65535
  查询192.168.1.120的所有端口中正在使用的端口
 
SSH客户端的使用
1. 远程登录
  # ssh  -p22  root@192.168.1.120
   如果使用的是默认端口,-p选项可以省略。
 
  补充:logout
 
2. 直接执行命令
  # ssh  -p22 root@192.168.1.120  /sbin/ifconfig  eth0
  相当与,在192.168.1.120主机中,以root用户的权限,执行指定命令
  命令执行完之后,自动回到客户端
 
  最后接的命令必须使用绝对路径,环境变量在此时无效。
   
3. 远程拷贝(不加密)
   推(client -> server, 就是上传)
   # scp -P50000 
    scp -P50000 day11.txt  liubei@192.168.1.120:~
    注意使用scp时,-P为大写字母。
   
   拉(server -> client, 就是下载)
   命令格式和上传类似,只是,参数的顺序变了。
   # scp -P50000 liubei@192.168.1.120:/etc/hosts   /tmp
 
   拷目录,使用 -r 
   其他选项:
      -l  (限制速度)
      -l 100k
 
  注意:ssh是全量拷贝,效率不高。
        补充(rsync是增量拷贝,效率更高)
 
4. sftp
   加密传输
    
   # sftp -oPort=50000 liubei@192.168.1.120
   sftp>
    
   下载: 
   sftp>  get test.txt /tmp
    
   上传
   sftp> put abc.txt
   把本地当前目录下的abc.txt上传到服务器的liubei的家目录中
    
   sftp> put abc.txt  /tmp
   把本地当前目录下的abc.txt上传到服务器的liubei的/tmp目录中
 
   sftp> mkdir dir
   在服务器的liubei的家目录下,创建目录dir 
   即,可以执行mkdir 
 
   补充:退出
   sftp> exit
 
5. 使用密钥来认证
   案例:
      192.168.1.4          192.168.1.120
        -----               ----
       |  A  |  ---------> | B  | 
       ------               ----
          |
          |
          V
       -----
       | C  | 192.168.1.121
       ----- 
        
      有3台服务器A,B,C
      需要每天早上3点,把A的数据文件 user.data 分发给B,和C 
    
      解决方案:使用crond定时任务和ssh的密钥认证
 
  实现步骤:
  0)准备:
     准备3台主机,分别设置一下hostname为A,B,C
     并设置IP, 保证他们都在同1个网段。
 
     在B和C主机中,分别创建同1个普通用户(比如liubei)
     不要使用root(不安全)
 
  1)生成密钥
    # ssh-keygen  -t  dsa   
     就会自动生成一个公钥文件和私钥文件。
      
     -t 是指定加密算法,默认是rsa算法
     dsa算法:只能用于数字签名认证
     rsa算法:即可用于数字签名认证,还可以用于加密。
 
     所创建的密钥文件,默认保存在 ~/.ssh/
     分别为 id_dsa 私钥
            id_dsa.pub 公钥
 
  2)把公钥传递给服务器B和C 
    (1) 把公钥传递给服务器B
     #  ssh-copy-id   -i  ~/.ssh/id_dsa.pub   "-p50000 liubei@192.168.1.120"
       把本地主机的~/.ssh/id_dsa.pub公钥文件, 通过ssh(端口号为50000)传递给
       IP为192.168.1.120主机(以liubei帐号传入)
    
       如果传输成功,公钥将保存在目标主机的家目录的  .ssh/authorized_keys 中
       注意:ssh-copy-id其实是1个脚本文件
       
    (2) 把公钥传递给服务器c
    # ssh-copy-id   -i  ~/.ssh/id_dsa.pub   "-p50000 liubei@192.168.1.121"
      
  3) 使用密钥直接登录
      ssh -p50000  liubei@192.168.1.120  
    
  4)使用脚本文件实现分发数据
      # vim  trans.sh
       
     当有多个服务器时,可以使用shell编程中的for循环。
     例如:
     -----------------------
     for n in 120 22
     do
        scp -P50000 $1  liubei@192.168.1.$n:~
     done
     ---------------------
     $1表示脚本文件的第1个参数,这里用来表示需要分发的文件。

  

posted @ 2019-12-18 21:33  MlxgzZ  阅读(652)  评论(0编辑  收藏  举报