风停之后再扬帆,船绝不会前行。 收藏本站
登陆 / 注册 搜索

阅读: 7.9K   回复: 5

一个路由器的自述

仗剑天涯论坛大牛 2017-7-5 23:45 |显示全部楼层

今生相逢便是缘分,何苦去怨恨,何苦去仇视。

主题破百
        我就是网卡TP-Link7954经常和大家提起的网关路由器,我在网络中的位置是这样的:- }! L2 p2 i: x0 @) Y
+ u2 F, @6 C6 H  e
一个路由器的自述 1-路由器.jpg

" r+ t' j) @: E. L: S2 k, u! ^; i/ t/ j+ s
        为啥叫网关呢?因为大家想上网,一定得经过我这一关#j330:7 S& D  M$ E$ O# m1 Z+ H
  v2 k6 W# O9 v& U7 G
        这不是开玩笑,确实是这样,所有的对局域网之外的访问那非得经过我不可。其实我直接和ISP(就是联通!)的网络相连,我从联通那里搞了一个外网的地址:61.52.247.112。, F9 O3 X$ X4 I. A" k: e% n% L5 S
8 X) g& N) @: q% s0 o
        可是只有这么一个地址,我们局域网内这么多电脑,如果轮流着让每个电脑去用,那大家可就抱怨死了。
+ C* K& F. }% W
% K6 }7 E3 r7 L        于是我巧妙的构思了一个网络世界,成功的欺骗了TP-Link7954这些网卡们。. Q- |& }7 M3 ?; C; _- U0 U3 c
       
9 I9 y$ b3 D0 l1 O6 K. }
NAT (网 络 地 址 转 换)

- o( Q6 E! |- K$ q6 Z0 w        ' @0 v; t4 |! [$ l, I
        还记得上次TP-Link7954向我要地址的事儿吗?因为我不仅仅是个路由器,还是一个DHCP服务器,掌握着这个局域网的IP生杀大权。/ u+ a! B1 m- Z9 P
/ r  s( ^- R7 G( q
        我给TP-Link7954分配的IP是192.168.1.2,但是他拿这个地址是无法直接上网的,因为这是属于我管辖的内网地址,别的网站像 www.guhei.net 根本都不知道!
' [( x; X2 {( p! s( I$ f; t& M- Q+ g
        即使知道了也没用,因为在这个世界上可能有无数的路由器都会分配192.168.xxx.xxx这样的地址,你到底要找哪一个?" M# D: p. W5 O6 H- B, ?

/ g' n0 m) m+ {4 S        所以TP-Link7954想上网必须得通过我,我需要施展一点点小魔法,比如说它想访问百度,通过交换机给我发来这么一个数据帧:
( J$ m0 H$ t) B) C6 \" k' i6 i
3 ?$ g- P7 f2 K
一个路由器的自述 2-路由器.png

5 ^! i: A* _1 k0 d, t
8 \$ |/ E" L2 k; D9 R        我把数据链路层的外衣去掉,发现IP数据包中的目标地址是115.239.211.112,我就知道这是要向外网发出请求了。于是我就把IP数据包中的源地址192.168.1.2替换成我从联通那里搞到的外网地址61.52.247.112。
. ^' m- K! {: d" m. c8 k+ e7 S* w# v; x& r* ?
        这还不够,我会创建一个新的端口号2001,把TCP数据包中的源端口也替换掉,数据包就变成了这个样子:) f% b& l. V$ @- A
5 G, i8 I/ S3 }2 K' R
一个路由器的自述 3-路由器.png

$ q7 z0 b. ^5 ~( }9 I% J: l/ M: c3 Y" m4 @. B5 `  f5 z9 k. y
        不知道你看出来其中的奥妙没有,我把源地址和源端口都替换了,其实我的目的就是让外部的网络认为这是我(路由器)发出的,他们根本不知道什么TP-Link7954这个网卡!
+ C, U, E% m) n2 d& B
* [! [1 q: N% B( z        然后我需要查一下我的路由表,确定到底转发到哪个输出端口去,再给这个IP数据报穿上数据链路层的外衣,把数据包发给了联通的网络,剩下的事我就不管了。5 S0 x' N: n2 y- Y

# }* N2 S6 V7 _' r4 b7 E4 u$ C: A" q2 C
一个路由器的自述 4-路由器.png

8 a) c( O6 c& g4 }3 B+ Y4 T$ e1 A
' l( t3 o" {% N4 U0 O/ P  d( o        注意看以太网帧的MAC地址,源地址已经是我了,而不是TP-Link7954了,因为这是我和联通网络之间的数据链路。这个替换源地址和源端口的小把戏就叫做网络地址转换,人类简称为NAT。
9 A1 _4 V0 [# A# U: `8 j. w+ k* E# Z& {8 P; w* _, ^( W
        当然不只是TP-Link7954通过我上网,还有很多别的电脑呢,我得把我的小把戏记下来,形成这么一张表:
/ ^" H* ~7 w; H( w" a* e7 C' G
4 K4 [* K2 o. y7 p# W7 k
一个路由器的自述 5-路由器.png
' P4 y+ A: r* _7 F1 a7 u

5 e! ?( ~$ F9 x$ u' o; c        过了不久,baidu网站的回复就会通过别的路由器转到我这里,正如你所想的,我需要反过来处理一遍:
3 R2 M0 W& O( w6 ]+ k       
  W% n- Q9 {/ [; n* ~0 C2 X        首先去掉数据链路层的外衣,发现TCP和IP数据报中包含这样的信息:
' {% O: T. L4 A       
7 |. o/ r0 [. i        目的地IP:61.52.247.112,端口2001/ r2 b: ]- s0 g, J" q) }1 X' P7 N, l
% r2 d7 Z/ y6 H' q* F  @
        这时候我就去查表,找到了192.168.1.2:3345,我就明白这是给TP-Link7954的信了。
% Z+ v) O8 C/ J( A3 n  y+ E. Y" n6 o  C1 s
        那就再次把数据报中的IP地址和端口号改了吧,让TP-Link7954认为这个数据包就是我给他的。就这样,我成功的用区区一个外网的IP就支持了局域网内多个电脑的上网需求,并且他们根本就不知道是怎么回事!# g  \" j% b' V0 f" w
/ S1 E' c1 r1 S3 @
NAT 穿 越

7 m! I, i) k; @7 A! t: P8 t% k  t2 J( s
        欺骗终究是不能长久的,我的麻烦很快就来了。TP-Link7954所在的机器为了下载一个大电影,安装了一个P2P软件:电驴。6 H' H0 T) J# T

; V& g9 Q; b; u        所谓的P2P就是Peer to Peer,即网络中的机器是对等的。
, U( L; g/ @& j& x+ I6 ^+ F
; n5 ~, L& C& U; i: }# N" {. a4 F        所有使用电驴的机器不仅仅是一个发起请求下载数据的客户端,他们同时也是一个能够接受请求,向外发送数据的服务器。
! {2 B9 S9 D4 z* e8 z6 T
4 |3 T" u# G/ S. m        这样一来,当下载大文件的时候,你就可以从很多安装了电驴的机器上分块下载,而不是仅仅从一个服务器上下载,速度快了很多。$ m" K7 ]# ~# F+ I; q7 C

1 |! |: Q3 ~2 L1 Z        人人为我,我为人人啊。#j344:2 c6 d& ?5 i( e8 d' ?2 W0 W
' R2 _" G; t3 n; n" L
        可是TP-Link7954很快就发现,当它试图做服务器的时候,其他电驴根本就连不上它,为什么?
' G0 L0 n1 i" \  E  d) i4 [7 @( J( A* h/ k! B
        因为IP地址是我分配的啊,是个内网地址192.168.1.2,外网的人根本就不知道,怎么连?TP-Link7954给我发了一封措辞严厉的信件,质问我为什么他没法作为一个服务器接受外边的连接,这强烈的阻碍了他们下载各种电影的需求。( X" B5 _& }# I# [9 M9 [
7 y: G) ~# ?; k8 V. y! I  g
        我估摸着是瞒不住了,只好把所有的网卡都召集起来,开个会大家商量一下。
! z. T/ w7 b1 x# |1 \* s, ~9 y+ [. \3 ?# a, i
        我解释说:“现在IP地址很稀缺,我用这种NAT的方法也是不得已而为之,要不然大家怎么上网啊,你们之前不是过的也挺好吗?我听说电驴会占用很大的流量,我们公司很快就会禁止的。”. Z6 J6 A) w* w2 u
0 k2 z0 d+ U+ ^; C+ f/ X, C
        D-Link3925说:"公司的政策根本不是你应该考虑的事,你考虑的是怎么才能让外网的电驴连上我们!"1 s3 s3 g! W7 U8 P
! M% c& R: ^: y3 I0 D3 Q" m
        可是我实在是没有办法,就这一个外网的IP地址啊。
: f8 Q, w: J2 y; I) j7 [- X) X; L1 ]* m& K
        TP-Link7954倒是很聪明, 他立刻就意识到了问题所在,想出了解决办法:“这样吧,路由器,你不是擅长搞玩小把戏吗,可以继续玩下去,但是得允许我们这些网卡参与进来玩,比如说我(ip地址192.168.1.2)会主动的要求你建立一个NAT映射(192.168.1.2:4096)<->(61.52.247.112:3001)。- m) q" q' C' h4 E% X) p2 H+ d
) B) j2 O6 u7 G0 }
        “你还可以保存在你的NAT表中,然后我就会对外通告了,我是一个电驴服务器,谁要是想连接我的话,请到这里来:61.52.247.112:3001,当外网的连接来的时候,你必须把连接请求转发到我这里来”。
4 {6 _. M- x* |( T+ @- `; H) W: c& f2 i9 |% e1 `( V& ^9 D
        大家一致认为这个方法很简单,很实用,就这么决定了。
) L5 T9 a  m/ J- E. P+ ~3 ]2 ]
: o/ _1 k. [5 M! ?        这其实就是UPnP,你打开你的无线路由器,就能看到:5 y( |8 b& L: c7 C3 E! ]3 u5 A, ?

0 u0 z5 l) Q# c9 ^
一个路由器的自述 QQ截图20170705233334.jpg
$ s+ t" y  k: ]; Y( w
: Q6 A; I, f) ?" c
        事情就这么解决了,生活又恢复了平静,当然,我作为一个路由器,这些NAT,UPnP都是我的附加功能,我最重要的事情还是建立路由表,做路由选择,转发IP数据包,下次再说吧。7 J. a, f* R: e3 \6 X
上一篇
下一篇

评分

参与人数 1成长值 +1 金币 +1 展开 理由
清风徐来 + 1 + 1 我很赞同!

查看全部评分


逆天技 「初入古黑」 2017-7-6 11:54 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

看不懂啊呜呜
我的世界是安定 「初入古黑」 2017-7-7 23:09 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

还有更多的分享吗?来自: iPhone客户端
清风霁月 「出类拔萃」 2017-10-3 23:15 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

LZ是天才,坚定完毕
安心的味道 「锋芒初露」 2018-1-21 12:23 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

无论是不是沙发都得回复下
映画 「出类拔萃」 2018-1-21 22:48 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

解释就系掩饰,掩饰等于无出色,无出色不如回家休息!!!
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

关于本站|大事记|小黑屋|古黑论 网站统计

GMT+8, 2021-4-12 06:31 , Processed in 0.037563 second(s), 25 queries , Redis On.

© 2015-2021 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表