|
|
楼主 |
发表于 2022-1-2 18:25:58
|
显示全部楼层
作用:实现域名的解析!% W, ~+ C$ Q8 z) h* Q3 g
www.baidu.com => 14.215.177.37* T1 x9 N1 m8 o! D) S* y+ n4 p
4 n$ q m$ H9 E+ F/ k! E域名:4 y. Q( W& a( A" N. L i
www.baidu.com 实际域名为: www.baidu.com.1 P; i; k$ r) K) C- Q
域名的解析,是反向的。8 P6 r! W. Y8 z% E
最后的. 是“根域名"; x5 o6 Q w0 s8 Q1 R
( A, w$ Y4 f) W1 h3 X根域名(.)下面有13个顶级域名
2 w- e/ A, }# M+ T; a' Y0 ~* M r com: A; e: O& g: B1 o" o m
org
' ^2 r1 \7 W- w) u8 j net
, y% D" j' b* v3 Q$ R7 z0 e9 ? ...: ]1 t) g& V* ^# e
7 B9 ?" Q4 t( R% u! ]/ n* u- P, I
NDS的域名解析过程:& }9 b r8 Q7 M) q7 q: q# [0 V$ c
原理:参考图。
$ w8 c2 P! y3 r( X, h ) e; h% [7 x3 A: k( \
本地域名服务器:是由网络服务提供商来维护的。
4 [: Q) g0 G+ X7 w$ U) l; w' K 根域名服务器、com顶级域名服务器,都是Internet网络管理协会维护的。
- {0 j# A, T2 s) U. G/ P, v baidu.com域名服务器(授权域名服务器),是网站、公司维护的。
6 B& R/ H) X0 B; z. O
* k6 O3 H$ M* e% L# r 补充:本地域名服务器,会把解析到的IP地址缓存到自己的高速缓存,
/ n O* Q f/ k/ R 但是有时间限制的,最长72小时。
: ^: p) U2 I3 N; H; D % C2 `- I' V* q& p: p- \
局域网上网的过程:
; ?6 a( V! r. I7 L6 e# ~; U 原理:参考图。1 L& j% V! x" y' Q8 U% X W7 I
' |. S. _1 E$ B8 J* v
网络故障的排查:, R$ g8 E9 H6 d
1)网络检查
) B, M$ s# t ]/ {- | ping 常用的域名
. t( C% X X( A B S. o! l. J 比如: ping www.baidu.com
7 Q0 |+ `9 x. Y6 T 9 m/ l5 m7 G# n, C
可以记住几个常用的外网IP地址。
0 C% p2 i) z7 F; z# o9 P5 |+ L ping 外网IP地址6 o- N' w& ?* K' F% z: B5 ^: k' Z
) G, B/ D5 F( A/ W: b ping 网关IP
* `; P/ ~: G/ L' c3 U
% Q$ p( U0 G2 E. g& Z ping 127.0.0.1
: f- j: Q) Q; ]) {- ~. x2 K \ 9 ], i* t) ~/ w* F& R$ K
traceroute + r( H) N9 `; [9 Q
可跟踪路由
+ a( h6 z4 Q! ?, v8 r: ] 例: traceroute www.baidu.com
8 z( r ~3 R* T3 s 9 P2 o0 B# N" J! Q' R# }/ {9 N
检测服务器的指定端口是否可以,
" z. D) f L" M1 w: Z 即检查服务器的指定服务是否可用。
' N2 F& }4 j; }" D # nmap 10.0.0.25 -p 80
- U! E) n* B9 M7 e/ ?1 } 检查提示信息中是否有"open"
' {$ I- W8 x/ S2 N v- y, f5 b
' X: r5 a# x4 K( {& L0 v2. 抓包工具; R B- J2 h' `( u2 T
Linux常用:tcpdump
0 T$ n# G! ~8 ^# y2 e Windows常用:tcpdump Y: V2 _, g8 O- h* i5 B* r
# tcpdump -n icmp -i eth0
9 ~. Y3 y: a J9 x 注意:-n是抓指定协议的包4 r+ K( G4 Z; I/ c8 _: g0 k
可省略
! n" s; j6 }' D, w+ p -i 转指定网卡的包1 _0 Z m3 s: X! L- e' N
/ J3 C) ^$ K; g/ c! Z7 a1 a
补充:1 N( T* E& d2 M r
怎样获取域名对应的IP地址:, d! y% o0 N1 t
方法1. # nslookup www.baidu.com/ I" W4 a' u# ~
方法2. # host www.baidu.com
4 \5 y' y1 @/ N5 H方法3. # ping www.baidu.com
+ h7 j- G8 y7 @$ E; ~2 s7 O 查看结果信息: g7 g2 w5 G: m/ c
$ v6 `4 \* O6 P' H0 x5 i* f小结:
. r! a0 N" S+ n3 l3 e/ \局域网的电脑无法上网,如何解决?
% @/ I: D1 S# k( |. W1)检查物理链路是否通畅
. m. j i* s" T1 N6 E- O2)本地的IP地址设置的是否合适。/ s" S! [5 Y2 r3 {# M" L) V
DNS设置是否合适。
5 N/ a) ^5 ^4 ~0 }1 p. q5 A- T3) ping www.baidu.com
/ c, w9 {; J7 I& ]* [* f ping 外网IP
) C3 y w0 E. I8 v2 ?; E ping 网关/ Y M' j& b* f& w
ping 127.0.0.1
$ `3 `' A) Y* F2 c4 F6 K& T4) 使用抓包工具
8 X+ ?& D' q( F) N
4 H7 x9 P; F. P8 P5 X0 U. @-----------------------------------
! N( E5 I7 M& USSH服务
3 g$ O8 y# h$ W + S: H/ w5 M" J) b6 U: r3 _% ^* T5 e
1. SSH服务的使用架构, n% N c- l, ]
SSH客户端 <------------------> SSH服务器
$ n5 O/ Z; `: V# E* k! d 使用SSH2协议
* b8 y0 I. u5 f% C
) A7 d. x9 n# `$ z' w+ \# Z* l5 ? 1个SSH服务器可同时支持多个SSH客户端。
+ F) o; O7 ]% V& h% H 2 H9 g8 l o; x9 h
2. SSH的介绍
( M7 j& S2 f# } SSH, 是Secure Shell Protocol
% ?2 f/ w9 I( w4 z: t SSH比windows中常用的telnet更安全。
: s8 i O; q2 p( O
& Y6 i7 J: x4 u+ N6 o SSH的功能: I2 w9 E( x( h9 b# T. d5 x
1) 远程登录5 Q! Z( C; B4 `" ~
2)使用SFTP
/ c. a, w/ Y- m! H- z( H
& W9 w h$ z7 k6 l/ _, X0 R' ~& B! D SSH的特点:; T, K% u9 t3 b
ssh是安全的加密的协议。9 d* f4 p1 U- A3 Z0 ]0 p
默认端口是22. |2 h' u/ j( f0 R8 [) Q
. u2 {0 A, ~7 _$ G) o* u8 f
3. SSH的使用 I! @. t4 V9 m; J8 S
1)查询是否已经安装ssh
4 R% t' c4 Q8 X3 R # rpm -qa openssh
3 B# K8 D8 @4 ~8 l8 Z( e
, _- A4 [7 N$ ], O+ u A4 } 版本:ssh1.x 和ssh2.x版本0 J7 A% D/ `& E5 r7 n
服务器端的版本和客户端需要一致。: Y. N' D$ n- B6 \
4 ^7 ~+ ~0 h& Z( W& P' k8 a2 I
2)查看ssh服务的状态
2 _% x4 T4 e P- M# m" a: [6 }5 z, Z5 \ # /etc/sshd status' a. l4 r8 ^& ^! B1 E! l3 a% t
* S4 _! H* ?+ c7 H- [7 a# x 3) ssh的使用
3 @& B( ] ~" i ssh是通过端操作命令来使用。. N, I, {1 v: k" Y0 e- L
4 p' V7 b2 F9 M/ y' t2 v8 U 客户端可使用的命令:
7 r$ k" F+ T) U: B/ s6 B1 D ssh, scp, slogin, sftp(安装的文件传输)
; r* T2 z$ ]" k4 R% n. A# a
8 y! t. B3 e* e% p G- v4. ssh的传输原理0 F# S, l( N0 d5 F8 o& W! h0 U
-------- 客户端向ssh服务器发连接请求 --------
' ~9 a+ |3 I' x" d | 客户端 | (1)------------------------------------> | 服务器 |
) `! L9 L! s* f: B; D7 O |client | 服务器提供一个密钥(公钥)给客户端 | server |
3 [& C) b. _6 G1 ^1 Z | | (2) <----------------------------------- | |- Y% l' q2 f9 X" F4 i/ s8 T0 p
| | client把公钥和自己的私钥生成1个密钥对 | |" D3 y. y7 a0 ]$ D1 l$ T
| | (3)-------------------------------------> | |4 _" k: z* L3 O: d
| | 使用这个密钥对 | |& C- C7 o( O: W( {
| | (4) <---------------------------------> | |' v% z |# t1 y1 W7 N& C6 C
0 b4 I' m0 P4 c& M# ^/ x
补充:客户端自己生成1个“随机”的密码,称为“私钥”,相当与一个钥匙
: }& S- M6 d% b& ?% R( z" C 服务端自己也有1个密码,称为“共钥”, 相当与锁
; V$ Z3 C5 S& x$ c , I5 T1 T* ~7 ?8 H3 g/ r7 W7 [
5. ssh的加密技术+ t+ F: {# [6 E; U% b i5 K
把信息,通过算法,变成“无法理解”的信息,发送到对端
5 C/ R2 M% {- {) T6 S 对段再用对应的算法解密 ,把信息还原。9 \6 ? b* T j
: E H7 z9 m$ F+ s/ y! g1 C! W% n4 _ ssh2同时支持RSA和DSA两种加密算法1 i+ y7 p4 D/ h. i
ssh1只支持RSA加密算法
- e, u2 Z+ C2 C( J! G8 L- x , F, ?3 J% V, A3 s/ o0 C- s
6. SSH1.x的加密
, y8 ?3 H9 T4 G: r 支持RSA加密算法。
( W( x2 a# a8 Q8 ]8 {3 F
: X. v: \! s( b, d. [: h e5 m(1)ssh服务启动时,就会生成1个768位(CentOS5.x版本为768位,
9 ~, V7 X: b% y) `! ~" ^5 R! `+ d CentOS6.x版本,就有1024位)的临时公钥
# f2 L, f4 `4 G
# C e( G f. l$ S/ e6 I) P (2)当client发情请求时,2 O8 o7 }; j4 i# m W
server就把这个768(或1024)的公钥传递个client
' \. |( a. c% P o+ _) |: ]: C (3) client收到公钥以后,就和以前存储的公钥对比一下,检查是否一致。
. M( m3 e# X( l7 [( H( \ 公钥保存在~/.ssh/known_hosts 文件。: ~% S$ b; {! J" b" Y2 q
如果不相同,在CentOS5.x版本中,就把这个文件删除,再次发起连接。1 c3 X( k5 o7 b% w! W* b: ]7 g
在CentOS6.x版本,就直接覆盖原来的文件。
; j. r8 @0 m3 V5 ?2 x
( U' Z! i$ m1 {2 x client自己生成1个256位的是私钥,
1 X+ e! L% {( D" U! G" I/ @ 然后使用某种算法把公钥和私钥生成1个密钥对5 q% ^4 V T1 ~: h' Z3 K
! v0 h3 f4 Y( U! B9 h8 R
最后把这个密钥对传递给server* c- w5 V" Q6 @2 B" [- I; H
, Z+ Z8 j% X) p9 O (4) 以后,client和server就使用这个密钥对传输数据。 s7 U* B5 B( v8 z3 b* H! g* S
* J3 u8 H# j {, h+ x- q" ^* T6 h 8 z1 z2 ~! Q4 }. o* o. Z: ~
SSH的认证类型
% `$ B. \; [- D) B4 t, J1)基于口令的认证(更常用)
9 n0 d8 ]0 `" R5 t& D( q; L 只需要知道ssh服务端的用户名以及该用户名的密码% o+ C( M S! G2 c$ V5 H
(当然,还需知道ssh服务器的ip地址,以及ssh的端口号)
# u8 @! y; l. F# d+ X. A ; x6 j. X! L7 O: i
# ssh -p22 root@192.168.1.120
9 ~5 s% \/ Y$ A! A9 ]) F/ D7 A -p指定ssh的端口号,如果是默认端口22,就可以不用指定' f0 I1 w6 w) {: }
: i1 e( |4 G" e- U& F6 p" W9 L& n, `
2) 基于密钥的认证2 ` C$ j( \+ o! e
不需要用户输入密码
6 _4 q k* T' P$ Z' z2 _ ( l& V# W2 w$ a& G7 r9 {
SSH服务的配置5 s+ s6 R7 q+ z8 A% g) ~2 v' l
/etc/ssh/sshd_config: p+ z/ ?1 H4 [6 E
--------------------------------
5 b) ]0 ~# P0 D! q. TPort 50000 #默认是22, 如果修改为其他端口,应该在防火墙中添加该端口# S V1 x4 s" F3 J' I2 h B. j
PermitRootLogin no #禁止以root用户登录,更安全
5 v# R4 V% l3 gPermitEmptyPasswords no #禁止以空密码登录
* I' E4 t4 e! D& g4 tUseDNS no #不使用DNS解析,可以加快速度9 E6 v/ F, B, ]! `
GSSAPIAuthentication no #可以加快速度' @5 I" `& a8 e& x+ m) ]
6 S, k6 ]5 v4 \
& i r* P m& M4 q) I8 e补充:, Y. }4 g1 z/ [ U( P' [! d
端口扫描
& Q5 m8 r/ F& O, i9 ~4 V6 A R# nmap 192.168.1.120 -p22% X! c' l8 L4 X% |
查询192.168.1.120的22端口是否在使用
& m f. |( v; M4 K# D
* G. g" p8 q+ H# q" i6 ^; w* s# nmap 192.168.1.120 -p1-65535
4 Z. X4 ]! L: [% Z! X( Z$ i 查询192.168.1.120的所有端口中正在使用的端口* H" X2 l) B* h4 N, N
9 L$ g4 h1 q- L! L
SSH客户端的使用- |( \% N1 B% \: d7 H2 c
1. 远程登录0 z2 X* v! W K6 m; Q9 ^% h
# ssh -p22 root@192.168.1.120
; |9 W( t8 P" f- S+ `6 D# ^7 c 如果使用的是默认端口,-p选项可以省略。7 w! @8 V: p) t8 S9 N
3 v$ Q& J* K& ~ T1 p 补充:logout
V0 k1 F/ F* e+ \
6 I( `% G- j; P& @, @! g+ V2. 直接执行命令
5 d# {% m% U. } # ssh -p22 root@192.168.1.120 /sbin/ifconfig eth0
' Z$ M4 j* W& D }1 Q& ], L 相当与,在192.168.1.120主机中,以root用户的权限,执行指定命令$ E' s5 ^6 q+ D0 z
命令执行完之后,自动回到客户端3 H/ \+ m, @. z, c* r- n
% e: Q0 G' ~( w1 G G r* ~ 最后接的命令必须使用绝对路径,环境变量在此时无效。% ?/ J# e. ?* {; l3 C& e
) Q; ]: K! Y/ B: ^0 z' q# L3. 远程拷贝(不加密)- B$ k. K% V4 q" {6 I
推(client -> server, 就是上传)
X. ?" ?) V4 I5 i( t # scp -P50000
; O6 n6 g7 {3 O scp -P50000 day11.txt liubei@192.168.1.120:~: J" r( M; h2 N( g% x" M# g# @6 Z6 @4 f
注意使用scp时,-P为大写字母。
7 S# P2 n9 ~3 a% |" Z5 {6 J2 ^
9 M1 l1 D( j, ~; x; Y- | 拉(server -> client, 就是下载)& b, v8 ]& J" j& ~' N2 f
命令格式和上传类似,只是,参数的顺序变了。9 N" c4 }9 F$ q3 r$ c) P n6 x
# scp -P50000 liubei@192.168.1.120:/etc/hosts /tmp
4 O0 J( a& h" M& I ) _! A4 M1 V1 ^4 I% W1 y6 B" y' ]7 |1 L
拷目录,使用 -r
( K4 L$ u1 ]0 Q; K9 W& o 其他选项:
- ?% v9 c! {' n) E& W3 d" G$ P -l (限制速度)9 C( }. [/ \# q' Q: g& o9 p
-l 100k$ g% a4 D7 S# K
' b9 ~; s) ~; S. L2 z$ `# @& P, r
注意:ssh是全量拷贝,效率不高。
& E0 M) o- i4 ]+ d0 O2 p1 d 补充(rsync是增量拷贝,效率更高)
: ^; U& N* v3 H# ]& O: W
( P' g. ]$ n# l6 r4. sftp: `2 R( r0 Z4 T( {
加密传输
$ A! N' R# B i$ R! R
& H+ i9 Y: k/ g/ F9 \4 J # sftp -oPort=50000 liubei@192.168.1.120+ ~# a* S+ Q# @, y& O/ P0 G
sftp>. _9 h% E+ ^; R" y% [6 \" m
7 h0 u* v5 O+ B4 Z, J D" r7 `: d) ? 下载:
* n! H$ f& s" y( `9 V sftp> get test.txt /tmp* @, i6 k7 b# P/ n
4 `9 J; L0 L! x. D# | 上传
1 {/ h4 t( H6 d sftp> put abc.txt
" r% O% u: N. A) N9 @; t/ B4 t 把本地当前目录下的abc.txt上传到服务器的liubei的家目录中3 J8 Z( ^6 c/ k" P- G
/ a' \: F1 L" ^; L4 ? sftp> put abc.txt /tmp
^4 O7 j- _: I/ {4 e 把本地当前目录下的abc.txt上传到服务器的liubei的/tmp目录中
( V/ }' W2 t; K& \# @ `; ~7 H3 u* y* Y
sftp> mkdir dir
) o7 m, g$ ?, R3 N! T, j) ` 在服务器的liubei的家目录下,创建目录dir
- \0 \# D& L1 V 即,可以执行mkdir9 R) \% [! m5 E* o. Q$ e, n/ V& ~
6 Y8 j% n" r. o$ U3 A9 w8 @ 补充:退出: B) M5 [1 M7 J6 _) C
sftp> exit
) g- a4 f- U' D8 O" O
9 y% O) s# A) q }3 ~' P6 C y5. 使用密钥来认证
$ g6 U, U! n7 Z1 E) Y' R 案例:/ E# ]6 D: B7 `( f @, I- p
192.168.1.4 192.168.1.120 ~' C, G4 S% B& C, v& |- ~
----- ----
( g- x8 ^* e1 G$ x. C* D" ]" @ | A | ---------> | B |
8 C# O0 g% `/ W0 h i/ } ------ ----
0 w4 b3 p0 C# a8 N# A4 M& r' V |+ g5 V+ }7 f4 T9 q. s5 B# ~
|
# v2 s/ m4 N+ u8 a% ` V
9 t/ w0 v( }# c r7 e -----$ x) d5 y0 D: o9 K' ~) G- U
| C | 192.168.1.121
+ K$ |3 d5 x% l! h -----1 \8 b, L n" f% p$ M ~
4 X/ h0 l; K4 K8 R4 h$ T0 T 有3台服务器A,B,C
! R- i- `; E @$ B" s& G" B 需要每天早上3点,把A的数据文件 user.data 分发给B,和C+ \1 Z/ Q" X) S& ~* d) l0 \8 J
m, q- c- _/ Y5 d" |
解决方案:使用crond定时任务和ssh的密钥认证) i+ C( ]/ j8 ]1 j$ E
& b. _/ H7 _# Y4 S% Q! `
实现步骤:
' B7 i$ C$ o- N a' t6 ] 0)准备:
2 t- ]$ b R4 {) @# ] 准备3台主机,分别设置一下hostname为A,B,C; g/ O( s4 k3 q8 O/ Y' x7 E2 _! U
并设置IP, 保证他们都在同1个网段。
) N V \ x8 [) N4 S, K 3 G6 G* R) M& m+ E! c, j
在B和C主机中,分别创建同1个普通用户(比如liubei)! ?+ F$ {* A: I/ v: a0 B" T% _
不要使用root(不安全)
/ ]' |% d, x" T7 q- ?3 d+ ~6 o1 i
( q" K2 ]9 \- ~/ `3 X: B) U 1)生成密钥
3 W' P5 V$ V. ]+ q' A # ssh-keygen -t dsa 3 S& t |( o; f7 B' X+ k
就会自动生成一个公钥文件和私钥文件。- b9 u; s+ @. x3 o6 M
, s( T/ e1 z+ o$ p4 t -t 是指定加密算法,默认是rsa算法4 F/ l/ c4 X9 z5 `' ]) A
dsa算法:只能用于数字签名认证
/ W9 k$ n" b- {/ v- m" } rsa算法:即可用于数字签名认证,还可以用于加密。
$ d4 y) q, i" l1 q
# `, S6 b; h r4 \- }5 M 所创建的密钥文件,默认保存在 ~/.ssh/: V5 Z8 b- Q% T+ g, ?9 w
分别为 id_dsa 私钥- T7 n5 O, \; f4 G5 Z1 F7 p/ p/ A/ _
id_dsa.pub 公钥
+ y, s4 m7 \. @1 M$ u, @; x9 b: e 2 R" b8 p) S2 {" I! O; q' r* E
2)把公钥传递给服务器B和C
3 d) N0 j. K; P) m (1) 把公钥传递给服务器B# S: ?8 A9 b, x, P" d
# ssh-copy-id -i ~/.ssh/id_dsa.pub "-p50000 liubei@192.168.1.120"
9 F1 e8 v4 A& d4 ], {% w! ]5 T" | 把本地主机的~/.ssh/id_dsa.pub公钥文件, 通过ssh(端口号为50000)传递给
8 t+ U$ J* O+ @; y$ H IP为192.168.1.120主机(以liubei帐号传入): j/ B+ _% q! w6 d& k
1 W+ I" i) r! h/ A9 s- z
如果传输成功,公钥将保存在目标主机的家目录的 .ssh/authorized_keys 中
% f h6 [3 X5 u1 i1 R; p, y: |$ T 注意:ssh-copy-id其实是1个脚本文件
) w3 J; X# Q8 Y$ N5 z, g$ m: O4 x w . N5 x+ B8 Z& Z# O; L; N+ y: n
(2) 把公钥传递给服务器c) d L# k* g& O/ j4 `
# ssh-copy-id -i ~/.ssh/id_dsa.pub "-p50000 liubei@192.168.1.121"
* c. G' T3 i9 g
5 ?9 q3 H. r: J, N 3) 使用密钥直接登录$ N Y4 h' l) a2 {
ssh -p50000 liubei@192.168.1.120
$ u4 _; [) a4 B |; n3 @
& }; m$ B' d+ Y5 c- t 4)使用脚本文件实现分发数据
, @7 i% c# ~" ^* K" R0 \ # vim trans.sh
$ A6 ?$ _3 _* G& s+ q8 V2 C, i- P
- O% C! b4 D' y2 a0 Z( ? 当有多个服务器时,可以使用shell编程中的for循环。5 ~8 D# `9 w* p! m; Z0 o
例如:; i; f% y* O2 z) B7 I
-----------------------
; o; b3 |5 O) s9 G T for n in 120 22. ^& {8 a( t9 M
do
* k& B, b. i! o$ ?5 \ scp -P50000 $1 liubei@192.168.1.$n:~
4 h8 l% g7 W" S) g done/ q6 U$ E- \- f, C) b# x8 Z- h
---------------------
1 _6 o9 f l& p2 [1 i $1表示脚本文件的第1个参数,这里用来表示需要分发的文件。 |
|