欺骗世界,欺骗最初的你。 收藏本站
登陆 / 注册 搜索

阅读: 9K   回复: 5

一个路由器的自述

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

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

主题破百
        我就是网卡TP-Link7954经常和大家提起的网关路由器,我在网络中的位置是这样的:
+ w! W9 j2 E" c6 b& Q3 Z" q! Q' Q) T! V' P3 s" q! D2 c
一个路由器的自述 1-路由器.jpg

& j( r& T* t8 B) }
+ ?9 R5 C, S3 b$ I- [0 c2 d) V( b6 V        为啥叫网关呢?因为大家想上网,一定得经过我这一关#j330:
: T& K" O" b& F+ e- P- v7 A) J; p, Q/ G& x
        这不是开玩笑,确实是这样,所有的对局域网之外的访问那非得经过我不可。其实我直接和ISP(就是联通!)的网络相连,我从联通那里搞了一个外网的地址:61.52.247.112。% A5 l! |; N. M* m7 {, v- ^/ i  C

8 a5 t0 F: H& U9 t! q" d% {        可是只有这么一个地址,我们局域网内这么多电脑,如果轮流着让每个电脑去用,那大家可就抱怨死了。
' ^/ u4 h  n3 w( s+ P3 o$ ~
1 A/ [$ X/ n# I4 ]- n2 Y: ?2 X        于是我巧妙的构思了一个网络世界,成功的欺骗了TP-Link7954这些网卡们。
8 @3 w$ s5 u0 t1 d0 F' z        0 o+ Z3 ^0 \& a3 k
NAT (网 络 地 址 转 换)
, _2 n; i' X5 ?; [/ }  ~
       
9 F' n! P9 F+ n, \        还记得上次TP-Link7954向我要地址的事儿吗?因为我不仅仅是个路由器,还是一个DHCP服务器,掌握着这个局域网的IP生杀大权。
. u: [5 V/ X. U( E7 K3 A
6 L7 |* `4 Q" A5 [5 G        我给TP-Link7954分配的IP是192.168.1.2,但是他拿这个地址是无法直接上网的,因为这是属于我管辖的内网地址,别的网站像 www.guhei.net 根本都不知道!: a% }! H& k: }/ T& p# f7 r' {  f- S- z* H
1 R$ B+ R2 ~' W. ~, ]; i0 R
        即使知道了也没用,因为在这个世界上可能有无数的路由器都会分配192.168.xxx.xxx这样的地址,你到底要找哪一个?
/ O- b; R" [6 r0 c1 @, P! T. L) a$ k' u3 j( n* y9 m
        所以TP-Link7954想上网必须得通过我,我需要施展一点点小魔法,比如说它想访问百度,通过交换机给我发来这么一个数据帧:. O, m. C# F' _
9 z3 j$ A- B% P1 y8 n
一个路由器的自述 2-路由器.png
! g# y! T: Y- l6 C' T+ W5 V6 V

5 E; ?- A/ C1 w. @        我把数据链路层的外衣去掉,发现IP数据包中的目标地址是115.239.211.112,我就知道这是要向外网发出请求了。于是我就把IP数据包中的源地址192.168.1.2替换成我从联通那里搞到的外网地址61.52.247.112。; v; P1 M' g! C% j1 g. a
+ Q3 {$ {( Y! }, z- J* b* x
        这还不够,我会创建一个新的端口号2001,把TCP数据包中的源端口也替换掉,数据包就变成了这个样子:
/ ~7 @! \- s/ ^( j2 T/ R7 H" P$ |- B: d8 r4 ?
一个路由器的自述 3-路由器.png

) Z& L; v+ G4 P( n! J0 T  R
* Y8 k, E  Y" n  B& G        不知道你看出来其中的奥妙没有,我把源地址和源端口都替换了,其实我的目的就是让外部的网络认为这是我(路由器)发出的,他们根本不知道什么TP-Link7954这个网卡!2 t) g3 a- z7 R6 K6 O1 [1 ~! T7 q
. n+ R7 f" S# ^6 ?% N
        然后我需要查一下我的路由表,确定到底转发到哪个输出端口去,再给这个IP数据报穿上数据链路层的外衣,把数据包发给了联通的网络,剩下的事我就不管了。! u0 |* F9 a' O$ l% k8 U+ u) [

- F$ x9 ?% v" k) V$ E, L8 e3 s
一个路由器的自述 4-路由器.png
  V- q3 W( e0 h& C( w' Q) D

2 a; p6 m  g( Q  b0 ?6 H7 @        注意看以太网帧的MAC地址,源地址已经是我了,而不是TP-Link7954了,因为这是我和联通网络之间的数据链路。这个替换源地址和源端口的小把戏就叫做网络地址转换,人类简称为NAT。5 H% ?" ]/ E6 @! p! f6 N
/ x" {8 }4 K7 F: r; X# {' u' j* ~$ z
        当然不只是TP-Link7954通过我上网,还有很多别的电脑呢,我得把我的小把戏记下来,形成这么一张表:
( N) @+ a; j5 y3 i1 _7 q" o8 Z9 i$ V
1 K& e9 ]7 r5 [
一个路由器的自述 5-路由器.png
8 O9 l" u2 M$ J8 i1 g

$ N6 N5 K2 ?! j& Y* b        过了不久,baidu网站的回复就会通过别的路由器转到我这里,正如你所想的,我需要反过来处理一遍:
/ r4 R& D2 a& @: Y3 i5 }        4 \, `; `2 T- Z7 @, H- H8 D5 [: n
        首先去掉数据链路层的外衣,发现TCP和IP数据报中包含这样的信息:
. w/ Z) u! A$ z  m6 |. e2 Q0 p       
" N8 M4 \) A; a' f        目的地IP:61.52.247.112,端口2001; ]' }$ v, F4 P; d9 [
, O" y7 U; ^9 f6 k5 m
        这时候我就去查表,找到了192.168.1.2:3345,我就明白这是给TP-Link7954的信了。
) P* D& E4 m* I
1 _) q0 g6 ?, K+ k$ i        那就再次把数据报中的IP地址和端口号改了吧,让TP-Link7954认为这个数据包就是我给他的。就这样,我成功的用区区一个外网的IP就支持了局域网内多个电脑的上网需求,并且他们根本就不知道是怎么回事!
6 J% A- b" K: z0 o. f
" v8 M9 m( G- u5 M- j
NAT 穿 越
9 o* S- k/ ^9 B  C& N5 i* x0 V1 P( G
% Z  i  ^, }; ]0 C: w% [' ?
        欺骗终究是不能长久的,我的麻烦很快就来了。TP-Link7954所在的机器为了下载一个大电影,安装了一个P2P软件:电驴。
& I6 F8 r. I5 Z( J/ k0 T* e8 I# @* f3 F6 k6 E- _8 S$ i4 Q4 H( l
        所谓的P2P就是Peer to Peer,即网络中的机器是对等的。
; U% _8 M$ m+ X# @4 D3 k: a: A+ i
* O& U3 r) I, K: y3 r2 f        所有使用电驴的机器不仅仅是一个发起请求下载数据的客户端,他们同时也是一个能够接受请求,向外发送数据的服务器。" J' Y# _$ R: _. j- x5 }
  z; b) z# w# T; Y+ w( @
        这样一来,当下载大文件的时候,你就可以从很多安装了电驴的机器上分块下载,而不是仅仅从一个服务器上下载,速度快了很多。
9 a* N+ k8 e4 j( o4 @% J  @+ W
* l+ t, i5 I# G1 i. v1 ?! \7 n        人人为我,我为人人啊。#j344:
, b' ?( j/ e4 S2 `/ @% q0 G1 j' q
1 c; w: V, W1 A* Y2 b  Q$ W        可是TP-Link7954很快就发现,当它试图做服务器的时候,其他电驴根本就连不上它,为什么?
8 e% O8 n! @( ~+ y8 h
2 N' l+ Q: m- n* X/ d        因为IP地址是我分配的啊,是个内网地址192.168.1.2,外网的人根本就不知道,怎么连?TP-Link7954给我发了一封措辞严厉的信件,质问我为什么他没法作为一个服务器接受外边的连接,这强烈的阻碍了他们下载各种电影的需求。
( v9 T5 H. |) e" A6 ^4 P. h/ Q* P& d2 D, [
        我估摸着是瞒不住了,只好把所有的网卡都召集起来,开个会大家商量一下。3 s9 y3 n8 b9 H/ G' Y) x& J' T
5 |, d5 z( {! ]* @2 Q: f
        我解释说:“现在IP地址很稀缺,我用这种NAT的方法也是不得已而为之,要不然大家怎么上网啊,你们之前不是过的也挺好吗?我听说电驴会占用很大的流量,我们公司很快就会禁止的。”0 O+ J/ }, n% E" L* G

5 f. l1 p0 K; A* K1 O, C0 D        D-Link3925说:"公司的政策根本不是你应该考虑的事,你考虑的是怎么才能让外网的电驴连上我们!"
1 F& B  F1 M" L8 {' `  q
2 K+ R  f% F" s" n        可是我实在是没有办法,就这一个外网的IP地址啊。# t; q# x1 {$ v( x- D1 i3 w( h/ Z# a# Y
; m, p' p$ c# n) K" L; D; v. Q
        TP-Link7954倒是很聪明, 他立刻就意识到了问题所在,想出了解决办法:“这样吧,路由器,你不是擅长搞玩小把戏吗,可以继续玩下去,但是得允许我们这些网卡参与进来玩,比如说我(ip地址192.168.1.2)会主动的要求你建立一个NAT映射(192.168.1.2:4096)<->(61.52.247.112:3001)。# g3 P! i: j9 d# ~5 ?
4 r( M* ^% z; r* y
        “你还可以保存在你的NAT表中,然后我就会对外通告了,我是一个电驴服务器,谁要是想连接我的话,请到这里来:61.52.247.112:3001,当外网的连接来的时候,你必须把连接请求转发到我这里来”。1 X, l9 F9 h2 C2 y5 b. Y

* l% Q0 ~! P+ D4 y) r- B        大家一致认为这个方法很简单,很实用,就这么决定了。
9 {6 {9 Q# ?0 w+ b/ Q$ `
! L: F! d5 d# q        这其实就是UPnP,你打开你的无线路由器,就能看到:+ K( }- K8 v. @: M9 c; ]

+ H' ]1 u# I, ~/ @2 b
一个路由器的自述 QQ截图20170705233334.jpg

9 Z# s% Y% J/ w- [, X. {% \2 h
$ r1 m: V" o+ ?. w2 E+ O) S9 A        事情就这么解决了,生活又恢复了平静,当然,我作为一个路由器,这些NAT,UPnP都是我的附加功能,我最重要的事情还是建立路由表,做路由选择,转发IP数据包,下次再说吧。
8 J& k. F, ^6 i3 e$ [
上一篇
下一篇

评分

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

查看全部评分


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

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

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

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

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

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

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

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

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

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

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

本版积分规则

快速回复 返回列表