|
|
楼主 |
发表于 2022-1-2 18:25:58
|
显示全部楼层
作用:实现域名的解析!1 W" b6 l$ g4 n
www.baidu.com => 14.215.177.37
% j# a2 U0 J. c& z" F+ c
% K" X$ F) K0 |4 ?! Z* k域名:
2 l( h' B- K# O. h! i% Wwww.baidu.com 实际域名为: www.baidu.com.
8 a! p: Y$ W- P- n域名的解析,是反向的。% u" \/ b# ?2 z1 }" I. [
最后的. 是“根域名"
# ~# i: s0 t: h
. T Q: P `. s- V8 s3 U* i- L I根域名(.)下面有13个顶级域名 y/ q; u/ f6 V' j! D
com
% H1 i- }1 m0 D8 p& C. z C) A org/ }7 B( m& p1 U9 M* ^
net
# x( A* m) b! N' R/ N ...
7 Q+ ~. L3 Y* P1 o 5 q- ]- v5 X8 U
NDS的域名解析过程:$ F2 D* t3 L7 Q$ `5 @7 ~1 k
原理:参考图。
# ~+ U) w. \# ^0 T3 q . M- Y6 X. z+ z# E/ m2 o: D
本地域名服务器:是由网络服务提供商来维护的。, g+ J4 A5 V6 o7 j7 ?
根域名服务器、com顶级域名服务器,都是Internet网络管理协会维护的。/ ^/ p( q \. a9 u. Q6 }5 O3 g7 v
baidu.com域名服务器(授权域名服务器),是网站、公司维护的。
: y& |6 Y z4 t# C4 \4 V
( G* w! r% n, m( p0 h5 b 补充:本地域名服务器,会把解析到的IP地址缓存到自己的高速缓存,
: i' b9 c, ~" h8 X# O) J K 但是有时间限制的,最长72小时。
6 G$ }& w x$ P _
8 K, j3 x- h3 s2 A( C+ e# i局域网上网的过程:2 ?- _/ y6 z( }( e% ?
原理:参考图。
U1 F6 r: r' W& Y$ `/ e
- i3 k' z6 B! z4 g9 @1 e0 K网络故障的排查:, r2 }# y. ?* k) d0 [6 L
1)网络检查
; E% S/ ~/ y4 g- F8 y ping 常用的域名, v0 z) Y# {5 m" r* F6 f5 A
比如: ping www.baidu.com# q3 [8 H2 O# B8 c
' h T' n }, G2 F9 ]) m& V( M 可以记住几个常用的外网IP地址。
7 v E" p1 N5 H9 `8 ~5 ?( U ping 外网IP地址4 \) K _2 ?' r' e9 G: `) w) u+ y, |# D
: O* y( W+ m# ?( c) O/ ^( w2 ~ ping 网关IP+ ~2 C: D" r: g. p( }8 \
. _- Z3 O0 E) }! ~) i ping 127.0.0.11 X4 y0 W! d. \. P/ b9 o3 L
1 P* W8 M: M; y( v9 |: L# L traceroute ) h! `$ A& K: P; X: L7 i
可跟踪路由& g8 F1 l$ x* R! k9 t. }
例: traceroute www.baidu.com
6 G$ _- g0 S! y# y% Q: Y1 Q
5 q$ G; ` E @: f 检测服务器的指定端口是否可以,& @ {/ Y; h5 o- e$ d
即检查服务器的指定服务是否可用。) t4 Y' T. D( A1 U, ]+ F
# nmap 10.0.0.25 -p 80! t; w1 j7 e8 a5 [/ D; k
检查提示信息中是否有"open" S4 K5 L( n$ b0 u) {* m
7 }' n! C. t7 V3 k
2. 抓包工具* N1 O1 p7 Z7 C# {& ^% E* ]) y1 {# u/ G
Linux常用:tcpdump
2 v# D! Q+ v, N/ z$ J' A* U Windows常用:tcpdump
0 M0 \4 O7 r- M5 @ # tcpdump -n icmp -i eth0
# s$ B9 U4 F) w2 b 注意:-n是抓指定协议的包+ M- b2 o, J6 _1 F
可省略
# U2 u' u3 Z7 W. @* }: i: E& } -i 转指定网卡的包* v+ g1 R& [3 y* K# d6 A1 r
( w9 M% p" H* e8 r0 \5 D: Z
补充:- r" L8 e! B. v1 X9 E
怎样获取域名对应的IP地址:+ m: y& ?1 L9 T6 B
方法1. # nslookup www.baidu.com+ s3 ~4 L* W6 B
方法2. # host www.baidu.com
( P3 N1 |: y3 y6 `方法3. # ping www.baidu.com
& U9 c6 ^5 D0 l* W+ m9 f 查看结果信息
( o6 X: `$ C5 K# ]# D8 @7 {
c; {7 z' X$ B" d' U0 n7 ?小结:
7 P4 d) i- |6 W5 {. _) ~0 f局域网的电脑无法上网,如何解决?( h' Q) d) L7 K+ P" X- P$ {
1)检查物理链路是否通畅6 ?1 H; X) T( ]* g
2)本地的IP地址设置的是否合适。% w. c: F9 E4 z( \* X
DNS设置是否合适。# {2 D- c% o$ q
3) ping www.baidu.com/ i' \ x* x/ ]3 o: K
ping 外网IP
% q; J# X" H1 n( Q7 n ping 网关
1 z' X% F, ~/ A; d( Q ping 127.0.0.1# i' y) }$ r2 |5 E5 d
4) 使用抓包工具
! L# r9 q) g/ V/ E
( G2 H/ N5 Z! y' ^+ M$ y0 \1 P4 Q-----------------------------------/ _4 N+ V/ s0 L. x% [! j/ J
SSH服务
7 t$ _2 }4 G1 h8 m
* Y' S$ l! f5 ~+ u. I" c* Z1. SSH服务的使用架构
* g8 Z( S& |9 k, t2 i0 H, Z SSH客户端 <------------------> SSH服务器% n+ b& r1 Y" N0 Q3 l+ F
使用SSH2协议
. O {9 ]8 R' G; c$ s, M |7 @8 U5 c4 g& u0 o* q! Y
1个SSH服务器可同时支持多个SSH客户端。/ {4 L2 i8 o+ d
9 k3 x- E( q- B; s& \2. SSH的介绍9 O6 _, h, L3 }5 w$ M: |
SSH, 是Secure Shell Protocol
0 w/ e# L# W W, N3 S SSH比windows中常用的telnet更安全。8 ]' k# _" [* O+ i; Q" O: b
" N- b* J; ]/ N- Q* i' n
SSH的功能:
! ?: C: t/ N0 e0 v% e 1) 远程登录/ C, N1 ]! B; v1 L7 B0 u( s
2)使用SFTP9 n0 m) D8 n# D% ]8 m
3 K/ F6 P* p3 h3 K
SSH的特点:
; E: c! Q/ B0 ]0 Y1 m& x) h5 _6 m ssh是安全的加密的协议。" i$ ^# Y5 M7 Q$ B# Z
默认端口是22" H5 q, {5 e$ g, C. R0 m
5 F; R$ G! l2 W0 C! w2 Q3. SSH的使用
: d& V" L4 \! u$ K 1)查询是否已经安装ssh/ Y' H3 W2 e0 N4 t2 J
# rpm -qa openssh
0 S i0 Y8 C, Q; R
; @8 d6 Q- e' { 版本:ssh1.x 和ssh2.x版本' Q! v0 Z9 q }0 P5 m# J6 G: Q; P
服务器端的版本和客户端需要一致。! E _2 C( _& m$ N' t
0 r/ A4 m$ P+ s3 z. c' x" k" z) \ 2)查看ssh服务的状态
& r* A" v+ X0 }3 b # /etc/sshd status8 x4 O' ]/ W. o5 F' O- ?
$ P9 {5 b- F+ d0 L
3) ssh的使用
+ v$ U+ \* U+ F5 @+ W3 T2 u ssh是通过端操作命令来使用。
5 l4 D/ w+ F0 K2 c! {# k 6 @1 y( @" Y6 }4 C" w @9 o' }# M
客户端可使用的命令:
; ?1 N- C! D% p8 ~" m ssh, scp, slogin, sftp(安装的文件传输)
6 V1 W& D2 t2 N- h+ z
) V- g; R. [1 h1 Z, k4. ssh的传输原理
1 P, F2 Q3 v: H -------- 客户端向ssh服务器发连接请求 --------
8 y/ Z5 u, p" v% | | 客户端 | (1)------------------------------------> | 服务器 |
3 p& s6 Q/ W; e+ v) |3 s; H- c- A |client | 服务器提供一个密钥(公钥)给客户端 | server |
+ f+ T, ~7 Z0 G' U. ~4 U7 w6 c | | (2) <----------------------------------- | |
5 o# f0 p5 P/ o | | client把公钥和自己的私钥生成1个密钥对 | |
( ^( e# a" Y9 [2 U. Z; | | | (3)-------------------------------------> | |; t" w8 N1 G& m2 a1 O M
| | 使用这个密钥对 | | x# a# }) N5 j. X* t5 ~
| | (4) <---------------------------------> | |+ z: H4 `( a% Q R* N; v
5 @! G2 a6 N/ Q- P
补充:客户端自己生成1个“随机”的密码,称为“私钥”,相当与一个钥匙. C/ q1 z1 h0 z- t% o
服务端自己也有1个密码,称为“共钥”, 相当与锁
6 u* `( l/ a' y% o
; a8 |" a& X. C1 {' M5. ssh的加密技术% ?0 ~ G* |" t; t$ T' M) h" [
把信息,通过算法,变成“无法理解”的信息,发送到对端
6 K3 K% i3 {) D _ 对段再用对应的算法解密 ,把信息还原。
) B I7 y7 P% f; k2 J( Y 6 ~: O" D2 X o5 m2 x
ssh2同时支持RSA和DSA两种加密算法
9 r) T7 I$ B4 h& ^/ e: c ssh1只支持RSA加密算法
* N, W: c' F; X1 d. a5 Z* s) _ 1 y% Y+ ~3 u& F7 M; w% r
6. SSH1.x的加密# h) F+ ]+ B9 q9 U7 r
支持RSA加密算法。4 V$ |, q% t7 w# }
0 d0 a1 l+ |# f g7 }8 _/ k
(1)ssh服务启动时,就会生成1个768位(CentOS5.x版本为768位,
/ O! T6 t3 w; K CentOS6.x版本,就有1024位)的临时公钥1 Q* \& s4 R ]) h6 T
4 o$ H" _7 u& t+ @ (2)当client发情请求时,& S+ w6 t* s0 P; ?4 g: k* g1 |4 c+ }1 U
server就把这个768(或1024)的公钥传递个client
8 C2 X; g2 {" k$ `2 E' c (3) client收到公钥以后,就和以前存储的公钥对比一下,检查是否一致。
! G% ]4 ?9 H k; w7 H( P* n$ x 公钥保存在~/.ssh/known_hosts 文件。1 ?1 Y( I7 E: W2 J; |5 k
如果不相同,在CentOS5.x版本中,就把这个文件删除,再次发起连接。
. E( T9 h$ N; B' @ 在CentOS6.x版本,就直接覆盖原来的文件。
$ q9 I" N0 m' ~7 V; b3 U
; r9 J! D( d" u) _$ q client自己生成1个256位的是私钥,2 x9 r* r9 `! [. v2 g( L
然后使用某种算法把公钥和私钥生成1个密钥对
+ h0 C; c; r6 r! d4 b4 B) Q8 i8 {
; f* }4 W& \( ? 最后把这个密钥对传递给server0 L9 I# C8 l! n
, T8 L7 K. _ N+ y6 C! l- C( n
(4) 以后,client和server就使用这个密钥对传输数据。. Z7 I& m- [0 B0 B! F
5 I1 H q6 K5 p/ X) ^, s& I
! l# R7 w% t; V! L. zSSH的认证类型
4 K6 `7 ~" s& r9 d* }7 W( \: i1)基于口令的认证(更常用)+ ~ t- Q" K) `3 u
只需要知道ssh服务端的用户名以及该用户名的密码" P' y I# m* W4 ~8 Y
(当然,还需知道ssh服务器的ip地址,以及ssh的端口号)
( m4 I" X7 ~9 }5 M+ h1 u4 H * ?4 W9 ~3 V( ~" e% Z8 m3 {
# ssh -p22 root@192.168.1.120
8 B3 e) W$ ]6 C* d2 F7 \6 D -p指定ssh的端口号,如果是默认端口22,就可以不用指定" P. ~, q2 x! j9 N+ U- a9 G
8 ^8 [0 z8 J: G$ l2) 基于密钥的认证9 V0 K' X4 m! t! Q- H9 g( N/ M" N4 {
不需要用户输入密码: U5 |" i7 F" W+ |
" `% r- b6 E4 e! X7 p
SSH服务的配置
9 j, U( R2 ~/ Z+ D; [! ]/etc/ssh/sshd_config& A1 F7 z5 ?4 c7 g
--------------------------------, a9 ?. L: `( S" q
Port 50000 #默认是22, 如果修改为其他端口,应该在防火墙中添加该端口7 } K# B: L& C0 w" Q
PermitRootLogin no #禁止以root用户登录,更安全2 y, z7 r1 n8 [% d: D2 f
PermitEmptyPasswords no #禁止以空密码登录
' l9 G; S E' Q. s0 dUseDNS no #不使用DNS解析,可以加快速度
/ [* ~& |$ n9 c5 N/ {4 AGSSAPIAuthentication no #可以加快速度1 E+ K5 w% j# a' ]4 I: r9 m5 G1 Z
2 ?/ K/ f7 p n- ?
2 V+ m& U2 x% M9 ~: f* y1 I补充:$ L+ A" } C7 {7 X2 ?7 o
端口扫描. n- l- e! T% J; g2 K; t! w- C
# nmap 192.168.1.120 -p22
6 k! H8 r1 w6 P( B- {! l 查询192.168.1.120的22端口是否在使用
( N5 q7 P$ C/ ]# n' [ ' e/ i5 W7 r( x% q- `1 W
# nmap 192.168.1.120 -p1-655354 Z/ l3 r6 V9 y% Z8 B/ j- E
查询192.168.1.120的所有端口中正在使用的端口" D9 |4 ~! v: f" x* t, } M8 v
' q" m! t) C; J5 V( i
SSH客户端的使用
! @6 o$ l: d/ Y* Z& X5 S1. 远程登录
1 ~, J- U) Q8 N6 w6 S1 X6 l # ssh -p22 root@192.168.1.120
2 F1 q+ [4 c2 c7 T) e5 E. s1 L6 L6 U 如果使用的是默认端口,-p选项可以省略。' h! }; o9 @+ u+ P
* B3 N. ^# E% H% t/ ? 补充:logout9 h) ^. S4 ], F( n* X
* m. U$ G( r; p2. 直接执行命令
6 _, W k9 v8 O$ Q5 \; J # ssh -p22 root@192.168.1.120 /sbin/ifconfig eth0
) V0 V0 u* z: t# X# ^ 相当与,在192.168.1.120主机中,以root用户的权限,执行指定命令, K' F' I" N- R5 J
命令执行完之后,自动回到客户端7 R1 p1 ~* V3 y- W8 T
; _" c3 }4 ~, S: Q2 s
最后接的命令必须使用绝对路径,环境变量在此时无效。
% J; ~. y M$ b7 @. O, T5 T : f+ t- x" Q5 s L# c# H9 R
3. 远程拷贝(不加密)
* M5 J/ h' }* K5 x8 m4 s N R 推(client -> server, 就是上传), s. t2 t- {+ p0 M" i
# scp -P50000- ` \; a* }4 E
scp -P50000 day11.txt liubei@192.168.1.120:~
) G, ~. R8 i, h) N- j 注意使用scp时,-P为大写字母。) @- d6 H4 z) E$ J3 M5 ~' |) e( m
: s5 O; m0 b1 ^' s! x# Z
拉(server -> client, 就是下载)
" N; K/ P* e0 j% }6 r$ Z. h 命令格式和上传类似,只是,参数的顺序变了。
B" ]! n" P% g' @ # scp -P50000 liubei@192.168.1.120:/etc/hosts /tmp
' J$ z3 N4 @8 D4 H/ A4 g6 a5 t # ^" t/ w* M6 y7 l' W( w5 |/ R3 F
拷目录,使用 -r$ o+ I% C( C' k9 b; Y
其他选项:7 {" y( g' ]9 R. C [
-l (限制速度)( E' y9 N m' Q! n
-l 100k6 x/ Z) A4 |, f3 X" Y
% z% O1 v- x* [- n$ h% y
注意:ssh是全量拷贝,效率不高。7 j4 i4 L* [$ w# ?; c2 m
补充(rsync是增量拷贝,效率更高)
+ `6 C$ {% o2 Q$ F
, D5 ?6 ^, `* n5 }( s7 W0 v4. sftp! M5 v- q( o5 O$ w3 l0 N/ A
加密传输
9 `! E% S" S M) k+ U
+ @) a% T. U. W3 I" v" _% J$ i # sftp -oPort=50000 liubei@192.168.1.120
4 V2 s8 Y+ b7 q, f sftp>9 @/ X: H6 l( z1 x5 W" K* r# y# t
7 G/ G- v9 {% R3 X$ D R+ a
下载:
$ h5 S; f# x$ F+ Z( J sftp> get test.txt /tmp+ Q; ]) \/ ~! [3 A- j$ y3 z
: V" i+ i# F- F$ n" y
上传0 y' J2 i8 s" W
sftp> put abc.txt' t& H* [; C; O" A. L
把本地当前目录下的abc.txt上传到服务器的liubei的家目录中
3 V, u/ Q% g8 |3 d# @
% K2 |6 k$ V$ ~ sftp> put abc.txt /tmp ~' d+ }9 J. T, m5 @
把本地当前目录下的abc.txt上传到服务器的liubei的/tmp目录中
4 @- z% q) V" P/ ]; V
7 F, e& B1 `, I" Y6 K7 K5 ?/ t" ^ sftp> mkdir dir
: p1 h/ P% ^9 H3 c' ?+ ? 在服务器的liubei的家目录下,创建目录dir5 w0 C3 s5 J7 r( i
即,可以执行mkdir
. p+ r$ I) {- t& R1 b : R: h. y4 D' j) c# s1 U2 S. L
补充:退出, r5 [2 j. y- G( q. N( d
sftp> exit+ d" S5 w% W" p8 e* k4 ~9 [, }6 Y3 a
) L- a# W0 P# A6 Y5. 使用密钥来认证
1 u) _7 N( `7 n0 p/ S M" Q 案例:
9 X! \% a/ e4 `; N: a 192.168.1.4 192.168.1.120
, e% e5 D) {2 R) ^# ~$ L8 ` ----- ----9 A, @0 U4 L; n4 n
| A | ---------> | B |7 p9 ^0 U( A% a0 \, [
------ ----
$ }& i _7 P5 t, a" G% E |( }7 i1 t3 b {0 E% ]
|
+ Q! \) j* @- j( _% z V/ H4 G: \2 m$ n9 F! X
-----
/ F0 M3 m& Y( j8 _ | C | 192.168.1.121+ i- X" n0 {- [
-----
( K$ A' e) e) L6 b; Y8 C # G) H* F7 | \; r, b0 a; ]
有3台服务器A,B,C
" s# C+ K I N2 ~% Z5 M |( G 需要每天早上3点,把A的数据文件 user.data 分发给B,和C7 E$ d i1 R2 z6 n% g' [+ \' [
7 u6 G. t n: ?$ O: b6 o3 W 解决方案:使用crond定时任务和ssh的密钥认证/ k" x6 T% V/ R# s! s
4 v1 b0 P# F" ^2 Q7 C( T% R
实现步骤:
; c; l! h7 b/ s9 a 0)准备:
& s! V8 K" A/ M. ]7 `7 a/ w9 g 准备3台主机,分别设置一下hostname为A,B,C
7 g# V7 O7 n6 y# R* e 并设置IP, 保证他们都在同1个网段。' g& u$ ?5 s3 X
4 [* Y. A- l9 G6 c 在B和C主机中,分别创建同1个普通用户(比如liubei)
t6 Q+ l! Q" J4 {+ n 不要使用root(不安全)
6 T3 [3 }7 `' y: ]2 B3 z: q ' @4 X7 K6 }' ^
1)生成密钥
y" `* y0 C( M4 G i$ b1 K # ssh-keygen -t dsa & y% h4 ~5 V7 S# J8 h
就会自动生成一个公钥文件和私钥文件。# C7 {* B" }$ N' u0 Q
7 x) U& A( b/ M) J$ {7 M
-t 是指定加密算法,默认是rsa算法6 _4 Q5 H) t5 {% l& ^. H9 c
dsa算法:只能用于数字签名认证
$ ^ i2 W8 ^# ` rsa算法:即可用于数字签名认证,还可以用于加密。* |( Q6 w o6 m% x, I+ R( l% Z
0 a# x# P2 P- X' p# O 所创建的密钥文件,默认保存在 ~/.ssh/
) Z4 J7 s. z1 V- |$ \" g- s 分别为 id_dsa 私钥
) q8 ]- L4 x: O; } id_dsa.pub 公钥7 O4 f% z8 I" s5 o! P! X, U" P
: _5 ^0 D. n2 H# z5 j6 f- b
2)把公钥传递给服务器B和C/ M. U* w) @. C
(1) 把公钥传递给服务器B
; {0 ~. l( ^8 i/ Q5 Z # ssh-copy-id -i ~/.ssh/id_dsa.pub "-p50000 liubei@192.168.1.120"
% V9 O. _! p; R5 _ 把本地主机的~/.ssh/id_dsa.pub公钥文件, 通过ssh(端口号为50000)传递给
1 j0 t8 U! v2 |& G/ t IP为192.168.1.120主机(以liubei帐号传入)
; H) t5 J* b. c' b " h X v( q& }1 X" V
如果传输成功,公钥将保存在目标主机的家目录的 .ssh/authorized_keys 中
4 Z3 h$ v( e2 Q. T 注意:ssh-copy-id其实是1个脚本文件
) h+ _0 M1 t6 D8 }) a/ F5 a5 K2 w1 V5 z
6 \! p4 Z$ }- }8 T7 q( Y! R: e (2) 把公钥传递给服务器c
% Q/ U+ b8 w6 _$ Z6 I' {8 ] # ssh-copy-id -i ~/.ssh/id_dsa.pub "-p50000 liubei@192.168.1.121"- n; u) ~* U' x
8 z+ ^6 a- e3 r- j4 l 3) 使用密钥直接登录$ t9 g7 i1 G0 v5 M$ n8 w5 \. h
ssh -p50000 liubei@192.168.1.120
$ ]9 x- p5 ~/ O' O, \9 {. y* w) T; d# C ' V3 H; X ]/ o0 j& L
4)使用脚本文件实现分发数据3 q, T7 v3 ^. Y5 L# G
# vim trans.sh
3 C0 o8 Q( f8 P
% D8 G& Z5 o7 V2 C m 当有多个服务器时,可以使用shell编程中的for循环。$ `/ X& G) y+ ~5 C" {% Z
例如:2 e% v. x3 X, V8 t! N
-----------------------
7 Q' q& @- F. ]! Z for n in 120 22" V& g# D( W& p. Y, T
do) z% h( o+ g5 b$ G" p( J
scp -P50000 $1 liubei@192.168.1.$n:~
( `1 V6 l; `& i+ ~$ a done0 h* _! [0 |) d G; {* g
---------------------
5 ~, R( Z6 J# U, M2 l $1表示脚本文件的第1个参数,这里用来表示需要分发的文件。 |
|