|
|
楼主 |
发表于 2022-1-2 18:25:58
|
显示全部楼层
作用:实现域名的解析!. g. t3 F5 X2 }- T6 t) G' o& h, B4 [
www.baidu.com => 14.215.177.37
: u, n$ \$ u# f6 f* j 4 W1 S! ^: G% t% |/ K7 c4 c
域名:
. H; M$ R& g* r' l& ^" kwww.baidu.com 实际域名为: www.baidu.com.! X4 M3 K1 ^, s1 w+ U O9 ^' s
域名的解析,是反向的。
" O( E) f2 n, ^' w最后的. 是“根域名"7 {6 y$ U8 s+ M' ^- E! [
, c" G4 L! k: z根域名(.)下面有13个顶级域名6 ]3 B3 e5 S8 v$ v* X! I) j% w
com
$ |5 ^1 a1 @) O+ |4 H6 t3 w- Q org6 o: z% d& u1 D4 v: z3 j: k
net3 K9 k C( l, D/ A% I
...; J$ y$ `& y S
7 b7 e1 Z9 N3 }' M; a
NDS的域名解析过程:
3 ?: K* u! B2 j 原理:参考图。
1 d9 D6 _2 v# O: _1 ^8 v
! |# [! ]* z9 Q; c/ i 本地域名服务器:是由网络服务提供商来维护的。$ x/ q6 A! O G9 D7 Y7 Z9 {
根域名服务器、com顶级域名服务器,都是Internet网络管理协会维护的。
% B/ X8 y0 M! Y2 D* }* m baidu.com域名服务器(授权域名服务器),是网站、公司维护的。
* r) K2 ]1 d7 Z 3 T5 K+ L, z$ v( g: `
补充:本地域名服务器,会把解析到的IP地址缓存到自己的高速缓存,
8 [' p1 j' S! s7 \: [/ }" m, f 但是有时间限制的,最长72小时。
/ j" C$ a+ H4 Z! {
& u* d8 F3 S: W$ B局域网上网的过程:
3 c( n0 Z* @* a# y& V. x! s D- k 原理:参考图。) h4 A9 G8 z/ E4 ]& X6 p
# d3 q$ b5 K; t6 x+ ^' y* B2 b
网络故障的排查:2 |+ y% [3 I! I- V, D% M- V
1)网络检查) k8 {: B( {8 T0 d; N g, q- P
ping 常用的域名
0 _& c; z' k+ a, U u6 I0 P 比如: ping www.baidu.com
, a, E4 c1 A# Y8 n
& S, |( ?+ f5 [ _- M" h* x 可以记住几个常用的外网IP地址。
1 A% A. F5 q# z3 w8 P7 G' v9 n1 I ping 外网IP地址
6 @- Q T* {! x7 ~% v: }* z) Z 4 k* u2 q) }" C7 T
ping 网关IP
, x2 h: M" ^; }5 l! x+ f0 C5 C4 m
& j* H, c+ @% c. \. Y6 R/ E3 X ping 127.0.0.1
% r; m8 n$ Y6 T- A6 K# T9 v : `6 f5 s A: o9 e- C
traceroute " _% h w* B8 L. @! T. ~( G
可跟踪路由
8 w$ y, v% L# h5 E d' T1 D 例: traceroute www.baidu.com* ~" k. v+ N% t8 n6 ?" a6 {
; L' b' t, B0 l$ ^2 y5 E2 o
检测服务器的指定端口是否可以,
/ J8 v. _1 s( \( H' V5 r7 l6 U3 s 即检查服务器的指定服务是否可用。% e* B6 ^. H4 ?7 N, u% Q
# nmap 10.0.0.25 -p 80* U, @8 ~! O$ k! h, x
检查提示信息中是否有"open"
: y# D _8 }' i: [9 C [! w; d
& e5 H: w, n2 h3 b2. 抓包工具
W6 H/ I V' B8 C4 ^# e5 s1 f Q9 Y Linux常用:tcpdump
. Z1 i( p. X$ R5 }8 c# e Windows常用:tcpdump
! K6 E2 j4 N/ ? B: Q; a! g # tcpdump -n icmp -i eth0
& |1 L! ~! @; ~; F$ s0 p6 h 注意:-n是抓指定协议的包
2 K: L" ^5 n6 e 可省略) _3 x9 @6 c4 c9 }! M( N3 c0 J
-i 转指定网卡的包
, a5 ~. M2 y( A L
K. c% d+ ]! C: C6 h6 W& z* @补充:
% y, j. {, m, P8 [* z怎样获取域名对应的IP地址:/ W3 D9 @- t$ {( x& w
方法1. # nslookup www.baidu.com
+ \$ l# U$ k5 k方法2. # host www.baidu.com
% m6 a5 R* a y! Y# ^4 i方法3. # ping www.baidu.com
8 y5 F6 [" q3 w3 J 查看结果信息0 P( e, M1 L' ^/ H0 ]5 {7 M6 Z
; y' P# h* T+ w, d9 G小结:
4 r1 @" G: p5 w5 C) A/ u5 r6 b, p- [局域网的电脑无法上网,如何解决?0 R- s6 c8 n5 q* e! T
1)检查物理链路是否通畅- i) I3 V, h) h% \, p5 S' L
2)本地的IP地址设置的是否合适。
( C e6 E: C4 _/ x( v DNS设置是否合适。
& _; S7 T% e H# e9 j, ~3) ping www.baidu.com4 _& x% a* F( L N
ping 外网IP
+ ~2 y" s3 x+ R4 p ping 网关- N& H* @2 U9 \1 o1 ^8 |) i
ping 127.0.0.1. ^& v! j' Y' N1 R7 R
4) 使用抓包工具* v4 I$ k" J# Y( H
. w) d7 g5 k5 Z) m* P8 P- F! U-----------------------------------
7 b- `1 U# S, x0 n" {5 ]* _SSH服务( G! t( H5 r2 G2 S/ b1 Z
3 b& Y+ t6 s1 ] }- H2 P1. SSH服务的使用架构7 }! ]8 W2 ~9 ~3 J0 h P
SSH客户端 <------------------> SSH服务器; C$ S8 D2 w' c
使用SSH2协议
: Z, D. L) C4 J& y% p# y : @9 n# q3 o. U) V
1个SSH服务器可同时支持多个SSH客户端。
% p G. w0 [9 X) P% S6 s* T6 A( t
9 c8 X M$ g- w( y2. SSH的介绍+ Y# E5 N. _! t# v {
SSH, 是Secure Shell Protocol
0 F9 F4 J+ g, @ SSH比windows中常用的telnet更安全。 q/ }4 P0 t& [' P8 M7 u
) u9 x( B( q q) p/ T
SSH的功能:
+ f6 W) T* ]& w3 Q 1) 远程登录3 M5 J; K3 S! T- |4 n2 z. S
2)使用SFTP
; }" I) d3 r& O' Z6 Z# ?' N* L3 z 2 q& @$ K( L' {; n1 ^0 W/ T
SSH的特点:, ~/ P4 y0 t" \4 h
ssh是安全的加密的协议。
0 [1 K0 z! N5 Y" B* i- j 默认端口是222 J3 h5 b8 O0 ^
* Y& C, M% j! [5 X2 e
3. SSH的使用' ~" F6 C& V. i9 r- q& t( u
1)查询是否已经安装ssh
/ V2 G! j: ~* A' j # rpm -qa openssh) k/ |7 h$ J9 \, x9 Z
2 D& n- a7 j% E# `, J( u$ ^
版本:ssh1.x 和ssh2.x版本4 B5 ?1 R5 w! l
服务器端的版本和客户端需要一致。/ b# @2 C4 g$ i7 j9 l6 T
) @9 Q2 O" Y0 d/ O" T! ]
2)查看ssh服务的状态& @; \' B+ q% p/ U4 y
# /etc/sshd status G, `) h) o; ^0 M' v7 Z, I5 T
+ {- M1 [8 a1 y1 e9 i8 ?/ U8 R 3) ssh的使用, k$ I* Q4 _- |2 W
ssh是通过端操作命令来使用。
7 Q) X- z7 _- y# f" x/ e- i
`( M9 H9 ~* `2 G 客户端可使用的命令:
, f; l8 ]2 m. S4 i( `& D ssh, scp, slogin, sftp(安装的文件传输)+ c7 K, J; M4 m% f, W7 x1 I
' C9 m, q8 {# U$ U4. ssh的传输原理5 A3 s! R9 T, l Z. N$ v. ~$ f; g
-------- 客户端向ssh服务器发连接请求 --------
# ]. P% Y8 T l" G/ R( Q8 ? | 客户端 | (1)------------------------------------> | 服务器 |( ?( o* q: J7 n/ }' |2 h. w: ~
|client | 服务器提供一个密钥(公钥)给客户端 | server |
$ w0 B$ W7 m! ]/ E5 m; _; u: S* r5 ` | | (2) <----------------------------------- | |1 P) Q4 S3 A) s4 u8 a
| | client把公钥和自己的私钥生成1个密钥对 | |
* |- X: G* F$ e' L- [4 L3 B | | (3)-------------------------------------> | |" q$ o/ W) T$ Q y+ C+ ^9 f
| | 使用这个密钥对 | |* {5 Q0 ?* \& E4 P# `+ O8 Y
| | (4) <---------------------------------> | |8 Q* U* M) H: F8 I' i1 f- {
; P W' T4 B G) R5 H3 @
补充:客户端自己生成1个“随机”的密码,称为“私钥”,相当与一个钥匙
. g, g7 p1 P9 o( t! ^9 I 服务端自己也有1个密码,称为“共钥”, 相当与锁7 q) Q- v" a) H1 }+ f
2 C# P' D2 c2 y! h8 k, ~5. ssh的加密技术" ^- g/ @ ~0 s4 A6 {% j; T' F
把信息,通过算法,变成“无法理解”的信息,发送到对端* ^& R7 }1 z/ F m6 ` {
对段再用对应的算法解密 ,把信息还原。7 Y3 }" `3 d+ {. [/ F T
. @ A) j! W' n+ M& w
ssh2同时支持RSA和DSA两种加密算法) F% l2 K& e+ Z' }1 a. }1 {3 P
ssh1只支持RSA加密算法6 K8 k* ~4 j. g/ D7 K7 q
[, n; C9 s8 R/ W) A2 f
6. SSH1.x的加密! D, U$ J0 \' X5 g0 q* E
支持RSA加密算法。$ c5 {1 P$ |- r* p' ]& z
7 E# Z; g7 F% \7 B8 q! A
(1)ssh服务启动时,就会生成1个768位(CentOS5.x版本为768位,0 z) w5 E. }3 N y$ K8 H1 U
CentOS6.x版本,就有1024位)的临时公钥3 i" I2 [4 M U; H7 \
" S$ v# k" _2 x# \
(2)当client发情请求时,
8 q, Z4 U# v# |1 e; a server就把这个768(或1024)的公钥传递个client; ~& R$ M. R1 y0 \. W' l
(3) client收到公钥以后,就和以前存储的公钥对比一下,检查是否一致。
; Y; ]/ k9 E) H 公钥保存在~/.ssh/known_hosts 文件。4 [0 h9 K" z2 q' j+ M0 I4 t0 M
如果不相同,在CentOS5.x版本中,就把这个文件删除,再次发起连接。
$ N2 t8 x* }# w 在CentOS6.x版本,就直接覆盖原来的文件。
% K7 z0 J3 o3 a% f9 c- z P
0 t% E& g3 Q5 i" V/ P2 M+ g client自己生成1个256位的是私钥,
; j8 ]8 f/ O# x X 然后使用某种算法把公钥和私钥生成1个密钥对 p, p& `2 Y: i" S+ ?5 c0 B% }
) Y" S: b, L) r6 m% p7 d 最后把这个密钥对传递给server" O: y* C. @" [7 C5 c
2 p9 Q$ ^" I3 _4 ]7 [4 c c
(4) 以后,client和server就使用这个密钥对传输数据。
5 Y1 N0 |- S! {4 @ ' Z3 u0 p8 x* |: r+ l
0 u3 X' w' J6 Y6 i% x% Z' B* i9 H% ]
SSH的认证类型8 u7 C' F4 E6 P/ A
1)基于口令的认证(更常用)
4 t9 H" w4 U, O# e 只需要知道ssh服务端的用户名以及该用户名的密码+ D b+ i; y( x \
(当然,还需知道ssh服务器的ip地址,以及ssh的端口号)0 T' \* q* n, ?( m$ ^0 E
" z! s$ u7 g" W4 @% B # ssh -p22 root@192.168.1.1208 j! T2 B2 H: `
-p指定ssh的端口号,如果是默认端口22,就可以不用指定7 o7 D# R2 ~' H1 u3 A, T
9 w e( u) N2 Q) E7 |$ s w" e2) 基于密钥的认证
& Y% v2 t$ z) _& t- Q3 P 不需要用户输入密码1 ~5 [; q, N4 u5 I3 D0 r$ o% U
! x2 `0 y, J e' B
SSH服务的配置
5 D2 b- F* |* @. x3 Y# m5 |/etc/ssh/sshd_config$ m8 L" k% B+ k2 S4 w6 j
--------------------------------' Q; N8 v) `/ c( g
Port 50000 #默认是22, 如果修改为其他端口,应该在防火墙中添加该端口9 N) n, \ m. j9 P
PermitRootLogin no #禁止以root用户登录,更安全
2 B4 X K; d) H( D( f5 PPermitEmptyPasswords no #禁止以空密码登录; V3 t; l9 |) m; d+ V1 V# M
UseDNS no #不使用DNS解析,可以加快速度
( ] W1 e: a6 k% v. @) NGSSAPIAuthentication no #可以加快速度
7 F6 q! d# x0 y( y! t; q. L C# ^, Z2 @1 z0 Y: q
; u9 z( i, t& w补充:
9 Y1 R. [. ~ k, c: s6 Q端口扫描
1 D! @0 O% A* J/ z4 s- r. K: j# nmap 192.168.1.120 -p220 \% ] ?: y5 I! E' ]% ?, @
查询192.168.1.120的22端口是否在使用2 E8 y) g. t5 ]: L
9 H4 Z5 r7 C( w# nmap 192.168.1.120 -p1-65535$ i; y$ ]5 ?: c* e/ _
查询192.168.1.120的所有端口中正在使用的端口' h" R1 n9 Z6 f, e' h
1 a2 s3 _3 @- N, N$ ~7 x( K
SSH客户端的使用1 q7 p6 T+ |) k3 X% q+ U
1. 远程登录' p, i5 C4 @) K3 `6 r. G( r. Y
# ssh -p22 root@192.168.1.120 B- f; S1 x9 A* P. h& S( H
如果使用的是默认端口,-p选项可以省略。
9 ?/ D0 a; @3 E
& @# w5 j' k2 s# Q: r; m 补充:logout
5 D: o. p* V k$ H% f
" [) f2 @! }! G: p* _* n! E2. 直接执行命令
" c- {; e- F; | # ssh -p22 root@192.168.1.120 /sbin/ifconfig eth00 Q6 G& {# L& T
相当与,在192.168.1.120主机中,以root用户的权限,执行指定命令/ ]' x+ D; D" x5 o* {: J2 E9 U
命令执行完之后,自动回到客户端
# l6 M( D* v$ N
5 |) N1 j! u* V3 m# } 最后接的命令必须使用绝对路径,环境变量在此时无效。
; O% Q! E( b6 \( n ! W7 B1 a+ A# O, {- I
3. 远程拷贝(不加密)
# H" x! P! Q6 w 推(client -> server, 就是上传)2 Y' T0 X3 }& F4 O! W
# scp -P500001 t5 O2 y. d7 L; F
scp -P50000 day11.txt liubei@192.168.1.120:~+ A0 [& _: _4 M& }/ A% |
注意使用scp时,-P为大写字母。
& |* U3 t7 T5 w" w + ^: d' c9 M4 s' z
拉(server -> client, 就是下载). t; M( t" \) p7 `: c% T
命令格式和上传类似,只是,参数的顺序变了。
3 L9 e& y/ _+ \$ }! M # scp -P50000 liubei@192.168.1.120:/etc/hosts /tmp/ x7 n+ h, p$ J# r' L& }
: v4 p$ U( y9 S" S! _- f 拷目录,使用 -r
, j, X8 B" U$ ~) w) R( L- O 其他选项:
" w& D' x- a" w" |1 [0 Y( s5 w -l (限制速度)
& t j' B3 k) w. j/ u" a2 ~ -l 100k5 l1 g$ p; H$ F9 T6 t; l! O
3 I! t Q3 t& s. n+ c. y( e
注意:ssh是全量拷贝,效率不高。
- y G G- m( q( z# v/ d 补充(rsync是增量拷贝,效率更高)
! Q' J5 v# U) E; ~& g( J
6 q5 y y5 _" I2 q& \) s, m4. sftp
9 Z) W1 ?. n! H6 p9 M! L2 n 加密传输
6 Z: A8 Q, u2 W
, n0 N% M% e0 \ # sftp -oPort=50000 liubei@192.168.1.120
2 a! C8 x5 U1 i$ x! j0 M7 {) j sftp>* e( u3 b% j6 ]3 ^% J: J
( [4 j. p6 y. ]+ R" \ I
下载:1 u5 _6 w. u8 J% R
sftp> get test.txt /tmp4 h+ W. k3 `7 d. R" `1 i9 J
7 x S) d: ^8 C' \ ~7 |- p! L+ k 上传+ K$ W; m9 I$ B, z( n1 {5 e
sftp> put abc.txt
" n# h( e; ?8 }, s8 ^) R: ~3 T1 i 把本地当前目录下的abc.txt上传到服务器的liubei的家目录中/ H b% t& v. [: k
% ~* J/ x! [( h7 t* T9 l
sftp> put abc.txt /tmp e/ Q* p" x+ z- A8 Z2 @5 u- |7 C# V
把本地当前目录下的abc.txt上传到服务器的liubei的/tmp目录中
, M( v- N$ l# k. [, S; \ # Y6 C: }5 H( f$ o* H
sftp> mkdir dir
) ?* \+ A; R) p 在服务器的liubei的家目录下,创建目录dir9 h2 @7 }4 k) r, L$ Z/ G/ n' t
即,可以执行mkdir9 m$ p' H6 c y
! _5 q/ J6 ~" F$ }& K
补充:退出! b2 l" k1 Y$ z0 K3 ]9 J/ J! w
sftp> exit
4 C* [1 }$ V; w! T
8 W( {' T' h! @8 W6 a8 h5. 使用密钥来认证
# A# g, Q: S) }7 [. }+ \ 案例:/ s9 n* ]4 p8 c: j" c0 P
192.168.1.4 192.168.1.120% a/ d# ?6 X( N, a( s1 z
----- ----
, x4 D. x* |- x' v# B | A | ---------> | B |) y* k' u5 W* ^, M2 p1 x; H& n
------ ----5 f3 r, ]# f8 F2 {
|
$ p7 U, j ?7 g. V |) |+ @+ s; B9 E7 o! G
V2 h9 H O/ l6 L% V( R
-----
' ~7 a( a+ h1 [/ _/ |4 e | C | 192.168.1.121
4 b3 Q+ f0 |, h* Z -----% i2 d3 `5 d( ]5 _5 |' J( y& o5 e
/ z0 h8 b9 ?9 N0 A
有3台服务器A,B,C
$ R5 @( x0 X! c7 N9 A9 [5 A 需要每天早上3点,把A的数据文件 user.data 分发给B,和C
! y3 Q) v+ c' y9 P- M1 ^, { v+ I" E y0 U3 H h0 {
解决方案:使用crond定时任务和ssh的密钥认证0 [; f2 s. `, R4 M+ X7 _- j) t: p
% }' I! [- }" g, e: L" ^# ]9 k& R 实现步骤:
. @2 M5 x8 B" f 0)准备:3 @ c* {9 K2 {6 O4 U% K
准备3台主机,分别设置一下hostname为A,B,C$ x J2 H- U+ T' \' k7 @4 W8 P
并设置IP, 保证他们都在同1个网段。
3 m$ a& |# U* p% l9 ~
7 B% N" M3 y* E v- b! W 在B和C主机中,分别创建同1个普通用户(比如liubei)
6 {7 p K* b5 Y" O% v 不要使用root(不安全)* ^5 s$ `1 C8 ]% v4 O) K
* z8 k$ G5 `& u' S 1)生成密钥1 K7 m/ R$ k3 R* x# `( f* k* ~4 H
# ssh-keygen -t dsa # ?! x1 O2 w% A7 u8 r
就会自动生成一个公钥文件和私钥文件。
! F9 w7 q0 B( I) z7 k5 g ' R# E( m# p+ J' ^( A. P
-t 是指定加密算法,默认是rsa算法% u& C5 ]% X4 V
dsa算法:只能用于数字签名认证; _6 J+ h- O `. |, f" Q k5 K
rsa算法:即可用于数字签名认证,还可以用于加密。
1 C% x( u2 D9 d; q$ Y$ o5 q
" L$ [4 M4 x1 n: Q! U/ y 所创建的密钥文件,默认保存在 ~/.ssh/
# \% a0 {0 H4 m' C9 ^8 | 分别为 id_dsa 私钥
* ~* ]/ ^$ e0 [5 j id_dsa.pub 公钥( r3 I- d+ `/ l; S$ g
V& P+ Z& P! r% D; E1 } 2)把公钥传递给服务器B和C
1 p5 B2 y$ N9 T. U3 S; F6 s (1) 把公钥传递给服务器B
$ f5 j# k7 ]" C. S # ssh-copy-id -i ~/.ssh/id_dsa.pub "-p50000 liubei@192.168.1.120"" G- c) f8 D- J' O) u1 M9 S
把本地主机的~/.ssh/id_dsa.pub公钥文件, 通过ssh(端口号为50000)传递给+ g; U7 V6 Y5 j
IP为192.168.1.120主机(以liubei帐号传入)
4 N+ T+ o! n. Z3 X' p! O& d! W) q
7 E- P* Q; p' Z+ S 如果传输成功,公钥将保存在目标主机的家目录的 .ssh/authorized_keys 中
) z( R. Y5 k: R7 x 注意:ssh-copy-id其实是1个脚本文件
+ W% I; q5 M1 n# p7 H 9 o2 Z+ ] H. m: r; Y# k8 s$ E* k
(2) 把公钥传递给服务器c: y' k( }6 h9 @$ g3 D9 K$ p0 ` U
# ssh-copy-id -i ~/.ssh/id_dsa.pub "-p50000 liubei@192.168.1.121". M ^: U, g& D) ?6 b
# P% ?- R P" L" p1 o! M- V$ C% B
3) 使用密钥直接登录
% G* `: f" j" X0 h" `# @ ssh -p50000 liubei@192.168.1.120 8 h0 u2 Y* T7 a
- n) F8 X! s; M- d6 B 4)使用脚本文件实现分发数据+ i& I3 ?- P- H% B: `% N) Z+ H
# vim trans.sh
2 k* H- @& P3 u 5 o8 q5 q4 o) V7 z" C/ }
当有多个服务器时,可以使用shell编程中的for循环。
, |/ z/ ]5 t$ }% ?- L3 H+ w 例如:4 |6 @( r; o: g: n/ D
-----------------------5 s8 l$ ]% Y) J% Z
for n in 120 22
% z4 q; c# R/ S2 Q+ i4 W' x do
. K: [( J3 }! k scp -P50000 $1 liubei@192.168.1.$n:~8 e5 t! S6 @9 i0 i# ^9 g
done* p; z1 Y- w+ w0 G7 |6 E! B
---------------------
5 W% j1 }" |% S7 O- b/ K $1表示脚本文件的第1个参数,这里用来表示需要分发的文件。 |
|