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个参数,这里用来表示需要分发的文件。