|
|
楼主 |
发表于 2022-1-2 18:25:58
|
显示全部楼层
作用:实现域名的解析!
" i( n) g- I X Qwww.baidu.com => 14.215.177.37' `; ? _- e. h9 u
* `$ `: d# W- l域名:+ ]& Y5 P4 [' i/ L/ J
www.baidu.com 实际域名为: www.baidu.com.' B6 A, Z8 Y; b2 M, N
域名的解析,是反向的。
% W! Z3 R8 U' T' l# t最后的. 是“根域名"" e- z9 X+ j' K: J9 k8 f7 Q
7 m) w8 I t) T9 r/ _
根域名(.)下面有13个顶级域名- \+ w' C. E: I" @* {: N2 c
com
7 y' ]9 T7 V' Z/ | org; {/ k6 k" | A0 Q7 ]: V3 k
net/ b- P3 T& Q" @0 m
...* A$ T: @ c! D; o" I i
. n" J( T0 W2 q8 @, KNDS的域名解析过程:5 ]$ P" t0 y, F: c- s
原理:参考图。 d" Q( {' m, A. R( d4 h" B
5 l4 o2 d$ T* X3 ~* _% u% m: G
本地域名服务器:是由网络服务提供商来维护的。6 j' ~" f# v% U
根域名服务器、com顶级域名服务器,都是Internet网络管理协会维护的。
: s8 I8 G: S$ t+ s" I baidu.com域名服务器(授权域名服务器),是网站、公司维护的。4 s) i$ o( b6 l* d1 Z( k
8 J5 X: `' Z/ p8 g- ^* G( y 补充:本地域名服务器,会把解析到的IP地址缓存到自己的高速缓存,
2 B9 H9 L. j# | 但是有时间限制的,最长72小时。/ e. f8 l4 n. [# o0 p4 x t
" J; D1 W2 l/ D d5 f, c8 M局域网上网的过程:
+ C/ n3 s& t" ?2 L% ~ L 原理:参考图。
! f$ Q3 ~6 d$ z. s! a! L' w; @9 C& f2 U 9 X X* O4 K. ^
网络故障的排查:5 c# X) ]) H8 G+ h3 t
1)网络检查! s; ~2 {5 R; v* d5 `
ping 常用的域名/ q* r3 M# r- q/ {- }, E w
比如: ping www.baidu.com
+ t/ b4 i9 S0 O) k $ B+ K) a6 O* t+ L
可以记住几个常用的外网IP地址。
" C# P2 t& }. q6 M3 } ping 外网IP地址
) Y: s' u. Q+ R" g X6 H ( A. _2 L: P" m" T' R7 r9 X
ping 网关IP9 I6 Y( r" ~* n* {5 v5 j
7 R# t* t8 w4 C; k( K ping 127.0.0.1
( I$ f% n9 z7 e6 ~! a2 B
+ u1 A& K, A; D3 n( j# D, O( W/ q traceroute
3 w4 L1 r. C# k2 Y. I 可跟踪路由6 e& [+ B" N8 Q
例: traceroute www.baidu.com
, R9 A B+ x" X* |
( L0 T/ e5 x; q; C3 l8 m3 e9 z 检测服务器的指定端口是否可以,
8 [" n0 O; J+ G0 w# H 即检查服务器的指定服务是否可用。) _( ]! ~; a9 C) l% R
# nmap 10.0.0.25 -p 804 g5 c+ `9 ^" E* S8 u0 q6 \" [, ^
检查提示信息中是否有"open"0 [! C/ x W' Y1 j5 @) w
4 r$ b5 C9 e/ b
2. 抓包工具, @' l* g, L9 \: a a# [7 [2 q, t
Linux常用:tcpdump3 s( b2 u8 |1 q) L8 q# r5 f
Windows常用:tcpdump
6 K9 R4 H# n# v$ I7 w # tcpdump -n icmp -i eth02 Q0 o& n. F; D4 t
注意:-n是抓指定协议的包
% p# j$ b( R0 Z1 w e! t; ~ 可省略
" a% E+ b7 p1 |3 f -i 转指定网卡的包7 A4 G6 J8 \1 R# J2 R9 ^
5 E# q- _( E* b% M3 J4 L
补充:( M/ r" B# V; T! `/ a' U: O! [
怎样获取域名对应的IP地址:: n: Q* t) Y( s
方法1. # nslookup www.baidu.com
$ j" h7 S( O) M3 e8 D' |方法2. # host www.baidu.com
$ A% O6 f- d. {! f! K( E+ M方法3. # ping www.baidu.com
5 T/ \6 A; W, A; z$ A 查看结果信息
, |" i' l! c. q; O6 w$ v% m ) E) [4 [3 E8 k& {& S8 q( w+ G2 A
小结:
; S* u2 d) ]+ J; y. Q% h! S/ Q局域网的电脑无法上网,如何解决?
& m1 @% E8 W) g, N1)检查物理链路是否通畅# ^3 _3 U) ^# X d( V0 N: F
2)本地的IP地址设置的是否合适。% r1 v O# ? D+ ~
DNS设置是否合适。1 ^8 M, J7 D% r( q8 {( e" G& r
3) ping www.baidu.com7 i: N; R, |, h% k3 ^( ^, ^
ping 外网IP! s P, @* P; q ]7 E( F- I
ping 网关
3 m0 ^. v0 _/ U8 {8 m+ H$ g ping 127.0.0.1
! P D$ O/ \5 W" ^$ n6 t0 g4) 使用抓包工具
; n" }1 i; P4 E, ?1 h$ s8 i 6 x1 Q, u' ~, P: h2 I
-----------------------------------, n# I# s# \2 @- ]' a
SSH服务
7 j6 F5 `- t2 |' e \ * I, G7 X6 k4 O, ^# f1 w @
1. SSH服务的使用架构2 D R* _* s' M$ w
SSH客户端 <------------------> SSH服务器
1 ], v" f- c* u( [/ N f 使用SSH2协议: c' |9 S. p4 M9 I) o
/ v* z$ {& f" e$ w' g5 A
1个SSH服务器可同时支持多个SSH客户端。
3 `+ r, g; f; t2 X9 P
- X; |6 u# v" q. n0 v" H2. SSH的介绍
$ e3 r/ c1 G+ k* m. _: p$ O SSH, 是Secure Shell Protocol
! o1 R: l/ ^1 | \: W9 e+ Z; M SSH比windows中常用的telnet更安全。2 l7 c( H7 @6 U+ G2 o8 T6 d
3 @( f4 d1 v" K& u
SSH的功能:8 a$ U# R) |) h3 n9 n: W2 G
1) 远程登录
# H# K* `- T" X! C' G 2)使用SFTP: k8 d( w2 [$ T' X/ e5 j K
! Y8 X2 L, s/ ? P6 f+ F+ j2 ], [
SSH的特点:
: Q) ?. F! B) p2 Y% l ssh是安全的加密的协议。
6 I" A0 x" ^% s, ?/ `6 m ]2 v 默认端口是22
/ h7 F$ d9 g3 k% [
. k- d, T `5 j: Z3. SSH的使用
) v+ O5 I3 A* @& ]* V( F 1)查询是否已经安装ssh: l2 v4 B! R2 @* {: o5 j
# rpm -qa openssh
; l0 Y/ t. H0 H0 L t, [% F# L: b # o" S h, w( \1 j
版本:ssh1.x 和ssh2.x版本
/ C$ A2 v. O/ ] 服务器端的版本和客户端需要一致。
8 t5 |6 M( C7 P) ]% M' X! v, l
8 V% D2 s! m/ Z7 h: X2 N& j! [8 V( o 2)查看ssh服务的状态. w) p6 O7 k( F/ _; C( E
# /etc/sshd status( q6 r" P3 C+ G# E6 j6 ~
- g9 i- J9 D- |& y, `. ~* b0 ~ 3) ssh的使用
0 J6 p9 {" v! l3 T z; t ssh是通过端操作命令来使用。' J, \9 i8 d0 G- U) B! M
. c# z+ M' G: }( C, C
客户端可使用的命令:: x& J# m0 E" `9 O+ C6 ?: L+ d# L, b5 z
ssh, scp, slogin, sftp(安装的文件传输)" e& w! a, P6 u# C9 M2 y) `5 G
1 Y7 s$ o3 |( e3 T$ B6 `4. ssh的传输原理: u2 S+ Q5 y. _& M. m K* a8 Q! e
-------- 客户端向ssh服务器发连接请求 --------0 D4 L2 }- o: W+ K
| 客户端 | (1)------------------------------------> | 服务器 |- d& N( n1 I9 f3 b- O+ \( d
|client | 服务器提供一个密钥(公钥)给客户端 | server |
+ o& s6 R/ m: x H, ` | | (2) <----------------------------------- | |
* m6 ~1 L7 Q: G5 [3 z4 l1 s | | client把公钥和自己的私钥生成1个密钥对 | |
# M! N( l& ]. Z- `5 J | | (3)-------------------------------------> | |
3 [# O) j2 e( D" U, r* V | | 使用这个密钥对 | |
S1 R: ^; h: |. E' v | | (4) <---------------------------------> | |/ l1 ~! B; C2 T' I
5 l' T2 d# ^, Q# i2 S 补充:客户端自己生成1个“随机”的密码,称为“私钥”,相当与一个钥匙, r: q* Y- h! O2 ~
服务端自己也有1个密码,称为“共钥”, 相当与锁
. R5 B+ Y* q6 {, D
7 i, g3 `9 W2 ?' L7 O3 ^3 P5. ssh的加密技术/ X7 I1 k6 Z0 @$ |
把信息,通过算法,变成“无法理解”的信息,发送到对端
0 A5 N6 {9 R; J/ _; a- S$ F 对段再用对应的算法解密 ,把信息还原。
% T$ S2 d' u( Z) K& ^& R . s, A& x1 f+ z- L6 O# t7 _; P9 Z
ssh2同时支持RSA和DSA两种加密算法
+ Y0 i2 k2 N" e3 L ssh1只支持RSA加密算法' @- v# g \% U; n! ^) \- K
3 m9 A \; R8 l6 z6. SSH1.x的加密
6 o, t+ a% j1 C( `9 Z3 ~ 支持RSA加密算法。
3 I B8 q+ y% z/ i0 \ 2 h9 {1 T% u; M& H1 B. X4 e7 }
(1)ssh服务启动时,就会生成1个768位(CentOS5.x版本为768位,
: e+ G0 y/ c. f5 e" e" V CentOS6.x版本,就有1024位)的临时公钥" m c k; E5 O7 p. B, U; X
* _# ?) V" S, u+ | (2)当client发情请求时,+ b; Z6 i1 T) a7 e6 w2 W% y
server就把这个768(或1024)的公钥传递个client& H/ k, m$ _' B" `6 e
(3) client收到公钥以后,就和以前存储的公钥对比一下,检查是否一致。0 R4 k' ]. u$ X& _+ E% A
公钥保存在~/.ssh/known_hosts 文件。
. r" ]9 G' C6 X+ E) R 如果不相同,在CentOS5.x版本中,就把这个文件删除,再次发起连接。5 {; R% m0 U: [9 |+ f; d* ]
在CentOS6.x版本,就直接覆盖原来的文件。! S% O/ W( [) ^# M, ~
* Q2 j. @( f6 ?7 w% k. Y h
client自己生成1个256位的是私钥,
9 ]+ X3 R0 Y& Y5 p. p 然后使用某种算法把公钥和私钥生成1个密钥对
0 q, {/ S8 L# x3 _$ a7 s
4 H9 @3 l9 d2 u" I! v% Z 最后把这个密钥对传递给server5 N7 f7 U, ^. R# l, J" N0 T
$ Y* D& A' V) c1 A* D& D7 C* \
(4) 以后,client和server就使用这个密钥对传输数据。6 q" e0 R' ~. K; L3 K7 J3 }
4 F7 I, m! P' g$ e7 Y
g& A8 ~- a1 S* cSSH的认证类型
' m9 n+ J" Q3 c* S( r Q$ |1)基于口令的认证(更常用). U% W# r3 U0 F P
只需要知道ssh服务端的用户名以及该用户名的密码
. g1 H6 C+ J# [/ }7 W (当然,还需知道ssh服务器的ip地址,以及ssh的端口号)
/ F) r$ V: J) S+ x& p# y
$ m$ W4 J }2 q7 D f # ssh -p22 root@192.168.1.120
( P- b) X. E- e6 V D$ z -p指定ssh的端口号,如果是默认端口22,就可以不用指定" G: s O9 O$ D' L. L
& H" a O0 {$ o# B. V0 C3 Y0 E% j: E
2) 基于密钥的认证3 ], x$ G2 G9 n0 ]3 i, U
不需要用户输入密码' Q$ [2 T' y' P" ]
* n% Z+ n1 c, J: G( n, g& C0 ]SSH服务的配置
& D. K) d% ~( \/ T/etc/ssh/sshd_config
0 ^0 H9 B+ f* t5 u4 h, k1 G. A& Y--------------------------------
: K- Z. i. ~7 R' O3 M9 B. SPort 50000 #默认是22, 如果修改为其他端口,应该在防火墙中添加该端口
! ]) G/ k! K8 h: _) S& u# RPermitRootLogin no #禁止以root用户登录,更安全
) A- {2 d8 v: d: aPermitEmptyPasswords no #禁止以空密码登录
/ e: e6 y, M% TUseDNS no #不使用DNS解析,可以加快速度2 p m5 u4 j5 F7 I$ }
GSSAPIAuthentication no #可以加快速度2 y1 t O. y. D) k4 y5 e8 @' H2 s
! T; N b+ p0 U" K" Z6 `. Z 0 _7 G3 B2 m5 a& @ L, P
补充:
) E1 l8 S2 [$ U- G端口扫描3 o) o% L( K( R( l2 {1 r
# nmap 192.168.1.120 -p22
! Z. e6 N8 K( l9 K; Z2 l: Q 查询192.168.1.120的22端口是否在使用% v$ U3 F2 ]. i7 S2 u/ q
& |: t S3 G) u/ f6 f0 B. U# nmap 192.168.1.120 -p1-655350 z5 H R4 Y. L! @
查询192.168.1.120的所有端口中正在使用的端口; z( j% j$ ~$ C0 \8 I. T4 `
7 _9 g k, B- d. @0 MSSH客户端的使用, F% Q& H+ z) \$ f4 z
1. 远程登录, M3 n* X$ x- W' x# \, X
# ssh -p22 root@192.168.1.120
f+ e/ _+ l: ]5 y, g. D 如果使用的是默认端口,-p选项可以省略。- V0 ]: Z9 ^$ E
. c2 z- T& x( z. s( Q' b
补充:logout# Z" _: F0 C# N2 R0 v8 c
: \3 h7 n& v P7 C n2. 直接执行命令
: h8 D2 g( Z0 u* }% M# o5 L: T: z # ssh -p22 root@192.168.1.120 /sbin/ifconfig eth0& I% c( b! P1 \, |- Z
相当与,在192.168.1.120主机中,以root用户的权限,执行指定命令( g2 x9 b$ v! ^- z3 ^& L' U# }2 X
命令执行完之后,自动回到客户端4 V. [0 K( {: D/ I" Z
: I& r8 } Q! A( Y0 j 最后接的命令必须使用绝对路径,环境变量在此时无效。
! K6 B3 b, I- t. _
U+ c. C8 Z0 U( \2 L6 Z+ z3. 远程拷贝(不加密)
1 R Q G- }* I# n. n3 A5 O 推(client -> server, 就是上传)' O- ^. |3 U- B& n
# scp -P500007 n) Y! f8 n, D. @; m0 S: X
scp -P50000 day11.txt liubei@192.168.1.120:~* ~% A' f% } Y2 {
注意使用scp时,-P为大写字母。
3 d: m+ c' s2 F7 N2 u0 v1 b y/ j
. n8 O K6 X, b( h 拉(server -> client, 就是下载)
- T5 p$ T1 D6 L 命令格式和上传类似,只是,参数的顺序变了。
+ {/ s; g) r4 y }* B # scp -P50000 liubei@192.168.1.120:/etc/hosts /tmp' m4 h' H$ v7 G5 d3 c% y
, j" K- H7 a$ _8 O) A, @: @ 拷目录,使用 -r X! {* ~* Q) ~2 V, i
其他选项:
1 s" O" G7 ?. H% z -l (限制速度)
% m1 ?6 l+ M" r7 p- J -l 100k
- }1 x/ h7 K; b% f( k( Q1 ~" {
- T& w- j* g7 e' G2 ]3 A: P 注意:ssh是全量拷贝,效率不高。" J6 Z* b/ S3 [9 Q, R
补充(rsync是增量拷贝,效率更高)
: C' Y" r4 _4 R
- \3 A# o! }6 K4. sftp
8 x+ U9 O7 E/ K 加密传输6 P$ e2 |' d1 M9 d7 ^
6 G* U: N7 ]. ~7 L: a # sftp -oPort=50000 liubei@192.168.1.120
8 D7 ?, p7 @$ k$ ^ K sftp>
+ \3 f7 k4 E7 B+ _. ~8 @/ ]" y
! L* Q0 h6 F0 h7 _& V' }. C4 L 下载:
% p/ }3 G) ^# \/ V6 O- ] sftp> get test.txt /tmp
% I- R: H$ M9 r( I, M
+ m, c s& s9 J0 ` 上传- e" k3 s0 _0 v( q
sftp> put abc.txt
: o8 C" H% V( E4 a" J 把本地当前目录下的abc.txt上传到服务器的liubei的家目录中& C6 Q1 B7 H, F) M0 {" Z
4 [; h" v& h4 ] sftp> put abc.txt /tmp
* \/ e% i1 I+ V) P2 A, X: q 把本地当前目录下的abc.txt上传到服务器的liubei的/tmp目录中8 ?% u- L3 ?+ d# h, n. U- g8 q
7 g) u8 {1 V* B. I/ I
sftp> mkdir dir
1 m1 F t+ R9 ?' H* f5 D$ n1 S2 b) w T 在服务器的liubei的家目录下,创建目录dir
2 z6 r$ H! `1 c; t& w! ~6 ^ 即,可以执行mkdir, b/ [3 Z% [" S4 X* T
3 u9 k9 [6 W0 P 补充:退出0 L9 F$ S$ R. J- i2 N
sftp> exit7 C9 D- d: }8 e5 y# }- e- d& v
1 x* w) d7 O Q7 S5. 使用密钥来认证; l2 x1 |: i* _: n6 p' B- s
案例:2 q7 A) @: B) Y8 i3 r6 _
192.168.1.4 192.168.1.120
: \7 ?4 f P4 P' l$ p2 z P ----- ----) l1 X0 Q& W/ S$ T! m/ T
| A | ---------> | B |5 T% h6 J7 M3 ]- U+ g2 h
------ ----
; j* l. C4 ?6 F9 A2 @2 `( e |7 R6 P# W2 f7 {9 R8 t
|
2 b4 Q/ j- p ~4 ?* p V
) p* c( c5 f* a/ b0 J7 Q) } -----0 q! r: B4 N/ f9 V
| C | 192.168.1.1212 P, i- V7 T9 `
-----+ `9 [% Z+ t1 h
' `6 `6 j& A% S# ]3 |0 s! d$ J% s
有3台服务器A,B,C
' L# q9 P0 W5 B' H 需要每天早上3点,把A的数据文件 user.data 分发给B,和C" J1 a% ^9 _& O3 c3 z
# s" t5 A- W" i# [9 G 解决方案:使用crond定时任务和ssh的密钥认证( l; }1 z. g7 Z$ `2 {
2 b" Q% K# r4 K I/ U% {
实现步骤:
' s+ W1 G# z8 E# a' g% z4 A0 i 0)准备:) H6 e+ z4 ?8 h- q8 e' ?
准备3台主机,分别设置一下hostname为A,B,C
" Z4 E, Z7 c( c 并设置IP, 保证他们都在同1个网段。
5 f# Z; H. H$ M; h& | 0 S6 Y9 d" t: ^* o. K7 v1 k7 n
在B和C主机中,分别创建同1个普通用户(比如liubei)
* Q4 Z( G. _; P1 U( f) S& K( x 不要使用root(不安全)
: U+ [/ x! t' j9 o' O$ q8 F
* h; A- P- y' O @ c 1)生成密钥( B0 [/ V# o& y( f0 o6 `! Y$ |
# ssh-keygen -t dsa 9 P: Z' J, n, w: w6 P' N6 z/ L
就会自动生成一个公钥文件和私钥文件。% T+ m$ d0 ?' U
) ?5 J6 p! \( l9 [! [9 [$ J -t 是指定加密算法,默认是rsa算法5 \$ y6 G" a" d) b
dsa算法:只能用于数字签名认证: c! [) g# H5 i( {. K
rsa算法:即可用于数字签名认证,还可以用于加密。
8 u5 x: a3 H& s1 @ 2 A/ _& E. o6 T0 o6 E! t P }
所创建的密钥文件,默认保存在 ~/.ssh/8 o) I' m- D2 d) J( \ V9 o* t8 A! _, Q0 O
分别为 id_dsa 私钥
* i" B% k- h6 ? E- f+ Y' h" g id_dsa.pub 公钥7 A* H( j8 L/ p+ [8 r" p5 ~
% X' Z) J! q: S; d2 C) D 2)把公钥传递给服务器B和C
/ p& C' {, I$ l a' L (1) 把公钥传递给服务器B
2 U# Q0 l- x: C6 d/ }0 N: C # ssh-copy-id -i ~/.ssh/id_dsa.pub "-p50000 liubei@192.168.1.120") V" \3 e: V# W o# M, [8 Q; | r
把本地主机的~/.ssh/id_dsa.pub公钥文件, 通过ssh(端口号为50000)传递给& A8 m7 K5 d2 l5 v% a
IP为192.168.1.120主机(以liubei帐号传入)9 E1 g! \) R- x( a1 ]; A
% u7 m% g/ ^# j: V Y! f. ]( a 如果传输成功,公钥将保存在目标主机的家目录的 .ssh/authorized_keys 中0 g$ u/ q9 F% u6 n) Y# r0 X
注意:ssh-copy-id其实是1个脚本文件 U) U+ P8 m" f8 r
3 b( t/ p& s7 n K7 v) I& H
(2) 把公钥传递给服务器c
9 v9 d+ s ?, v2 W # ssh-copy-id -i ~/.ssh/id_dsa.pub "-p50000 liubei@192.168.1.121"( }& ~- v$ l- a& h1 s3 h. Z, w
; m) v( L9 w' r5 j. e/ T
3) 使用密钥直接登录+ x' V2 ?8 a' t" @) `% C4 y
ssh -p50000 liubei@192.168.1.120
% {& q9 l8 k/ i5 F3 V& S" N
( t; W+ E+ _# o; {, i# q: f: Y 4)使用脚本文件实现分发数据
; t: a( @! Q9 X) Z$ t) b # vim trans.sh
: z" n) _! ^6 `: S
5 h9 X1 ], V6 D3 \9 Y, | 当有多个服务器时,可以使用shell编程中的for循环。
4 B2 Y$ M& B7 @. y9 k 例如:, y5 B, _% S* I; h, X/ H
-----------------------
, Z! `8 V' F' k$ X) ]5 [ for n in 120 22- c, H' w; ]3 |: ]% N6 R/ l
do
( W; J- R0 L" r) v' Z( G$ C, A- Y* m scp -P50000 $1 liubei@192.168.1.$n:~ M8 ?! x6 ~9 L/ f5 Z$ {" k
done
0 F" e9 G# p$ L$ b; ~ ---------------------- ~, v0 T9 }7 j7 A8 g. a% T
$1表示脚本文件的第1个参数,这里用来表示需要分发的文件。 |
|